Désinstallation de programmes sous Linux

30

J'utilise Windows et Mac OS depuis 5 ans et maintenant j'envisage d'utiliser Linux quotidiennement. J'ai installé Ubuntu sur une machine virtuelle et j'essaie de comprendre comment je peux utiliser Linux pour mon travail quotidien (en tant que programmeur / concepteur Web js).

Désolé pour la question novice, mais il me vient à l'esprit que parfois lorsque j'installe un programme make configet make installqu'il change mon système d'une manière qui n'est pas facilement réversible. Dans Windows, lorsque vous installez un programme, vous pouvez le désinstaller et, espérons-le, s'il est lu par le livre, il ne restera aucune trace du programme dans le système de fichiers ou le registre, etc. Sous Mac OS, vous supprimez simplement une application comme un fichier.

Mais sous Linux, il y en a apt-getet puis il y en a make. Je ne comprenais pas vraiment comment garder mon installation Linux propre et bien rangée. J'ai l'impression que toute nouvelle installation d'application peut briser mon système. Mais alors Linux a la réputation d'être très robuste, donc il doit y avoir quelque chose que je ne comprends pas sur la façon dont l'installation et la désinstallation des applications affectent le système. Quelqu'un peut-il éclairer cela?


Mise à jour: lors de l'installation d'une application, ses fichiers peuvent se propager n'importe où vraiment (les gestionnaires de paquets gèrent une partie du problème), mais il y a un hack sympa à ce sujet: utilisez Docker pour installer des applications et conservez-les dans leur bac à sable, surtout si vous n'allez pas les utiliser trop souvent. Il est également possible d' exécuter des applications GUI comme Firefox entièrement dans un "bac à sable" Docker.

AlexStack
la source
11
En tant qu'utilisateur simple, vous êtes censé utiliser apt-getplutôt que maked'installer un logiciel. make installest utilisé lorsque vous devez créer la dernière version (éventuellement instable) d'un logiciel à partir de sources, qui n'est pas encore disponible en tant que package.
Dmitry Grigoryev
@DmitryGrigoryev L'utilisation aptest plus simple et fournit un meilleur tui que l'utilisation apt-get.
Bakuriu
3
Lorsque j'utilisais OS X, je trouvais souvent la suppression du *.appfichier insuffisante, car les installations d'application jonchaient souvent d'autres endroits (par exemple le répertoire Library, de la mémoire). De plus, si vous créez manuellement à partir de la source dans Ubuntu avec make install, utilisez checkinstallplutôt pour permettre une suppression facile.
Sparhawk
1
N'utilisez pas le ./configure ; make ; make installchemin. Tout ce dont vous avez besoin est d'apprendre le fabuleux outil fpm .
Deer Hunter
qu'est-ce que l'outil fpm?
AlexStack

Réponses:

28

Une nouvelle installation cassera rarement votre système (sauf si vous faites des trucs bizarres comme mélanger la source et le binaire).

Si vous utilisez des binaires précompilés dans Ubuntu, vous pouvez les supprimer et ne pas avoir à vous soucier de casser votre système, car un binaire devrait répertorier ce qu'il nécessite pour fonctionner et votre gestionnaire de paquets répertoriera les programmes qui dépendent de ce programme pour que vous puissiez les consulter.

Lorsque vous utilisez source, vous devez être plus prudent afin de ne pas supprimer quelque chose de critique (comme glib). Il n'y a aucun avertissement ni rien d'autre lorsque vous désinstallez de la source. Cela signifie que vous pouvez complètement casser votre machine.

Si vous souhaitez désinstaller à l'aide de, apt-getvous utiliserez apt-get remove packagecomme indiqué précédemment. Tous les programmes qui dépendent de ce package seront également désinstallés et vous aurez la possibilité de les examiner.

Si vous souhaitez désinstaller, le processus est généralement make uninstall. Il n'y a aucun avertissement (comme je l'ai dit plus haut).

make configne modifiera pas votre système, mais le make installfera.

En tant que débutant, je recommande d'utiliser apt-getou n'importe quelle distribution que vous utilisez pour les packages binaires. Il garde les choses agréables et organisées et à moins que vous ne le vouliez vraiment, il ne cassera pas votre système.

