Warum ist dieses Emacs-Paket auf 46.1 versioniert? 26 ist heute die höchstmögliche Hauptversion

11

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 emacsals 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?

Aaron Hall
quelle
2
Aus dem Änderungsprotokoll : "Stellen Sie die ursprüngliche Version höher ein als jedes vorhandene Emacs-Binärpaket."
Muru
das macht mich traurig. : /
Aaron Hall

Antworten:

15

Hier gibt es viele Probleme und Fragen, daher werde ich mich kurz fassen, aber versuchen, sie alle zu behandeln.

  • emacsist nur ein Metapaket, das auf die neueste Version von emacs...Ubuntu (derzeit emacs24) verweist . Die "46.1" ist nur eine Paketversion, die absichtlich hoch ist, um ältere Emacs-Pakete zu ersetzen. Sehen Sie apt show emacsfür ein bisschen mehr Info.

  • Sie überschreiben dieses emacsPaket 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 emacsAusgabe 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 emacs24Paket an Ort und Stelle).

  • Am besten entfernen Sie das emacsPaket und erstellen und installieren stattdessen ein emacs25oder emacs26-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.

Oli
quelle
Ich habe nie gefragt, warum Version 24 (ich denke, die Antwort darauf ist offensichtlich). Meine Worte waren "Warum diese Version" und beziehen sich auf 46, aber da sie redundant und weniger klar als die vorherige Frage war, habe ich sie gelöscht. Wie auch immer, ich habe es in emacs26 umbenannt, um die Installation zu überprüfen - ich werde wahrscheinlich später eine Lösung veröffentlichen. Plus eins. Und danke
Aaron Hall
@Oli (+1) in Bezug auf Ihren letzten Punkt, gibt es ein gutes Argument dafür, Emacs nicht über die Version hinaus zu aktualisieren, die mit einem Betriebssystem geliefert wird? Gibt es bekannte Stabilitätsprobleme oder andere Probleme? Ich arbeite an Ubuntu 16.04 LTS und möchte auf Version Emacs 25.1 umsteigen.
n1k31t4
99 wäre eine bessere Versionsnummer gewesen.
Thorbjørn Ravn Andersen
0

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.

Christopher J Arm
quelle
0

Nach der Antwort von @ Oli gehen Sie folgendermaßen vor:

Entfernen des Emacs-Pakets und Erstellen und Installieren eines Emacs25- oder Emacs26-Pakets.

  1. Finden Sie Ihre emacs.deb-Datei. Für mich war es in meinem Emacs-Quellstammordner und wurde benanntemacs_25.1-1_amd64.deb
  2. Erstellen Sie ein Verzeichnis für das neue Debian-Paket, das Sie erstellen möchten: $ mkdir emacs-rename
  3. Deaktivieren Sie das Debian-Paket im Verzeichnis: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Gehen Sie in das Verzeichnis emacs-rename: $ cd emacs-rename
  5. Weitere Extrakte control.tar.gz und data.tar.xz: $ tar -xzf control.tar.gzund$ tar -xf data.tar.xz
  6. Bearbeiten Sie die controlresultierende Datei mit nano (da Sie noch keine Emacs haben;) - $ nano controlund wechseln Sie Package: emacszu Package: emacs25(oder 26, 27 usw.)
  7. Erstellen Sie ein DEBIAN-Verzeichnis innerhalb von emacs-rename: $ mkdir DEBIANund kopieren Sie die Steuerdatei dort:$ cp control DEBIAN/
  8. Gehen Sie in ein Verzeichnis zurück zum emacs-Quellverzeichnis root ( $ cd ..) und führen Sie es aus $ dpkg --build emacs-rename. Dies kann einige Momente dauern.
  9. Sie sollten jetzt ein emacs-rename.deb-Paket haben. Machen Sie sich keine Sorgen, dass es nicht der richtigen Namensstruktur für Debian-Pakete folgt, sondern nur für Sie. Installieren Sie es mit$ sudo dpkg -i emacs-rename.pkg
  10. Wenn alles funktioniert hat, sollten Sie sehen:

    Vorbereiten des Entpackens von emacs-rename.deb ...
    Entpacken von emacs25 (25.1-1) ...
    Einrichten von emacs25 (25.1-1) ...

Audiodude
quelle