web-dev-qa-db-fra.com

J'ai installé un programme en obtenant son code source, puis en exécutant `Sudo make install`; comment faire en sorte que `apt-get` en soit informé?

J'ai installé le programme (appelez-le, par exemple, progA) en le construisant à partir du code source, puis en appelant finalement Sudo make install et Sudo ldconfig.

Cependant, il semble que apt-get n’a pas reçu le mémo, car lors de l’installation de progB, qui dépend de progA, apt-get recommande d’installer également progA. Pourquoi est-ce cela et que pourrais-je faire?

46
user390136

TL; DR checkinstallest votre ami ;)

Sudo apt-get install checkinstall

Après une installation avec Sudo make install votre gestionnaire de paquets ne sait absolument rien de cette installation. Mais il connaît tout d’un paquet portant le même nom dans les référentiels Ubuntu ou dans un PPA.

Utilisez Sudo checkinstall au lieu de Sudo make install et utilisez une version supérieure en tant que version dans le référentiel pour vous assurer que votre gestionnaire de paquets accepte cette version comme dépendance correcte pour ProgBname__.


Informations complémentaires:

checkinstallest vraiment chouette, car elle suit ce que ferait la commande make install, afin de comprendre comment construire un paquet.

Cela signifie que si vous installez un programme à l'aide de make install, mais que vous souhaitez ensuite vous repentir pour vos péchés, il vous suffit de Sudo checkinstall -D make install, et cette commande:

  1. suivez make install pour savoir ce que ça fait

  2. copy-cat make install, sauf sous forme de package * .deb

  3. installer à partir du paquet (exactement comme make install l'aurait, point 1)) sauf que apt-get le sache, et écrasera ainsi tous les fichiers exactement où make install les aurait placés tant que vous choisirez OUI d'inclure les fichiers mis par make install dans le répertoire de base du package également - quelques options au cours du processus checkinstallvous permettront de choisir (évidemment, le choix est là pour vous permettre de l’exercer cas par cas).

Bonus: vous pouvez également supprimer un package (appelez-le à nouveau progA) installé avec make install sans odes pris en charge par make uninstall en suivant le processus checkinstall, et ensuite simplement faire:

dpkg -r progA
56
A.B.

Trois options:

  1. créer un faux paquet pour progA: Comment simuler une version de paquet installée? (il existe un exemple complet pour TeXlive) .

  2. créer un paquet pour progA, plus facile si l'option checkinstall est choisie: Comment tromper les dépendances d'apt??

  3. Construisez également progB à partir des sources.

13
Rmano

Je vous recommanderais d'utiliser uupdate à partir de devscripts et de construire le paquet comme auparavant.

Installer les paquets requis

$ Sudo apt-get install build-essential devscripts

Téléchargez l'ancien paquet depuis le référentiel officiel (utiliserons MediaWiki comme exemple) et la nouvelle archive tar-ball en amont.

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

Exécutez uupdate pour créer un nouveau dossier source à partir de l'archive tar-ball en amont et de l'ancien debian/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

Maintenant, vous devriez vérifier si vous devez apporter des modifications aux fichiers debian/control etc. Si vous avez terminé, vous pouvez construire le paquet deb et l'installer

$ dpkg-buildpackage -us -uc
$ cd ..
$ Sudo dpkg -i *.deb
1
Germar