Ich habe meine eigenen Emacs erstellt, weil ich einige Probleme darin beheben und die Fehlerbehebungen vorab beheben möchte. Ubuntu entfernt jedoch automatisch meine eigenen Emacs und ich muss sie immer wieder neu erstellen und installieren.
Hier ist meine Ausgabe, apt-cache policy emacs
als ich letzte Nacht ins Bett ging:
~/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
Hier ist es, wenn ich aufwache:
~/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
Warum wird dieses Paket auf 46 anstatt auf 24 oder 25 versioniert? 26 ist die derzeit höchste Emacs-Version, die Sie bekommen können.
Ich kann sehen, dass dies ein Metapaket ist: https://packages.debian.org/source/jessie/emacs-defaults
Warum aktualisiert Ubuntu die Software ohne zu fragen?
Hauptfrage: Was soll ich tun - meiner Paketversion eine Nummer höher als 46 zuweisen, damit sie haftet?
Das scheint ein schrecklicher Hack zu sein, oder vielleicht soll es so funktionieren?
quelle
Antworten:
Hier gibt es viele Probleme und Fragen, daher werde ich mich kurz fassen, aber versuchen, sie alle zu behandeln.
emacs
ist nur ein Metapaket, das auf die neueste Version vonemacs...
Ubuntu (derzeitemacs24
) verweist . Die "46.1" ist nur eine Paketversion, die absichtlich hoch ist, um ältere Emacs-Pakete zu ersetzen. Sehen Sieapt show emacs
für ein bisschen mehr Info.Sie überschreiben dieses
emacs
Paket mit einem Paket mit niedrigerer Versionsnummer. Ubuntu priorisiert die installierte Paketversion nach Versionsnummer. Die höchste wird diejenige sein, die installiert wird (bei der Installation oder Aktualisierung), daher wird Ihre ständig verschlungen.Sie können dies in der
apt-cache policy emacs
Ausgabe sehen. Der Kandidat ist die höhere Version.Sie können Prioritäten umgehen, indem Sie Ihre Versionsnummer fixieren oder verfälschen (etwas höher als 46.1), aber das ignoriert das Problem eher (und lässt möglicherweise ein
emacs24
Paket an Ort und Stelle).Am besten entfernen Sie das
emacs
Paket und erstellen und installieren stattdessen einemacs25
oderemacs26
-Paket. Sie könnten auch ein Emacs-Metapaket erstellen, das von Ihrem Paket mit der Version im Namen abhängt, aber das ist nur eine Eitelkeit. Ich würde das nicht tun, wenn Sie nicht vorhaben, es zu verteilen.Wenn Ubuntu Dinge ohne "ohne zu fragen" tut, überprüfen Sie, ob automatische Updates aktiviert sind. Es ist das Standardverhalten, das Neueste zur Verfügung zu stellen. Ich denke, dies ist eher ein Fall, in dem "nicht verstanden wird, was Ubuntu tut", als ein Geist in der Maschine oder noch schlimmer.
Und was "Warum Version 24, nicht 25 oder 26?" Betrifft, so streben Ubuntu und Debian darunter stabile, getestete Softwareversionen an. 26 befindet sich noch in der Entwicklung und 25 kam erst im September 2016 heraus.
Außerdem ist Ubuntu kein Rolling-Release, sodass Versionen von Ubuntu mit 24 für die Lebensdauer dieser Ubuntu-Releases auf Version 24 bleiben (es sei denn, es passiert etwas wirklich Verrücktes). Sicherheitspatches werden zurückportiert und bei Bedarf angewendet, es sind jedoch immer noch 24.
quelle
Warum aktualisiert Ubuntu die Software ohne zu fragen?
Ich denke, dies könnte an Ihrer Update-Richtlinie im Update Manager (Menü Bearbeiten) liegen. Ich empfehle die mittlere Option: Stabilität und Sicherheit optimieren. Die letzte Option ist "Immer alles aktualisieren" - was Sie nicht wollen.
Sie können das Paket "emacs-defaults" auch unter "Bearbeiten"> "Einstellungen"> "Pakete auf der schwarzen Liste" (AKA-ignorierte Pakete) auf die schwarze Liste setzen.
quelle
Nach der Antwort von @ Oli gehen Sie folgendermaßen vor:
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
und$ tar -xf data.tar.xz
control
resultierende Datei mit nano (da Sie noch keine Emacs haben;) -$ nano control
und wechseln SiePackage: emacs
zuPackage: emacs25
(oder 26, 27 usw.)$ mkdir DEBIAN
und kopieren Sie die Steuerdatei dort:$ cp control DEBIAN/
$ cd ..
) und führen Sie es aus$ dpkg --build emacs-rename
. Dies kann einige Momente dauern.$ sudo dpkg -i emacs-rename.pkg
quelle