J'ai construit mon propre emacs parce que je veux résoudre certains problèmes et obtenir les corrections de bogues en amont. Cependant, Ubuntu continue de supprimer automatiquement mes propres emacs et je dois continuer à les reconstruire et à les réinstaller.
Voici mon résultat de apt-cache policy emacs
quand je me suis couché la nuit dernière:
~/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
La voici quand je me réveille:
~/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
Pourquoi ce paquet est-il mis à la version 46 au lieu de 24 ou 25? 26 est actuellement la version majeure majeure d’Emacs que vous pouvez obtenir.
Je peux voir qu'il s'agit d'un méta-paquet: https://packages.debian.org/source/jessie/emacs-defaults
Pourquoi Ubuntu met-il à jour le logiciel sans demander?
Question principale: que dois-je faire - attribuer à la version de mon package un nombre supérieur à 46 simplement pour le conserver?
Cela ressemble à un bidouillage horrible, ou peut-être que c'est comme ça que ça fonctionne?
Il y a beaucoup de problèmes et de questions ici, alors je serai bref mais j'essaierai de les couvrir tous.
emacs
est juste un méta-paquet qui pointe vers la dernière version de emacs...
dans Ubuntu (actuellement emacs24
). Le "46.1" est juste une version de paquet, délibérément élevée pour déplacer les anciens paquets emacs. Voir apt show emacs
pour un peu plus d'informations.
Vous substituez ce package emacs
à un package avec un numéro de version inférieur. Ubuntu donne la priorité à la version du paquet installée par numéro de version. Le plus haut sera celui qui sera installé (lors de l’installation ou de la mise à niveau), le vôtre sera donc constamment éjecté.
Vous pouvez le voir dans la sortie apt-cache policy emacs
. Le candidat est la version supérieure.
Vous pouvez contourner les priorités en épinglant ou en falsifiant votre numéro de version (supérieur à 46.1), mais cela ignore plutôt le problème (et peut laisser un paquet emacs24
en place).
Votre meilleure option consiste à supprimer le paquet emacs
et à juste construire et installer un paquet emacs25
ou emacs26
à la place. Vous pourriez également créer un Le méta-paquet emacs qui dépend de votre paquet version-en-nom, mais ce n'est qu'une vanité. Je ne le ferais pas à moins que vous n'ayez prévu de le distribuer.
En ce qui concerne Ubuntu qui fait des choses sans "sans demander", vérifiez si les mises à jour automatiques sont activées. Le comportement par défaut est le dernier comportement à avoir. Je pense donc qu'il s'agit plus d'un cas de "ne pas comprendre ce que fait Ubuntu" plutôt que d'un fantôme dans la machine, ou pire.
Et pour ce qui est de "pourquoi la version 24, et non pas la version 25 ou 26?", Ubuntu et Debian se trouvent en dessous et visent des versions logicielles stables et testées. 26 sont encore en développement et 25 ne sont pas sortis avant septembre 2016.
De plus, Ubuntu n'étant pas une version mobile, les versions d'Ubuntu avec 24 resteront sur la version 24 pendant toute la durée de vie de ces versions d'Ubuntu (à moins que quelque chose de vraiment fou ne se produise). Les correctifs de sécurité seront rétroportés et appliqués si nécessaire, mais le nombre de correctifs sera toujours de 24.
Pour donner suite à la réponse de Oli, voici comment procéder:
enlever le paquet emacs et juste construire et installer un paquet emacs25 ou emacs26 à la place.
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
et $ tar -xf data.tar.xz
control
qui résulte avec nano (puisque vous n’avez pas encore emacs;) - $ nano control
et remplacez Package: emacs
par Package: emacs25
(ou 26, 27, etc.).$ mkdir DEBIAN
et copiez le fichier de contrôle à cet emplacement: $ cp control DEBIAN/
$ cd ..
) et exécutez $ dpkg --build emacs-rename
. Cela peut prendre quelques instants.$ Sudo dpkg -i emacs-rename.pkg
Préparer le déballage emacs-rename.deb ...
Déballer emacs25 (25.1-1) ...
Configuration d’emacs25 (25.1-1) ...
Pourquoi Ubuntu met-il à jour le logiciel sans rien demander?
Je pense que cela peut être dû à votre politique de mise à jour dans Update Manager (menu Edition). Je recommande l'option du milieu: Optimiser la stabilité et la sécurité. La dernière option sera "Toujours tout mettre à jour" - ce que vous ne voulez pas.
Vous pouvez également mettre le paquet "emacs-default" dans la liste noire dans Edition> Préférences> Paquets en liste noire (paquets AKA ignorés).