¿Por qué este paquete de Emacs está versionado en 46.1? 26 es la versión principal más alta posible hoy

11

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 emacscuando 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.

Aaron Hall
fuente
2
Desde el registro de cambios : "Establezca la versión inicial más alta que cualquier paquete binario emacs existente".
muru
Esto me pone triste. : /
Aaron Hall

Respuestas:

15

Aquí hay muchos problemas y preguntas, así que seré breve pero trataré de cubrirlos todos.

  • emacses solo un metapaquete que apunta a la última versión de emacs...Ubuntu (actualmente emacs24). El "46.1" es solo una versión de paquete, deliberadamente alta para desplazar paquetes antiguos de emacs. Ver apt show emacspara un poco más de información.

  • Está anulando ese emacspaquete 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 emacssalida. 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 emacs24paquete en su lugar).

  • Su mejor opción es eliminar el emacspaquete y simplemente construir e instalar un paquete emacs25o en su emacs26lugar. 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.

Oli
fuente
Nunca pregunté "por qué la versión 24" (creo que la respuesta a eso es obvia) mis palabras fueron "por qué esta versión" en referencia a 46, pero como era redundante y menos clara que la pregunta anterior, la eliminé. De todos modos, decidí renombrarlo emacs26 en un argumento para verificar la instalación; probablemente publicaré una resolución más tarde. Mas uno. Y gracias
Aaron Hall
@Oli (+1) con respecto a su último punto, ¿hay un buen argumento para no actualizar Emacs más allá de la versión que llega con un sistema operativo? ¿Se conocen problemas de estabilidad u otros problemas? Estoy trabajando en Ubuntu 16.04 LTS y me gustaría pasar a la versión Emacs 25.1.
n1k31t4
99 habría sido un mejor número de versión.
Thorbjørn Ravn Andersen
0

¿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).

Christopher J Poor
fuente
0

Siguiendo la respuesta de @ Oli, así es como se hace:

eliminando el paquete emacs y simplemente construyendo e instalando un paquete emacs25 o emacs26 en su lugar.

  1. Encuentra tu archivo emacs.deb. Para mí, estaba en mi carpeta raíz de origen de emacs y se llamabaemacs_25.1-1_amd64.deb
  2. Cree un directorio para contener el nuevo paquete de Debian que va a crear: $ mkdir emacs-rename
  3. Desarchivar el paquete debian en el directorio: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Vaya al directorio emacs-rename: $ cd emacs-rename
  5. Extraiga más control.tar.gz y data.tar.xz: $ tar -xzf control.tar.gzy$ tar -xf data.tar.xz
  6. Edite el controlarchivo resultante con nano (ya que aún no tiene emacs;) $ nano controly cámbielo Package: emacsa Package: emacs25(o 26, 27, etc.)
  7. Cree un directorio DEBIAN dentro de emacs-rename: $ mkdir DEBIANy copie el archivo de control allí:$ cp control DEBIAN/
  8. Suba un directorio, regrese a la raíz de origen de emacs ( $ cd ..) y ejecútelo $ dpkg --build emacs-rename. Esto podría tomar un momento.
  9. Ahora debería tener un paquete emacs-rename.deb. No se preocupe si no sigue la estructura de nombres de paquetes debian adecuada, es solo para su uso. Instalarlo con$ sudo dpkg -i emacs-rename.pkg
  10. Si todo funcionó, debería ver:

    Preparando para desempaquetar emacs-rename.deb ...
    Desempacando emacs25 (25.1-1) ...
    Configurando emacs25 (25.1-1) ...

audiodude
fuente