Espérons que cela clarifie tout.

SailorCire
la source
3
Pour une désinstallation sans trace, vous utiliserez bien sûr l' --purgeoption avecapt-get
Hagen von Eitzen
16

En théorie, make uninstallvous devez supprimer ce qui a été make installajouté et votre système ne devrait pas s'accumuler. Le problème, bien sûr, est que tous les makefiles ne sont pas créés égaux.

Certains peuvent omettre la uninstallrègle, vous laissant le soin de comprendre ce que la installrègle a fait. Pire, si la règle d'installation a écrasé une bibliothèque liée, une uninstallroutine stupide peut casser les dépendances d'un autre programme.

La meilleure solution pour les installations source est d'utiliser un préfixe différent de celui des packages installés par le gestionnaire de packaging du système. Apt installe des fichiers /usr/afin d'utiliser la /usr/local/hiérarchie pour vos installations source. Cela rend beaucoup plus facile de savoir à quels fichiers appartiennent les packages et les désinstallations qui ne briseront pas le système.

./configure --prefix=/usr/localfonctionne pour de nombreux scripts de configuration. Sinon, vous pouvez modifier manuellement le Makefile. Ou copiez simplement les fichiers manuellement.

Apt et les autres gestionnaires d'empaquetage gardent une trace des fichiers qu'ils ont installés et de leurs dépendances inverses afin que leurs fonctions de désinstallation soient sûres à utiliser.

LunatiqueWombat
la source
15

Je vous recommande d'utiliser apt-get installpour installer n'importe quel package sous linux et apt-get remove(nom du package) ou apt-get purge(nom du package) qui supprimera non seulement le package principal que vous souhaitez désinstaller, mais tous les packages ou dépendances associés qui ont été installés lors de l'installation.

Maintenant, pour garder votre système plus propre, je vous recommande d'utiliser apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( ce post est intéressant à ce sujet) qui supprimera tous les fichiers téléchargés lors de l'installation mais qui ne sont plus nécessaires.

Une autre commande qui serait utile si vous souhaitez supprimer toutes les dépendances installées sur votre système, mais qu'elles n'ont pas été supprimées lors de la désinstallation, est apt-get autoremove.

Si vous installez un package via make et make install, vous serez responsable de le désinstaller vous-même (il y a peut-être un fichier README inclus dans le package téléchargé qui vous indique comment le faire) ainsi que d'essayer de désinstaller toutes les dépendances qui lui sont associées. . C'est pourquoi il est toujours recommandé d'installer des packages sous Linux proposés par le gestionnaire de packages de la distribution, si vous le faites de cette façon, vous pouvez être sûr que votre package a été suffisamment testé pour fonctionner avec la distribution (version de Linux) que vous utilisez. et il est très peu probable qu'il brise votre système. En outre, vous pouvez être sûr que votre package sera mis à jour en cas de besoin, alors que si vous l'installez par vous-même, vous êtes responsable de tout cela.

J'espère que ça aide :)

VaTo
la source
11

La façon normale de gérer les applications installées sous Linux est avec un gestionnaire de packages. Le choix des gestionnaires de packages est l'un des principaux éléments qui différencient les distributions. Ubuntu, comme Debian (sur lequel il est basé), utilise dpkg et APT ; la plupart du temps, il vous suffit d'interagir avec l'une des interfaces d'APT, comme apt-get(ligne de commande), aptitude (ligne de commande ou mode texte) ou Synaptic (GUI).

Un gestionnaire de packages garde la trace des fichiers appartenant à quel programme installé. Comme sous Windows, les programmes peuvent exécuter du code arbitraire dans le cadre de leur procédure d'installation ou de désinstallation, mais ils se comportent généralement bien et ne cassent pas les autres programmes. De plus, le code (de) d'installation est écrit par le responsable du package, et non par l'auteur en amont (pour les packages de la distribution principale). Contrairement à Windows, il existe une interface unifiée pour l'installation, la mise à niveau et la désinstallation: le gestionnaire de packages. Vous n'avez pas besoin de rechercher le programme de désinstallation (s'il y en a un), il vous suffit de cliquer sur l'icône «désinstaller» dans le gestionnaire de package graphique ou d'exécuter apt-get remove PACKAGENAME.

