J'ai construit mes propres emacs parce que je veux résoudre certains problèmes et obtenir les correctifs de bogues en amont. Cependant, Ubuntu continue de supprimer automatiquement mes propres emacs construits et je dois continuer à le reconstruire et à le réinstaller.
Voici ma sortie de apt-cache policy emacs
quand je suis allé me coucher hier soir:
~/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
Le 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 package est-il versionné à 46 au lieu de 24 ou 25? 26 est la version emacs la plus élevée actuellement disponible.
Je peux voir qu'il s'agit d'un méta-package: https://packages.debian.org/source/jessie/emacs-defaults
Pourquoi Ubuntu met-il à jour le logiciel sans demander?
Question principale: que dois-je faire - attribuer un numéro supérieur à 46 à ma version de package juste pour la faire coller?
Cela semble être un horrible hack, ou c'est peut-être ainsi que cela devrait fonctionner?
la source
Réponses:
Il y a beaucoup de problèmes et de questions ici, donc je serai bref mais essayez de les couvrir tous.
emacs
est juste un méta-package qui pointe vers la dernière version d'emacs...
Ubuntu (actuellementemacs24
). Le "46.1" n'est qu'une version de package, délibérément élevée pour déplacer les anciens packages emacs. Voirapt show emacs
pour un peu plus d'informations.Vous remplacez ce
emacs
package par un package avec un numéro de version inférieur. Ubuntu priorise la version du package installée par numéro de version. Le plus élevé sera celui qui sera installé (lors de l'installation ou de la mise à niveau), donc le vôtre est constamment guzzumped.Vous pouvez le voir dans la
apt-cache policy emacs
sortie. Le candidat est la version supérieure.Vous pouvez contourner les priorités avec l'épinglage ou le fudging de votre numéro de version (quelque chose de supérieur à 46.1) mais cela ignore plutôt le problème (et peut laisser un
emacs24
package en place).Votre meilleure option consiste à supprimer le
emacs
package et à simplement créer et installer un packageemacs25
or à laemacs26
place. Vous pouvez également créer un méta-package emacs qui dépend de votre package de version au nom, mais ce n'est qu'une vanité. Je ne ferais cela que si vous envisagez de distribuer.Concernant Ubuntu faisant des choses sans "sans demander", vérifiez si les mises à jour automatiques sont activées. Obtenir la dernière version disponible est le comportement par défaut, donc je pense que c'est plus un cas de "ne pas comprendre ce que fait Ubuntu" plutôt qu'un fantôme dans la machine, ou pire.
Et en ce qui concerne «pourquoi la version 24, pas 25 ou 26?», Ubuntu et Debian en dessous visent tous deux des versions logicielles stables et testées. 26 est toujours en développement et 25 n'est sorti qu'en septembre 2016.
De plus, Ubuntu n'est pas une version roulante, donc les versions d'Ubuntu avec 24 resteront sur la version 24 pour la durée de vie de ces versions d'Ubuntu (sauf si quelque chose de vraiment fou se produit). Les correctifs de sécurité seront rétroportés et appliqués si nécessaire, mais ce sera toujours 24.
la source
Pourquoi Ubuntu met-il à jour le logiciel sans 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 sur liste noire le package "emacs-defaults" dans Edition> Préférences> Packages sur liste noire (packages AKA ignorés).
la source
Pour donner suite à la réponse de @ Oli, voici comment procéder:
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
fichier qui en résulte avec nano (puisque vous n'avez pas encore emacs;) -$ nano control
et changezPackage: emacs
enPackage: emacs25
(ou 26, 27 etc)$ mkdir DEBIAN
et copiez-y le fichier de contrôle:$ cp control DEBIAN/
$ cd ..
) et exécutez$ dpkg --build emacs-rename
. Cela peut prendre quelques instants.$ sudo dpkg -i emacs-rename.pkg
la source