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


11

私は自分のemacsを構築してきました。それは、その中でいくつかの問題を修正し、バグ修正をアップストリームで取得したいからです。しかし、Ubuntuは自分でビルドしたemacsを自動的に削除し続けるので、再構築して再インストールする必要があります。

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より大きい番号を割り当てますか?

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


2
変更ログから:「既存のemacsバイナリパッケージよりも高い初期バージョンを設定してください。」
muru

これは私を悲しくします。:/
アーロンホール

回答:


15

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

  • emacsemacs...Ubuntuの最新バージョン(現在はemacs24)を指すメタパッケージです。"46.1"は単なるパッケージバージョンで、故意に古いemacsパッケージに取って代わるものです。詳細についてapt show emacsは、を参照してください。

  • そのemacsパッケージをバージョン番号の小さいパッケージで上書きしています。Ubuntuは、インストールされているパッケージバージョンをバージョン番号で優先します。最も高いのはインストールされるもの(インストールまたはアップグレード時)であるため、あなたは常に混乱しています。

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

  • バージョン番号(46.1よりも大きいもの)を固定または回避することで優先順位を回避できますが、それでも問題は無視されます(emacs24パッケージが残ったままになる可能性があります)。

  • 最善の方法は、emacsパッケージを削除して、代わりにemacs25または emacs26パッケージをビルドしてインストールすることです。あなたは可能性も、あなたのバージョンでは、名前のパッケージに依存Emacsのメタパッケージをビルドするが、それはただの虚栄心です。配布を計画しているのでなければ、私はそれをしません。

  • Ubuntuが「確認なし」で作業を行わないようにするには、自動更新がオンになっているかどうかを確認します。利用可能な最新のものを取得することがデフォルトの動作なので、これはマシンのゴーストというよりは「Ubuntuの機能を理解していない」、またはもっと悪い場合のほうが多いと思います。

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

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


「なぜバージョン24なのか」と尋ねたことはありません(その答えは明白だと思います)私の言葉は「なぜこのバージョンなのか」は46を指していますが、前の質問よりも冗長で不明確だったので、削除しました。とにかく、checkinstallの引数でemacs26に名前を変更しました-おそらく解決策を後で投稿します。一を足す。そしてありがとう
アーロンホール

@Oli(+1)あなたの最後の点に関して、OSに付属しているバージョンを超えてEmacsをアップグレードしないことについての良い議論はありますか?既知の安定性の問題やその他の問題はありますか?私はUbuntu 16.04 LTSに取り組んでおり、バージョンEmacs 25.1に移行したいと考えています。
n1k31t4 2017年

99の方が適切なバージョン番号でした。
するThorbjörnRavnアンデルセン

0

Ubuntuが質問なしにソフトウェアを更新するのはなぜですか?

これは、Update Manager([編集]メニュー)の更新ポリシーが原因である可能性があります。真ん中のオプション、安定性とセキュリティを最適化することをお勧めします。最後のオプションは「常にすべてを更新する」-あなたが望まないものです。

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


0

@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. control結果のファイルをnanoで編集します(emacsがまだないため、;)- (または26、27など)に$ nano control変更Package: emacsします。Package: emacs25
  7. emacs-rename:内にDEBIANディレクトリを作成し、$ mkdir 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)の
    セットアップ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.