Comment gérer un logiciel installé à partir de la source?

14

De temps en temps, nous pouvons être amenés à installer quelque chose à partir de la source pour diverses raisons. Bien qu'il soit assez standard d'installer le logiciel en fonction des dépendances appropriées, je ne sais pas comment gérer une telle installation pour plus de commodité.

Plus précisement:

  1. Que pouvons-nous faire pour garantir une désinstallation simple et propre (y compris les dépendances installées juste avant et uniquement pour le logiciel installé à partir de la source)?

  2. Que pouvons-nous faire pour assurer une mise à niveau facile et propre du même logiciel, qui sera probablement réinstallé à partir de la source?

  3. Que pouvons-nous faire pour minimiser les conflits potentiels s'il existe un package par défaut (installé à l'aide d'apt-get) ainsi que la version (plus récente) du package (installée à partir de la source)?

skyork
la source

Réponses:

8

L'utilisation checkinstall make installcréera un package temporaire et l'installera. Cela signifie qu'il est enregistré dans le gestionnaire de packages et peut être désinstallé.

user54114
la source
7

La meilleure chose à faire serait de créer vous-même les paquets Debian des nouvelles versions. dpkget les aptoutils font les trois choses que vous mentionnez et sont destinés à cet effet. Utilisez-les au lieu de réinventer la roue. Il existe de nombreux guides sur l'emballage. Si le logiciel existe déjà dans les référentiels, vous pouvez probablement obtenir le package source ( apt-get src) que vous pouvez utiliser pour étudier et démarrer votre propre package.

Cette réponse à /ubuntu//a/485230/158442 pourrait être utile comme ligne directrice générale.

Bien qu'il checkinstallsoit idéal pour une solution rapide et sale, à long terme, vous devez utiliser un emballage approprié.

muru
la source
merci pour les suggestions. Lorsque vous avez dit «le logiciel existe déjà dans les référentiels», je suppose que vous parlez des référentiels officiels gérés par Ubuntu. Si c'est le cas, dans de nombreux cas, ces référentiels ne fournissent pas de versions plus récentes, en particulier sur les anciennes versions d'Ubuntu. Donc, apt-get srcne peut probablement pas aider dans de tels cas.
skyork
@skyork peut-être pas. Mais vous pouvez utiliser des packages de versions plus anciennes pour étudier. Il pourrait y avoir une certaine personnalisation effectuée par les packagers, certains scripts de maintenance personnalisés. Il n'y a aucune raison pour laquelle vous devriez ignorer tout cela et recommencer à zéro. Réinventer la roue semble être un thème ici.
muru
4

Tout d'abord, tout dépend de la façon dont vous gérez vos codes sources. Je ~/sourcescrée un répertoire comme et je mets chaque programme dans ses sous-répertoires, tandis que d'autres créent un nouveau répertoire pour chaque programme.

De même, certains comme moi, créent un nouveau sous-sous-répertoire pour chaque nouvelle version et ne suppriment les anciennes versions que lorsqu'il est assuré qu'il n'y a pas de bogues significatifs dans la nouvelle version qui arrêteraient mon travail.

Il n'y a pas une seule façon de le faire, mais quelle que soit la manière que vous choisissez, choisissez celle qui vous serait la plus facile à gérer .

  1. Désinstallation propre

    • Je suggérerais de créer un rem_dep.shscript qui ressemblerait à ceci.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      dep1, dep2, depnsont les dépendances.

  2. Mise à niveau propre et facile

    • si vous obtenez le code source d'un système de version automatisé comme gitou bazaarou si les liens sont prévisibles, vous pouvez créer un script shell qui

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • Dans d'autres cas également, vous pouvez créer de tels scripts avec un travail manuel dans une certaine mesure.

  3. La gestion des conflits

    • La meilleure façon est d'utiliser l' --prefixoption lors de l'installation des logiciels et des dépendances.
    • Une autre chose importante est de garder votre système à jour afin de minimiser les conflits.

REMARQUE: Si vous vous trouvez à compiler plus de logiciels que vous ne le devriez (définissez un max_limitpour vous-même, comme 5 ou 10 ou 100), il est préférable de quitter Ubuntu et de passer à Arch Linux.

Utilisateur enregistré
la source
3

Construire des dépendances:

  • AFAIK ils doivent être enregistrés manuellement. Vous pouvez créer un fichier comme README pour conserver la liste des dépendances installées manuellement.

  • Si ce logiciel a déjà un binaire intégré dans les référentiels Ubuntu ou PPA. Le suivi des dépendances pendant l'installation devrait être plus facile:

    sudo apt-get build-dep target_package
    

Désinstallation propre:

Conservez le dossier source configuré et installé. Mieux si vous collectez toutes les sources dans un dossier spécifique avec le fichier des dépendances installées.

Mise à niveau propre et isolation des fichiers installés:

Installez-les en particulier --prefix(de préférence --prefix=/opt/software_name-version/).

Cela résoudra de nombreux problèmes: versions simultanées avec celle du référentiel; mise à niveau propre; plus facile pour une désinstallation sale dans le cas où la source a été supprimée.

Plus sophistiqué ou le meilleur moyen, comme @muru répond, Construisez un paquet Debian (pour les paquets disponibles dans les dépôts Ubuntu / PPA)

user.dz
la source