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?
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 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 ProgB
name__.
Informations complémentaires:
checkinstall
est 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:
suivez make install
pour savoir ce que ça fait
copy-cat make install
, sauf sous forme de package * .deb
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 checkinstall
vous 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
Trois options:
créer un faux paquet pour progA
: Comment simuler une version de paquet installée? (il existe un exemple complet pour TeXlive) .
créer un paquet pour progA
, plus facile si l'option checkinstall
est choisie: Comment tromper les dépendances d'apt??
Construisez également progB
à partir des sources.
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