いくつかの問題を修正し、アップストリームでバグ修正を取得したいので、私は独自の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より大きい番号を割り当てて、それを固定しますか?
それは恐ろしいハックのように見えますか、それともそれがどのように機能するはずですか?
ここには多くの問題と質問がありますので、簡単に説明しますが、すべてをカバーするようにします。
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のままです。
@Oliの回答をフォローアップすると、次のようになります。
emacsパッケージを削除し、代わりにemacs25またはemacs26パッケージをビルドしてインストールするだけです。
emacs_25.1-1_AMD64.deb
という名前でした$ mkdir emacs-rename
$ ar -x emacs_25.1-1_AMD64.deb emacs-rename/
$ cd emacs-rename
$ tar -xzf control.tar.gz
および$ tar -xf data.tar.xz
control
ファイルを編集します(まだemacsがないので;)-$ nano control
を変更してPackage: emacs
をPackage: emacs25
(または26、27など)に変更$ mkdir DEBIAN
内にDEBIANディレクトリを作成し、そこに制御ファイルをコピーします:$ cp control DEBIAN/
$ cd ..
)に戻り、$ dpkg --build emacs-rename
を実行します。これには少し時間がかかる場合があります。$ Sudo dpkg -i emacs-rename.pkg
でインストールしますEmacs-rename.debの解凍準備...
emacs25(25.1-1)の開梱...
emacs25(25.1-1)のセットアップ...
なぜUbuntuは尋ねずにソフトウェアを更新するのですか?
これは、Update Manager([編集]メニュー)の更新ポリシーによるものと思われます。安定性とセキュリティを最適化する中間オプションをお勧めします。最後のオプションは「常にすべてを更新する」-これは望ましくありません。
また、[編集]> [設定]> [ブラックリストに登録されたパッケージ(別名無視パッケージ)]でパッケージ「emacs-defaults」をブラックリストに登録することもできます。