Si vous avez besoin d'un logiciel «exotique», vous devrez peut-être l'installer manuellement, soit en déballant une archive, soit en compilant à partir de la source. Les installateurs qui se présentent sous la forme d'un programme exécutable sont rares dans le monde Linux. L' exécution make installtend à se propager chaque programme sur plusieurs répertoires ( /usr/local/bin, /usr/local/man, /usr/local/lib, etc.). Pour garder les choses triées, je recommande d'utiliser un «gestionnaire de paquets du pauvre», comme stow . Avec stow, chaque package est installé dans son propre répertoire et l' stowutilitaire se charge de créer des liens symboliques afin que les commandes installées par le package se trouvent dans le chemin de recherche des commandes, etc. Voir Suivi des programmes pour plus de détails.

Gilles, arrête de faire le mal
la source
ce "logiciel exotique" peut être écrit par n'importe qui, non? Comment ce "logiciel exotique" devient officiellement disponible dans les distributions? Quelqu'un passe-t-il en revue son code source ligne par ligne? Comment Ubuntu décide-t-il par exemple d'inclure un logiciel dans sa commande APT-GET et d'en ignorer un autre?
AlexStack
1
@AlexStack La plupart des distributions sont faites par des bénévoles. Ubuntu est parrainé par Canonical, qui paie quelques personnes, mais la majeure partie de la maintenance du package est effectuée par des bénévoles. La réponse la plus précise est donc qu'Ubuntu inclut tout logiciel qu'un volontaire a décidé d'inclure. Plus précisément, la plupart des logiciels dans Ubuntu proviennent de Debian, donc un développeur Debian a dû décider que le package valait la peine d'être travaillé, et le logiciel doit être conforme à la politique (licence acceptable, pas trop boguée).
Gilles 'SO- arrête d'être méchant'
@AlexStack il n'y a aucune garantie que quiconque ait examiné un morceau particulier de logiciel ligne par ligne, même si ce logiciel est disponible dans les référentiels Ubuntu (c'est-à-dire via une installation par défaut de apt-getou similaire). Mais ils ne mettent que des programmes raisonnablement populaires dans les référentiels, ceux qui ont suffisamment d'utilisateurs pour être sûrs qu'ils font essentiellement ce qu'ils sont censés faire.
David Z
8

Vous devriez essayer d'utiliser votre gestionnaire de paquets (apt-get, aptitude, synaptic ou aptdcon, software-center, mintinstall, ..) si possible. L'utilisation d'une tâche make pour l'installation est très brute, sans garantie d'avoir une uninstallcontrepartie et sans garantie de bien jouer avec le reste du système (c'est juste un script lié au système de construction de make - et contrairement à un paquet révisé, les tâches make peuvent contenir tout code exécutable, potentiellement un malware).

Si vous ne trouvez pas une version packagée du logiciel dont vous avez besoin, vous trouverez peut-être checkinstall( checkinstall make install) utile.

PSkocik
la source
3

Je ne suis pas un expert et je ne sais pas grand-chose sur l'installation de logiciels à partir des sources, mais en utilisant apt-get, vous pouvez supprimer les logiciels installés avec apt-get remove package-name. Pour supprimer également tous les fichiers de configuration, utilisez apt-get purge package-name. Le moyen le plus sûr de garder votre installation Linux en ordre est d'utiliser uniquement les packages dans les référentiels officiels. Lorsqu'un paquet est nécessaire qui n'est pas dans les référentiels officiels, il peut souvent être trouvé (puisque vous utilisez Ubuntu) dans un PPA .

Gabe
la source
apt-getest inutile pour le PO qui a utilisé configureetmake install
roaima
3

Comme le disent les autres réponses, de nos jours, il est typique d'installer la grande majorité de vos logiciels en utilisant le gestionnaire de paquets de votre distribution de choix. C'est tellement pratique que vous allez probablement le manquer lorsque vous reviendrez à Windows! Dans un sens, les différents «marchés» et «magasins» vont dans ce sens également pour les OS commerciaux.

