it-swarm.com.de

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

Ich habe meinen eigenen Emac gebaut, weil ich einige Probleme darin beheben und die Fehlerbehebungen stromaufwärts erhalten möchte. Ubuntu entfernt jedoch weiterhin automatisch meine eigenen Emacs und ich muss sie immer wieder neu erstellen und neu installieren.

Hier ist meine Ausgabe von 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 mit 46 anstatt mit 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 Software, ohne zu fragen?

Hauptfrage: Was soll ich tun - meiner Paketversion eine höhere Nummer als 46 zuweisen, damit sie haftet?

Das scheint ein schrecklicher Hack zu sein, oder soll es so funktionieren?

10
Aaron Hall

Es gibt hier 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 von emacs... in Ubuntu verweist (derzeit emacs24). Die "46.1" ist nur eine Paketversion, die bewusst hoch ist, um ältere Emacs-Pakete zu verdrängen. Siehe apt show emacs für weitere Informationen.

  • Sie überschreiben das emacs -Paket mit einem Paket mit einer niedrigeren Versionsnummer. Ubuntu priorisiert die installierte Paketversion nach Versionsnummer. Das Höchste ist dasjenige, das installiert wird (bei der Installation oder beim Upgrade), daher ist Ihr ständig überfordert.

    Sie können dies in der Ausgabe von apt-cache policy emacs sehen. Der Kandidat ist die höhere Version.

  • Sie können Prioritäten umgehen, indem Sie die Versionsnummer fixieren oder verfälschen (etwas höher als 46.1). Dies ignoriert das Problem jedoch eher (und lässt möglicherweise ein emacs24 -Paket an Ort und Stelle).

  • Ihre beste Option ist das Entfernen des Pakets emacs und nur das Erstellen und Installieren eines Pakets emacs25 oder emacs26. Sie könnten Erstellen Sie auch ein Emacs-Metapaket, das von Ihrem Paket mit der Version im Namen abhängt, aber das ist nur eine Kleinigkeit. Ich würde das nicht tun, wenn Sie nicht vorhaben zu verteilen.

  • Überprüfen Sie, ob automatische Updates für Ubuntu aktiviert sind, wenn Sie Dinge tun, ohne "ohne zu fragen". Es ist das Standardverhalten, die neueste Version zur Verfügung zu haben, und 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, streben Ubuntu und Debian darunter stabile, getestete Softwareversionen an. 26 ist noch in der Entwicklung und 25 ist erst im September 2016 erschienen.

    Außerdem ist Ubuntu kein rollendes Release, sodass Versionen von Ubuntu mit 24 für die Dauer dieser Ubuntu-Releases auf Version 24 bleiben (es sei denn, es passiert etwas wirklich Verrücktes). Sicherheitspatches werden zurückportiert und bei Bedarf angewendet, aber es sind immer noch 24.

15
Oli

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

entfernen Sie das emacs-Paket und erstellen und installieren Sie stattdessen ein emacs25- oder emacs26-Paket.

  1. Suchen Sie Ihre emacs.deb-Datei. Für mich war es in meinem Emacs-Quellstammordner und hieß emacs_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. Archivieren Sie das Debian-Paket in das Verzeichnis: $ ar -x emacs_25.1-1_AMD64.deb emacs-rename/
  4. Gehe in das Emacs-Umbenennungsverzeichnis: $ cd emacs-rename
  5. Weitere Extrakte control.tar.gz und data.tar.xz: $ tar -xzf control.tar.gz und $ tar -xf data.tar.xz
  6. Bearbeiten Sie die control -Datei, die sich mit nano ergibt (da Sie noch keinen Emacs haben;) - $ nano control und ändern Sie Package: emacs in Package: emacs25 (oder 26, 27 usw.)
  7. Erstellen Sie ein DEBIAN-Verzeichnis in emacs-rename: $ mkdir DEBIAN und kopieren Sie die Steuerdatei dorthin: $ cp control DEBIAN/
  8. Gehen Sie in ein Verzeichnis zurück zum Emacs-Quellstamm ($ cd ..) und führen Sie $ dpkg --build emacs-rename aus. Dies kann einige Augenblicke 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. Installiere es mit $ Sudo dpkg -i emacs-rename.pkg
  10. Wenn alles geklappt hat, sollten Sie sehen:

    Emacs-rename.deb wird entpackt ...
    Auspacken von emacs25 (25.1-1) ...
    Einrichten von emacs25 (25.1-1) ...

0
audiodude

Warum aktualisiert Ubuntu Software, ohne zu fragen?

Ich denke, dies könnte an Ihrer Update-Richtlinie im Update Manager (Menü Bearbeiten) liegen. Ich empfehle die mittlere Option: Optimieren Sie Stabilität und Sicherheit. Die letzte Option wird "Immer alles aktualisieren" - was Sie nicht wollen.

Sie können das Paket "emacs-defaults" auch unter "Bearbeiten"> "Voreinstellungen"> "Pakete auf die schwarze Liste setzen" (von AKA ignorierte Pakete).

0