web-dev-qa-db-fra.com

Construisez le paquet .deb à partir des sources, sans l'installer

Supposons que j’ai un programme d’installation ou une archive source pour un programme que je souhaite installer. (Il n'y a pas de paquet Debian disponible.) Tout d'abord, je veux créer un paquet .deb afin de pouvoir supprimer proprement le programme installé à l'avenir (voir Désinstallation d'une application créée à partir du code source] , Si je construis un paquet à partir de la source, comment puis-je désinstaller ou supprimer complètement? ). De plus, l'installation à l'aide d'un paquet l'empêche de compresser les fichiers d'autres paquets, ce qui ne peut être garanti si vous exécutez le programme d'installation ou Sudo make install.

Checkinstall

En lisant les réponses ici et ailleurs, je suppose que la solution habituelle consiste à utiliser checkinstall pour construire le paquet. Malheureusement, il semble que checkinstall empêche pas d’empêcher make install d’empiler les fichiers système d’autres paquets. Par exemple, selon Résoudre les problèmes causés par checkinstall avec gcc build :

J'ai créé un paquet Debian à partir de l'installation en utilisant Sudo checkinstall -D make install.

[...] Je l'ai enlevé en utilisant Synaptic Package Manager. En fait, [supprimant] le paquet checkinstall créé à partir de make install a tenté de supprimer tous les fichiers concernés par le processus d'installation, y compris les bibliothèques gcc partagées telles que /lib64/libgcc_s.so.

J'ai ensuite essayé de dire à checkinstall de construire le paquet sans l'installer, dans l'espoir de contourner le problème. J'ai créé un Makefile factice:

install:
    echo "Bogus" > /bin/qwertyuiop

et a lancé Sudo checkinstall --install=no. Le fichier /bin/qwertyuiop a été créé , même si le package n'a pas été installé.

Dans mon cas, je ne fais pas confiance au programme d'installation/make install pour ne pas écraser les fichiers système , cette utilisation de checkinstall est donc exclue.

Comment puis-je construire le paquet sans l'installer ou le laisser toucher les fichiers système?

Est-il possible d'exécuter Checkinstall dans un environnement fakechroot ed debootstrap pour y parvenir? De préférence, la compilation doit être effectuée en tant qu'utilisateur normal plutôt qu'en tant que root, ce qui empêcherait le processus de remplacer les fichiers système en cas de problème.

4
Mechanical snail

Vous voudrez peut-être essayer debuild pour créer un fichier binaire (deb) en dehors de la source. Vous devez préparer le dossier debian comme vous le conditionnez. Une fois que vous avez bien compris, exécutez la commande debuild -b à partir du répertoire source et il créera un fichier deb pour vous.

Vous voudriez aussi jeter un oeil à Introduction aux paquets Debian .


Si tout cela est fou, il vous suffira de vous débrouiller avec checkinstall en jouant avec les fichiers système.

3
jokerdino

J'ai trouvé ne réponse dans un article du Linux Journal appelé utilisant Checkinstall pour créer des packages à partir de la source :

Si vous souhaitez simplement créer le fichier .deb sans effectuer l'installation, utilisez le commutateur de ligne de commande

Sudo checkinstall --install=no

0
DMfll