¿Cómo administrar el software que se instala desde la fuente?

14

De vez en cuando, es posible que tengamos que instalar algo desde la fuente debido a varias razones. Si bien es bastante estándar cómo instalar el software dadas las dependencias apropiadas, no me queda claro cómo administrar dicha instalación para su conveniencia futura.

Más específicamente:

  1. ¿Qué podemos hacer para garantizar una desinstalación fácil y limpia (incluidas las dependencias que se instalan justo antes y solo para el software instalado desde la fuente)?

  2. ¿Qué podemos hacer para garantizar una actualización fácil y limpia del mismo software, que probablemente se volverá a instalar desde la fuente?

  3. ¿Qué podemos hacer para minimizar el conflicto potencial si hay un paquete predeterminado (instalado usando apt-get), así como la versión (más reciente) del paquete (instalada desde la fuente)?

Skyork
fuente

Respuestas:

8

El uso checkinstall make installcreará un paquete temporal y lo instalará. Esto significa que se registra en el administrador de paquetes y se puede desinstalar.

usuario54114
fuente
7

Lo mejor sería crear paquetes Debian de las versiones más recientes usted mismo. dpkgy las aptherramientas hacen las tres cosas que usted menciona y están destinadas para ese propósito. Úsalos en lugar de reinventar la rueda. Hay muchas guías de empaque disponibles. Si el software ya existe en los repositorios, probablemente pueda obtener el paquete fuente ( apt-get src) que puede usar para estudiar e iniciar su propio paquete.

Esta respuesta a /ubuntu//a/485230/158442 podría ser útil como una guía general.

Si bien checkinstalles ideal para una solución rápida y sucia, a largo plazo debe usar un embalaje adecuado.

muru
fuente
Gracias por las sugerencias. Cuando dijiste 'el software ya existe en los repositorios', supongo que te refieres a los repositorios oficiales mantenidos por Ubuntu. Si es así, en muchos casos estos repositorios no proporcionan versiones más nuevas, especialmente en versiones anteriores de Ubuntu. Por lo tanto, apt-get srcprobablemente no pueda ayudar en tales casos.
skyork
@skyork tal vez no lo hacen. Pero puede usar paquetes de versiones anteriores para estudiar. Es posible que los empaquetadores hayan realizado alguna personalización, algunos scripts de mantenimiento personalizados. No hay ninguna razón por la que deba ignorar todo eso y comenzar desde cero. Reinventar la rueda parece ser un tema aquí.
muru
4

En primer lugar, mucho depende de cómo gestione sus códigos fuente. Hago un directorio como ~/sourcesy pongo cada programa en sus subdirectorios, mientras que otros crearán un nuevo directorio para cada programa.

Del mismo modo, algunos como yo, crean un nuevo subdirectorio para cada nueva versión y eliminan las versiones anteriores solo cuando se garantiza que no haya errores significativos en la nueva versión que detenga mi trabajo.

No existe una única forma de hacer esto, pero de cualquier forma que elija, elija la que le resulte más fácil de administrar .

  1. Desinstalación limpia

    • Sugeriría crear un rem_dep.shscript que se vea así.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      ¿Dónde dep1, dep2, depnestán las dependencias?

  2. Actualización limpia y fácil

    • Si obtiene el código fuente de un sistema de versiones automatizado como gito bazaaro si los enlaces son predecibles, puede crear un script de shell que

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • En otros casos también, puede crear tales scripts con trabajo manual hasta cierto punto.

  3. Manejo de conflictos

    • La mejor manera es usar la --prefixopción mientras instala softwares y dependencias.
    • Otra cosa importante es mantener su sistema actualizado para minimizar los conflictos.

NOTA: Si se encuentra compilando más software del que debería (configúrelo max_limitpara usted, como 5, 10 o 100), es mejor que deje Ubuntu y se mude a Arch Linux.

usuario registrado
fuente
3

Construir dependencias:

  • AFAIK deben registrarse manualmente. Puede crear un archivo como README para mantener una lista de dependencias instaladas manualmente.

  • Si ese software ya tiene un binario integrado en los repositorios Ubuntu o PPA. El seguimiento de las dependencias durante la instalación debería ser más fácil:

    sudo apt-get build-dep target_package
    

Desinstalación limpia:

Mantenga la carpeta de origen configurada e instalada. Mejor si reúne todas las fuentes en una carpeta específica con el archivo de dependencias instaladas.

Actualización limpia y aislamiento de archivos instalados:

Instalarlos en específico --prefix(preferiblemente --prefix=/opt/software_name-version/).

Esto resolverá muchos problemas: versiones concurrentes con la del repositorio; actualización limpia; más fácil para la desinstalación sucia en caso de que se elimine la fuente.

Más sofisticado o la mejor manera, como @muru responde, Cree un paquete Debian (para paquetes disponibles en repositorios Ubuntu / PPA)

user.dz
fuente