Pourquoi ce paquet Emacs est-il mis à jour à la version 46.1? 26 est la version majeure la plus haute possible aujourd’hui

Je construis mon propre emacs parce que je veux résoudre certains problèmes et obtenir les corrections de bugs en amont. Cependant, Ubuntu continue de supprimer automatiquement mes propres emacs et je dois continuer à les reconstruire et à les réinstaller.

Voici le résultat de apt-cache policy emacs d’ 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 la plus importante d’emacs disponible.

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? Atsortingbuer à 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 doit fonctionner?

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 d’ emacs... sous Ubuntu (actuellement emacs24 ). Le “46.1” est juste une version de paquet, délibérément élevée pour déplacer les paquets emacs plus anciens. Voir apt show emacs pour un peu plus d’informations.

  • Vous substituez ce paquet emacs à un paquet 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 constamment éjecté.

    Vous pouvez le voir dans la sortie de la 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 est de supprimer le paquet emacs et de simplement construire et installer un emacs25 ou emacs26 . Vous pouvez également créer un méta-paquet emacs qui dépend de votre paquet version-en-nom, mais ce n’est qu’une vanité. Je ne ferais pas ça à moins que vous n’ayez prévu de dissortingbuer.

  • 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 de “ne pas comprendre ce que fait Ubuntu” 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 tous deux sous le nom de versions logicielles testées et stables. 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 restront sur la version 24 pendant toute la durée de vie de ces versions (à 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.

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 centrale: 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).

Pour donner suite à la réponse de Oli, voici comment procéder:

supprimer le paquet emacs et juste construire et installer un paquet emacs25 ou emacs26 à la place.

  1. Trouvez votre fichier emacs.deb. Pour moi, il se trouvait dans mon dossier racine source emacs et portait le nom emacs_25.1-1_amd64.deb
  2. Créez un répertoire pour contenir le nouveau paquet Debian que vous allez créer: $ mkdir emacs-rename
  3. Désarchivez le paquet Debian dans le répertoire: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Allez dans le répertoire emacs-rename: $ cd emacs-rename
  5. Extraire davantage control.tar.gz et data.tar.xz: $ tar -xzf control.tar.gz et $ tar -xf data.tar.xz
  6. Editez le fichier de control créé avec nano (car vous n’avez pas encore emacs;) – $ nano control et changez Package: emacs en Package: emacs25 (ou 26, 27, etc.)
  7. Créez un répertoire DEBIAN dans emacs-rename: $ mkdir DEBIAN et copiez le fichier $ cp control DEBIAN/ : $ cp control DEBIAN/
  8. Montez un répertoire, revenez à la racine source emacs ( $ cd .. ) et exécutez $ dpkg --build emacs-rename . Cela peut prendre quelques instants.
  9. Vous devriez maintenant avoir un paquet emacs-rename.deb. Ne vous inquiétez pas s’il ne suit pas la structure de nommage des paquets Debian appropriée, c’est juste pour votre usage. Installez-le avec $ sudo dpkg -i emacs-rename.pkg
  10. Si tout a fonctionné, vous devriez voir:

    Préparer le déballage emacs-rename.deb …
    Déballer emacs25 (25.1-1) …
    Mise en place d’emacs25 (25.1-1) …