J'ai installé un programme en obtenant son code source, puis en exécutant «sudo make install»; comment le faire savoir à apt-get?

44

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 et que pourrais-je faire?

    
posée Braiam 03.12.2015 - 07:41
la source

3 réponses

54

TL; DR checkinstall est 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 sait tout sur un paquet avec le même nom dans les dépôts Ubuntu ou dans un PPA.

Utilisez sudo checkinstall au lieu de sudo make install et utilisez une version supérieure comme version du référentiel pour être sûr que votre gestionnaire de packages accepte cette version comme dépendance correcte pour ProgB .

Informations complémentaires:

checkinstall est vraiment astucieux, car il suit ce que la commande make install ferait, afin de déterminer comment construire un paquet.

Cela signifie que si vous installez un programme en utilisant make install , mais que vous voulez ensuite vous repentir pour vos péchés, tout ce que vous avez à faire est de sudo checkinstall -D make install , et cette commande va:

  1. suivez make install pour comprendre ce que cela fait

  2. copy-cat make install , sauf dans le formulaire de package * .deb

  3. installer à partir du paquet (exactement comme make install l'aurait fait, à partir du point 1)) sauf que apt-get le sait aussi et écrase donc tous les fichiers exactement où make install les aurait mis Tant que vous choisissez OUI pour inclure les fichiers mis par make install dans le répertoire home du paquet - quelques options pendant le processus checkinstall vous permettront de choisir (évidemment, le choix est là pour que vous puissiez exercez-le au cas par cas)

Bonus: Vous pouvez également supprimer un package (appelez-le progA à nouveau) installé avec make install qui n'a pas le support make uninstall en suivant le processus checkinstall décrit jusqu'ici, puis en faisant simplement:

dpkg -r progA
    
réponse donnée A.B. 03.12.2015 - 08:30
la source
13

Trois options:

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

  2. créer un package pour progA , plus facile si il a une option checkinstall : Comment tromper les dépendances apt?

  3. Créez également progB à partir des sources.

réponse donnée Rmano 03.12.2015 - 07:51
la source
1

Je vous recommande d’utiliser uupdate de devscripts et de construire le package comme l’original a été créé auparavant.

Installer les packages requis

$ sudo apt-get install build-essential devscripts

Téléchargez l’ancien paquet depuis le dépôt officiel (utilisera MediaWiki comme exemple) et le nouveau 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 la boule tar 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 modifier les fichiers debian/control etc. Si vous avez terminé, vous pouvez créer le paquet deb et l'installer

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
    
réponse donnée Germar 04.12.2015 - 02:54
la source

Lire d'autres questions sur les étiquettes