web-dev-qa-db-ja.com

このEmacsパッケージのバージョンが46.1になっているのはなぜですか? 26は今日の最高のメジャーバージョンです

いくつかの問題を修正し、アップストリームでバグ修正を取得したいので、私は独自のemacsを構築しています。ただし、Ubuntuは自分で作成したemacを自動的に削除し続けるため、再構築と再インストールを続けなければなりません。

昨夜寝たときのapt-cache policy emacsの出力は次のとおりです。

~/emacs$ Sudo apt-cache policy emacs
emacs:
  Installed: 26.0.50.aaron-1
  Candidate: 46.1
  Version table:
     46.1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main AMD64 Packages
        500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
 *** 26.0.50.aaron-1 100
        100 /var/lib/dpkg/status

ここに目を覚ます時があります:

~/emacs$ Sudo apt-cache policy emacs
[Sudo] password for excelsiora:
emacs:
  Installed: 46.1
  Candidate: 46.1
  Version table:
 *** 46.1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main AMD64 Packages
        500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

このパッケージのバージョンが24または25ではなく46になるのはなぜですか? 26は現在入手可能な最高の主要なemacsバージョンです。

これはメタパッケージであることがわかります: https://packages.debian.org/source/jessie/emacs-defaults

Ubuntuが尋ねずにソフトウェアを更新するのはなぜですか?

主な質問:どうすればいいですか-パッケージバージョンに46より大きい番号を割り当てて、それを固定しますか?

それは恐ろしいハックのように見えますか、それともそれがどのように機能するはずですか?

10
Aaron Hall

ここには多くの問題と質問がありますので、簡単に説明しますが、すべてをカバーするようにします。

  • emacsは、Ubuntuのemacs...の最新バージョン(現在はemacs24)を指すメタパッケージです。 「46.1」は単なるパッケージバージョンであり、古いemacsパッケージを置き換えるために意図的に高くなっています。詳細については、apt show emacsを参照してください。

  • emacsパッケージをより低いバージョン番号のパッケージでオーバーライドしています。 Ubuntuは、バージョン番号によってインストールされるパッケージバージョンを優先します。最高のものは(インストールまたはアップグレードするときに)インストールされるものなので、あなたのものは絶えず熱狂しています。

    これはapt-cache policy emacs出力で確認できます。候補は上位バージョンです。

  • 固定やバージョン番号の変更(46.1よりも高い)を行うことで優先順位を回避できますが、それでは問題を無視します(emacs24パッケージをそのままにしておくことができます)。

  • 最良のオプションはemacsパッケージを削除し、代わりにemacs25またはemacs26パッケージをビルドしてインストールすることです。あなたcould また、name-in-nameパッケージに依存するemacsメタパッケージを構築しますが、それは単なるバニティです。あなたが配布を計画していない限り、私はそれをしません。

  • Ubuntuが「確認せずに」作業を行う場合、自動更新が有効になっているかどうかを確認してください。最新の情報を入手するのがデフォルトの動作なので、これはマシンのゴーストではなく「悪い」よりも「Ubuntuの動作を理解していない」場合のほうが多いと思います。

  • 「なぜバージョン24ではなく25なのか?」については、その下のUbuntuとDebianはどちらも安定したテスト済みのソフトウェアバージョンを目指しています。 26はまだ開発中で、25は2016年9月まで出ていませんでした。

    さらに、Ubuntuはローリングリリースではないため、24のUbuntuのバージョンは、Ubuntuリリースの存続期間中バージョン24のままになります(本当に異常なことが起こらない限り)。セキュリティパッチはバックポートされ、必要に応じて適用されますが、24のままです。

15
Oli

@Oliの回答をフォローアップすると、次のようになります。

emacsパッケージを削除し、代わりにemacs25またはemacs26パッケージをビルドしてインストールするだけです。

  1. Emacs.debファイルを見つけます。私にとっては、emacsのソースルートフォルダにあり、emacs_25.1-1_AMD64.debという名前でした
  2. 作成する新しいdebianパッケージを保持するディレクトリを作成します:$ mkdir emacs-rename
  3. Debianパッケージをディレクトリにアーカイブ解除します:$ ar -x emacs_25.1-1_AMD64.deb emacs-rename/
  4. Emacs-renameディレクトリに移動します:$ cd emacs-rename
  5. Control.tar.gzおよびdata.tar.xzをさらに抽出します:$ tar -xzf control.tar.gzおよび$ tar -xf data.tar.xz
  6. Nanoで生成されるcontrolファイルを編集します(まだemacsがないので;)-$ nano controlを変更してPackage: emacsPackage: emacs25(または26、27など)に変更
  7. Emacs-rename:$ mkdir DEBIAN内にDEBIANディレクトリを作成し、そこに制御ファイルをコピーします:$ cp control DEBIAN/
  8. ディレクトリを上に移動して、emacsソースルート($ cd ..)に戻り、$ dpkg --build emacs-renameを実行します。これには少し時間がかかる場合があります。
  9. これで、emacs-rename.debパッケージが作成されました。それが適切なdebianパッケージの命名構造に従っていないことを心配しないでください、それはあなたの使用のためだけです。 $ Sudo dpkg -i emacs-rename.pkgでインストールします
  10. すべてがうまくいけば、次のように表示されます:

    Emacs-rename.debの解凍準備...
    emacs25(25.1-1)の開梱...
    emacs25(25.1-1)のセットアップ...

0
audiodude

なぜUbuntuは尋ねずにソフトウェアを更新するのですか?

これは、Update Manager([編集]メニュー)の更新ポリシーによるものと思われます。安定性とセキュリティを最適化する中間オプションをお勧めします。最後のオプションは「常にすべてを更新する」-これは望ましくありません。

また、[編集]> [設定]> [ブラックリストに登録されたパッケージ(別名無視パッケージ)]でパッケージ「emacs-defaults」をブラックリストに登録することもできます。

0