Cela dit, je me souviens que lorsque j'ai commencé à apprendre sur Linux, j'étais perplexe quant à la façon dont les logiciels sont généralement installés. Alors que sous Windows, tous les fichiers se c:\Programstrouvent dans un seul répertoire , la "méthode unix" traditionnelle consiste à les disperser dans des "emplacements standard" (les détails ne sont pas si normalisés, [consultez LSB pour plus d'informations] [1] ), comme /usr/local/binpour les exécutables, /usr/local/docpour la documentation, etc.

Dans un sens, Windows "ne sait pas" où se trouvent vos exécutables. Il sait qu'ils sont "quelque part sous c:\Program Files", mais pas beaucoup plus. Analyser tous ces répertoires pour les trouver est, ou était, un coût prohibitif. Ainsi, un lien vers l'exécutable serait explicitement placé dans un emplacement connu (le menu Démarrer), et c'est ce que vous utiliseriez pour le démarrer.

Sous Unix / Linux, votre shell, et la plupart des autres programmes d'ailleurs, rechercheront automatiquement les exécutables ou autres ressources dans un ensemble connu d'emplacements. C'est pourquoi, en copiant simplement vos fichiers dans leurs répertoires appropriés, vous les "voyez" automatiquement, sans avoir à les "enregistrer" n'importe où pour que les utilisateurs les connaissent.

Les deux mécanismes ont leurs avantages et leurs inconvénients, mais vous constaterez que l'approche Unix est généralement plus flexible.

Veuillez garder à l'esprit qu'il existe de nombreuses exceptions et détails qui rendent l'image pas aussi claire que je l'ai décrite, mais je pense que ce type d'introduction peut être utile pour les débutants pour au moins comprendre la logique de base derrière.

UncleZeiv
la source
merci @unclezeif. Ce problème avec les "fichiers éparpillés partout" me dérange vraiment parce que je ne le comprends pas. Vous avez dit que l'approche Unix est généralement plus flexible. Pouvez-vous élaborer s'il vous plaît?
AlexStack
Par exemple, la documentation est tout en un seul endroit, les icônes sont toutes en un seul endroit, etc. ce qui dans certains cas est vraiment sympa! Par plus flexible, je veux dire que, étant tous basés sur un chemin, vous pouvez faire des choses comme: générer un nouveau shell où les variables d'environnement sont modifiées de sorte que vous ne voyez que les exécutables dans un certain répertoire, limitant (ou élargissant) votre choix. Tout cela est très "simple" car vous n'utilisez que des fichiers et des variables d'environnement pour obtenir un haut degré de personnalisation.
UncleZeiv
Un autre exemple est: en principe, vous pouvez installer un programme dans votre répertoire personnel, par exemple / home / foo / bin, et simplement ajouter / home / foo / bin à vos environnements de chemin, sans toucher au système partagé.
UncleZeiv
3

Je pense que le meilleur conseil est juste dans ce post de forum . Voici vos options (2 et 3 sont plus ou moins les mêmes en termes d'effet, vraiment):

  1. Utilisez un gestionnaire de packages et un référentiel. Cela signifie que vous obtenez des mises à jour, vous obtenez des versions officielles, des versions signées, etc. etc. etc.
  2. Si vous ne pouvez pas ou ne voulez pas utiliser un package à partir d'un référentiel, créez un package pour le logiciel et installez-le à l'aide de votre gestionnaire de packages. Des instructions détaillées pour le faire sur les systèmes basés sur Debian sont dans le post lié ci-dessus. Cela semble effrayant au début, mais c'est vraiment assez simple, et surtout dans le cas de Debian, il y a beaucoup de scripts pour faire tout le travail dur pour vous.
  3. Si vous ne pouvez pas faire fonctionner cette méthode, utilisez-la checkinstallcomme d'autres l'ont recommandé. C'est un remplacement très simple pour faire l'installation:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Cela devrait générer le logiciel comme d'habitude, puis s'exécuter make installdans un environnement confiné qui suit ce qu'il fait et crée un package qui ferait exactement ces choses. Ensuite, il installe ce package avec votre gestionnaire de packages. Supprimer alors, c'est comme supprimer tout autre paquet, comme dans (2).

  4. Si vous ne pouvez pas ou ne voulez pas utiliser un gestionnaire de paquets, alors utilisez-le make install, je suppose. Et espérons que le mainteneur du logiciel maintiendra une routine de désinstallation.
esme
la source