Instalé un programa obteniendo su código fuente y luego ejecutando `sudo make install`; ¿Cómo hacer que `apt-get` lo sepa?


46

Instalé el programa (lo llamo, por ejemplo progA) construyéndolo desde el código fuente, y luego finalmente llamé sudo make instally sudo ldconfig.

Sin embargo, parece que apt-getno ha recibido el memo, porque al instalarlo progB, que depende de progA, apt-getrecomienda que también lo instale progA. ¿Por qué es esto y qué puedo hacer?


Creo que también debes instalarlo progBmanualmente ...
Parto

11
No se puede suponer que la versión 'personalizada' que ha creado es la misma que el paquete, eso es una dependencia. Un atajo (no recomendado) sería instalar el paquete real y luego sobrescribir el binario con su 'especial'. Como no ha sido específico, no puedo proporcionar más consejos.
david6

66
Solo no hagas esto. Mantenga siempre el software administrado por la administración de su paquete estrictamente separado del software que compila usted mismo.
Reinier Post

Respuestas:


56

TL; DR checkinstall es tu amigo ;)

sudo apt-get install checkinstall

Después de una instalación con sudo make installsu administrador de paquetes no sabe absolutamente nada acerca de esta instalación. Pero sabe todo sobre un paquete con el mismo nombre en los repositorios de Ubuntu o en un PPA.

Use en sudo checkinstalllugar de sudo make instally use una versión superior como la versión en el repositorio para asegurarse de que su administrador de paquetes acepta esta versión como dependencia correcta ProgB.


Más información:

checkinstalles realmente ingenioso, ya que sigue lo make installque haría el comando, para descubrir cómo construir un paquete.

Esto significa que si instala un programa usando make install, pero luego quiere arrepentirse por sus pecados, todo lo que tiene que hacer es sudo checkinstall -D make install, y ese comando:

  1. siga make installpara descubrir qué hace

  2. copy-cat make install, excepto en el paquete * .deb

  3. instalar desde el paquete (exactamente como lo make installhabría hecho, dado el punto 1)) excepto también informar al apt-getrespecto, y así sobrescribir todos los archivos exactamente donde los make installhabría colocado siempre que elija SÍ para incluir los archivos colocados make installen el directorio de inicio en el paquete también: un par de opciones durante el checkinstallproceso le permitirán elegir (obviamente, la opción está ahí para que pueda ejercerla caso por caso)

Bonificación: también puede eliminar un paquete (llamarlo de progAnuevo) instalado usando make installque las odas no tienen make uninstallsoporte siguiendo el checkinstallproceso descrito hasta ahora, y luego simplemente haciendo:

dpkg -r progA

18
Wow checkinstall- ¡EL MUNDO necesita saber sobre esto!

Agregué algunos detalles más a su respuesta, basado en tratar de implementarlo ayer, y las recomendaciones de esta meta pregunta : ¡no dude en editarlo más!

¿Qué detalles quieres decir?
AB

Oh, creo que aún no han aparecido, porque está en revisión de edición: si hace clic en el enlace a la meta pregunta, verá lo que son (originalmente, los puse en el cuerpo de la pregunta, pero el la recomendación era que debería ponerlos en el cuerpo de respuesta aceptado).

El directorio de documentación del paquete ./doc-pak no existe. ¿Debo crear un conjunto predeterminado de paquetes de documentos?
n8chz


1

Recomiendo usar uupdatedesde devscriptsy compilar el paquete como el original fue compilado antes.

Instalar paquetes requeridos

$ sudo apt-get install build-essential devscripts

Descargue el paquete anterior del repositorio oficial (se usará MediaWikicomo ejemplo) y el nuevo tar-ball de upstream.

$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz

Ejecutar uupdatepara crear una nueva carpeta de origen desde el tar-ball ascendente y el viejodebian/control

$ cd mediawiki-1.19.14+dfsg   # depends on your Ubuntu version
$ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0
$ cd ../mediawiki-1.26.0

Ahora debe verificar si necesita hacer cambios en los debian/controlarchivos, etc. Si ha terminado, puede compilar el paquete deb e instalarlo

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.