He estado construyendo mis propios emacs porque quiero solucionar algunos problemas y solucionar los errores en sentido ascendente. Sin embargo, Ubuntu sigue eliminando automáticamente mis propios emacs construidos y tengo que seguir reconstruyéndolo y reinstalándolo.
Aquí está mi salida de apt-cache policy emacs
cuando me fui a la cama anoche:
~/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
Aquí es cuando me despierto:
~/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
¿Por qué se está versionando este paquete en 46 en lugar de 24 o 25? 26 es actualmente la versión principal más alta de emacs que puede obtener.
Puedo ver que este es un metapaquete: https://packages.debian.org/source/jessie/emacs-defaults
¿Por qué Ubuntu actualiza el software sin preguntar?
Pregunta principal: ¿Qué se supone que debo hacer? ¿Asignar a mi versión del paquete un número superior a 46 solo para que se quede?
Eso parece un truco horrible, o tal vez así es como se supone que debe funcionar.
fuente
Respuestas:
Aquí hay muchos problemas y preguntas, así que seré breve pero trataré de cubrirlos todos.
emacs
es solo un metapaquete que apunta a la última versión deemacs...
Ubuntu (actualmenteemacs24
). El "46.1" es solo una versión de paquete, deliberadamente alta para desplazar paquetes antiguos de emacs. Verapt show emacs
para un poco más de información.Está anulando ese
emacs
paquete con un paquete de número de versión inferior. Ubuntu prioriza la versión del paquete instalada por número de versión. El más alto será el que se instale (al instalar o actualizar), por lo tanto, el suyo está constantemente aturdido.Puedes ver esto en la
apt-cache policy emacs
salida. El candidato es la versión superior.Puede evitar las prioridades con la fijación o la falsificación de su número de versión (algo superior a 46.1), pero eso ignora el problema (y puede dejar un
emacs24
paquete en su lugar).Su mejor opción es eliminar el
emacs
paquete y simplemente construir e instalar un paqueteemacs25
o en suemacs26
lugar. También podría crear un metapaquete emacs que dependiera de su paquete de versión en nombre, pero eso es solo una vanidad. No haría eso a menos que estés planeando distribuir.Con respecto a Ubuntu haciendo cosas sin "sin preguntar", verifique si las actualizaciones automáticas están activadas. Obtener el último disponible es el comportamiento predeterminado, así que creo que se trata más de un caso de "no entender lo que hace Ubuntu" en lugar de un fantasma en la máquina, o peor.
Y en cuanto a "¿por qué la versión 24, no la 25 o la 26?", Ubuntu y Debian debajo de ella apuntan a versiones de software estables y probadas. 26 todavía está en desarrollo y 25 no salieron hasta septiembre de 2016.
Además, Ubuntu no es un lanzamiento continuo, por lo que las versiones de Ubuntu con 24 permanecerán en la versión 24 durante la vida útil de esos lanzamientos de Ubuntu (a menos que ocurra algo realmente loco). Los parches de seguridad serán respaldados y aplicados si es necesario, pero aún serán 24.
fuente
¿Por qué Ubuntu actualiza el software sin preguntar?
Creo que esto podría deberse a su Política de actualización en el Administrador de actualizaciones (menú Editar). Recomiendo la opción intermedia: optimizar la estabilidad y la seguridad. La última opción será "Actualizar siempre todo", que no desea.
También puede poner en la lista negra el paquete "emacs-defaults" en Edición> Preferencias> Paquetes en la lista negra (paquetes ignorados AKA).
fuente
Siguiendo la respuesta de @ Oli, así es como se hace:
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
y$ tar -xf data.tar.xz
control
archivo resultante con nano (ya que aún no tiene emacs;)$ nano control
y cámbieloPackage: emacs
aPackage: emacs25
(o 26, 27, etc.)$ mkdir DEBIAN
y copie el archivo de control allí:$ cp control DEBIAN/
$ cd ..
) y ejecútelo$ dpkg --build emacs-rename
. Esto podría tomar un momento.$ sudo dpkg -i emacs-rename.pkg
fuente