Lorsque j'installe un programme simple, il utilise souvent make && make install
et même rarement une cible de désinstallation .
Si je souhaite mettre à niveau un programme, est-ce un protocole standard de supposer qu'il réécrit de manière transparente sur l'ancien programme?
Comment puis-je suivre ces programmes? Est- ce que la plupart des gens se contentent de "tirer et d'oublier" et si aucune cible de désinstallation n'est spécifiée, dois-je tout supprimer manuellement?
Réponses:
Installez chaque programme dans une arborescence de répertoires dédiée et utilisez Stow ou XStow pour que tous les programmes apparaissent dans une hiérarchie commune. Stow crée des liens symboliques du répertoire spécifique au programme vers une arborescence commune.
Plus en détail, choisissez un répertoire de niveau supérieur, par exemple
/usr/local/stow
. Installez chaque programme sous/usr/local/stow/PROGRAM_NAME
. Par exemple, organisez l’installation de ses exécutables/usr/local/stow/PROGRAM_NAME/bin
, de ses pages de manuel/usr/local/stow/man/man1
, etc. Si le programme utilise autoconf, lancez-le./configure --prefix /usr/local/stow/PROGRAM_NAME
. Après avoir courumake install
, lancezstow
:Et maintenant, vous aurez des liens symboliques comme ceux-ci:
Vous pouvez facilement suivre les programmes que vous avez installés en listant le contenu du
stow
répertoire. Vous savez toujours à quel programme appartient un fichier, car il s'agit d'un lien symbolique vers un emplacement situé dans le répertoire de ce programme. Désinstallez un programme en exécutantstow -D PROGRAM_NAME
puis en supprimant le répertoire du programme. Vous pouvez rendre un programme temporairement indisponible en le lançantstow -D PROGRAM_NAME
(exécutez-lestow PROGRAM_NAME
pour le rendre à nouveau disponible).Si vous voulez pouvoir basculer rapidement entre les différentes versions du même programme, utilisez-le
/usr/local/stow/PROGRAM_NAME-VERSION
comme répertoire du programme. Pour mettre à niveau de la version 3 à la version 4, installez la version 4, puis exécutez-lastow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Les anciennes versions de Stow ne vont pas très loin au-delà des bases décrites dans cette réponse. Les versions plus récentes, ainsi que XStow (qui n’a pas été maintenue récemment) ont des fonctionnalités plus avancées, telles que la possibilité d’ignorer certains fichiers, de mieux gérer les liens symboliques existants en dehors du répertoire de stockage (tels que
man -> share/man
), de gérer automatiquement certains conflits (lorsque deux les programmes fournissent le même fichier), etc.Si vous n'avez pas ou ne voulez pas utiliser un accès root, vous pouvez choisir un répertoire dans votre répertoire personnel, par exemple
~/software/stow
. Dans ce cas, ajoutez~/software/bin
à votrePATH
. Si vousman
ne trouvez pas automatiquement les pages de manuel, ajoutez-les~/software/man
à votreMANPATH
. Ajoutez~/software/info
à votreINFOPATH
,~/software/lib/python
à votrePYTHONPATH
, et ainsi de suite, le cas échéant.la source
Vous pouvez utiliser checkinstall pour créer un paquet (paquets compatibles RPM, Deb ou Slackware). Ainsi, vous pouvez utiliser votre gestionnaire de paquets distros pour ajouter / supprimer l'application (mais pas la mise à jour).
Vous utilisez
checkinstall
à la place de lamake install
commande (en utilisant le paramètre -D pour Deb; -R est RPM et -S est Slackware):checkinstall construira et installera le paquet par défaut, ou vous pourrez le construire uniquement sans installer.
checkinstall est disponible dans la plupart des référentiels de distributions.
la source
checkinstall
semble ne pas être activement maintenu (?) :-(Pour l’essentiel, c’est la raison pour laquelle les packages, les ports et d’autres types de gestionnaires empêchent ce genre de choses de se produire.
Je dirais que la suppression manuelle est le seul moyen de procéder à une installation manuelle, à moins que quelqu'un d'autre ait une meilleure réponse à ce point que je ne connais peut-être pas.
la source
Une autre alternative est d' utiliser les astuces Linux From Scratch :
Plus de contrôle et de gestion des packages à l'aide des utilisateurs de packages
Après cette première suggestion grossière, j'ai trouvé une variante évoluée:
crablfs - Système de gestion de paquets basé sur l'utilisateur
Ceci
crablfs
est le dernier exemple de gestion de paquets utilisant des uids et des gids uniques pour la gestion des paquets, mais sur sourceforge, il évolue à nouveau dans ulfs:uLFS: votre Linux From Scratch gérable et réutilisable
Pour les utilisateurs causaux des paquets installés, je pense que la solution LFS "paquet d'utilisateurs" est légère, moins invasive et élégante. En bref, vous installez des packages dans
/usr/local
ou/home/user/local
suivez les fichiers en utilisant des uids et des gids uniques pour chaque package, mais placez tous les fichiers dans des emplacements traditionnels, des répertoires communs/usr/local/bin
,/usr/local/lib
comme dans toutes les distributions Linux classiques ... occlusion et suppression ou suppression non désirée de fichiers est évité par une astuce Linux expliquée par Matthias S. Benkmann dans more_control_and_pkg_man.txt qui nécessite uniquement la manipulation des autorisations de fichiers et de répertoires normaux, par exemple l’autorisation «sticky bit» pour les répertoires afin d’éviter les écrasements de fichiers non désirés:Pour moi, cela ressemble à une solution simple et intelligente! J'ai utilisé ce schéma dans ma construction LFS et c'est une solution qui fonctionne ...
la source
tar
fichiers de l'installation/usr/src/non-rpms
à vous rappeler (c'est ce que je fais habituellement).la source