Disinstallazione di programmi in Linux


30

Ho usato Windows e Mac OS negli ultimi 5 anni e ora sto considerando di usare Linux su base giornaliera. Ho installato Ubuntu su una macchina virtuale e sto cercando di capire come posso usare Linux per il mio lavoro quotidiano (come programmatore / web designer js).

Ci scusiamo per la domanda da principiante, ma mi viene in mente che a volte quando installo un programma make confige make installcambia il mio sistema in modi che non sono facilmente riverificabili. In Windows quando si installa un programma, è possibile disinstallarlo e si spera che, se viene riprodotto dal libro, non rimarranno tracce del programma nel file system o nel registro, ecc. In Mac OS è sufficiente eliminare un'app come un file.

Ma in Linux c'è apt-gete poi c'è make. Non ho capito bene come posso mantenere la mia installazione di Linux pulita e ordinata. Sembra che qualsiasi nuova installazione di app possa danneggiare il mio sistema. Ma poi Linux ha la reputazione di essere molto robusto, quindi ci deve essere qualcosa che non capisco su come l'installazione e la disinstallazione delle app influiscono sul sistema. Qualcuno può far luce su questo?


Aggiornamento: quando si installa un'app, i suoi file possono diffondersi davvero ovunque (i gestori di pacchetti gestiscono parte del problema) ma c'è un bel trucco in tutto ciò: usare Docker per installare app e tenerli nella loro sandbox, specialmente se non lo farai usali troppo spesso. È anche possibile eseguire app GUI come Firefox interamente in una "sandbox" Docker.


11
Come utente semplice dovresti usare apt-getpiuttosto che makeinstallare software. make installviene utilizzato quando è necessario creare la versione più recente (forse instabile) di un software da fonti, che non è ancora disponibile come pacchetto.
Dmitry Grigoryev

@DmitryGrigoryev L'utilizzo aptè più semplice e offre un migliore tui rispetto all'utilizzo apt-get.
Bakuriu,

3
Quando ho usato OS X, ho spesso trovato *.appinsufficiente l'eliminazione del file, poiché le installazioni di applicazioni spesso disseminavano altri posti (ad esempio la directory della Libreria, dalla memoria). Inoltre, se compilate manualmente dal sorgente in Ubuntu con make install, usate checkinstallinvece per consentire una facile rimozione.
Sparhawk,

1
Non usare il ./configure ; make ; make installmodo. Tutto ciò che serve è imparare il favoloso strumento fpm .
Deer Hunter,

che cos'è lo strumento fpm?
AlexStack,

Risposte:


28

Una nuova installazione raramente romperà il tuo sistema (a meno che tu non faccia cose strane come il mixaggio di sorgenti e binari).

Se usi i binari precompilati in Ubuntu, puoi rimuoverli e non devi preoccuparti di rompere il tuo sistema, perché un binario dovrebbe elencare ciò che richiede per essere eseguito e il tuo gestore di pacchetti elencherà quali programmi si basano su quel programma per poterlo rivedere.

Quando usi la fonte, devi stare più attento in modo da non rimuovere qualcosa di critico (come glib). Non ci sono avvisi o altro quando si disinstalla dal sorgente. Ciò significa che puoi rompere completamente la tua macchina.

Se si desidera disinstallare utilizzando apt-get, verrà utilizzato apt-get remove packagecome precedentemente indicato. Anche tutti i programmi che si basano su quel pacchetto verranno disinstallati e avrai la possibilità di esaminarli.

Se si desidera disinstallare, in genere il processo è make uninstall. Non ci sono avvisi (come ho detto sopra).

make confignon modificherà il tuo sistema, ma lo make installfarà.

Come principiante, raccomando di usare apt-geto qualunque distro usi per i pacchetti binari. Mantiene le cose belle e organizzate e, a meno che tu non lo voglia davvero, non romperà il tuo sistema.

Speriamo che chiarisca tutto.


3
Per la disinstallazione senza traceless userete ovviamente l' --purgeopzione conapt-get
Hagen von Eitzen,

16

In teoria, make uninstalldovrebbe rimuovere ciò che è stato make installaggiunto e il sistema non si accumula. Il problema, ovviamente, è che non tutti i makefile sono creati uguali.

Alcuni potrebbero omettere la uninstallregola, lasciando a te capire cosa ha fatto la installregola. Peggio ancora, se la regola di installazione sovrascriveva una libreria collegata, una uninstallroutine stupida potrebbe spezzare le dipendenze per qualche altro programma.

La migliore soluzione per le installazioni di origine consiste nell'utilizzare un prefisso diverso rispetto ai pacchetti installati dal gestore dei pacchetti del sistema. Apt installa i file in /usr/modo da utilizzare la /usr/local/gerarchia per le installazioni di origine. Ciò rende molto più semplice tenere traccia di quali file appartengono a quali pacchetti e disinstallazioni non romperanno il sistema.

./configure --prefix=/usr/localfunziona per molti script di configurazione. In caso contrario, puoi modificare Makefile manualmente. O semplicemente copia i file manualmente.

Apt e altri gestori del packaging tengono traccia di quali file hanno installato e delle loro dipendenze inverse, quindi le loro funzioni di disinstallazione sono sicure da usare.


15

Ti consiglierei di utilizzare apt-get installper installare qualsiasi pacchetto in Linux e apt-get remove(nome pacchetto) o apt-get purge(nome pacchetto) che rimuoverà non solo il pacchetto principale che si desidera disinstallare, ma tutti i pacchetti o le dipendenze associati che sono stati installati durante l'installazione.

Ora, per mantenere il sistema più pulito, ti consiglio di utilizzare apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( questo post è interessante a riguardo) che rimuoverà tutti i file che sono stati scaricati durante l'installazione ma non sono più necessari.

Un altro comando che sarebbe utile se si desidera rimuovere tutte le dipendenze installate nel sistema ma che non sono state rimosse al momento della disinstallazione è apt-get autoremove.

Se installi un pacchetto tramite make e make install sarai responsabile della disinstallazione da solo (forse c'è un file README incluso nel pacchetto scaricato che ti dice come farlo), oltre a provare a disinstallare tutte le dipendenze ad esso associate . Ecco perché si consiglia sempre di installare pacchetti in Linux offerti dal gestore pacchetti della distro, se lo fai in questo modo puoi essere sicuro che il tuo pacchetto sia stato testato abbastanza da funzionare con la distro (sapore di Linux) che stai usando ed è molto improbabile che rompa il tuo sistema. Inoltre, puoi essere sicuro che il tuo pacchetto verrà aggiornato quando necessario, mentre se lo installi da solo sei responsabile di fare tutto questo.

Spero che aiuti :)


11

Il modo normale di gestire le applicazioni installate su Linux è con un gestore di pacchetti. La scelta dei gestori di pacchetti è una delle cose principali che differenziano le distribuzioni. Ubuntu, come Debian (su cui si basa), usa dpkg e APT ; il più delle volte, devi solo interagire con una delle interfacce di APT, come apt-get(riga di comando), aptitude (riga di comando o modalità testo) o Synaptic (GUI).

Un gestore di pacchetti tiene traccia di quali file appartengono a quale programma installato. Come su Windows, i programmi possono eseguire codice arbitrario come parte della loro procedura di installazione o disinstallazione, ma di solito sono ben educati e non infrangono altri programmi. Inoltre il (un) codice di installazione è scritto dal manutentore del pacchetto, non dall'autore a monte (per i pacchetti nella distribuzione principale). A differenza di Windows, esiste un'interfaccia unificata per l'installazione, l'aggiornamento e la disinstallazione: il gestore pacchetti. Non è necessario cercare il programma di disinstallazione (se presente), è sufficiente fare clic sull'icona "Disinstalla" nel gestore di pacchetti grafico o eseguire apt-get remove PACKAGENAME.

Se hai bisogno di software "esotico", potresti doverlo installare manualmente, scompattando un archivio o compilando dal sorgente. Gli installatori che si presentano sotto forma di un programma eseguibile sono rari nel mondo Linux. Esecuzione make installtende a diffondersi ogni programma su più directory ( /usr/local/bin, /usr/local/man, /usr/local/lib, etc.). Per mantenere le cose ordinate, consiglio di usare un "gestore di pacchetti per poveri", come stow . Con stow, ciascun pacchetto viene installato nella propria directory e l' stowutilità si occupa della creazione di collegamenti simbolici in modo che i comandi installati dal pacchetto si trovino nel percorso di ricerca dei comandi e così via. Vedi Tenere traccia dei programmi per maggiori dettagli.


questo "software esotico" può essere scritto da chiunque giusto? In che modo questo "software esotico" diventa ufficialmente disponibile nelle distribuzioni? Qualcuno rivede il proprio codice sorgente riga per riga? In che modo Ubuntu, ad esempio, decide di includere un software nel suo comando APT-GET e ne ignora un altro?
AlexStack,

1
@AlexStack La maggior parte delle distribuzioni sono fatte da volontari. Ubuntu è sponsorizzato da Canonical, che paga poche persone, ma la maggior parte della manutenzione del pacchetto viene effettuata da volontari. Quindi la risposta più accurata è che Ubuntu include qualsiasi software che un volontario abbia deciso di includere. Più precisamente, la maggior parte dei software in Ubuntu proviene da Debian, quindi uno sviluppatore Debian ha dovuto decidere il pacchetto su cui valeva la pena lavorare e il software deve essere conforme alla politica (licenza accettabile, non troppo difettosa).
Gilles 'SO- smetti di essere malvagio'

@AlexStack non ha alcuna garanzia che qualcuno abbia esaminato un particolare pezzo di software riga per riga, anche se quel software è disponibile nei repository di Ubuntu (cioè attraverso un'installazione predefinita apt-geto simili). Ma hanno messo nei repository solo programmi ragionevolmente popolari, quelli che hanno abbastanza utenti per essere sicuri di fare praticamente quello che dovrebbero fare.
David Z,


8

Dovresti provare a usare il tuo gestore pacchetti (apt-get, aptitude, synaptic o aptdcon, software-center, mintinstall, ..) se possibile. L'uso di un'attività make per l'installazione è molto semplice, non è garantito che abbia una uninstallcontroparte e non è garantito che funzioni bene con il resto del sistema (è solo uno script legato al sistema di build di make - e diversamente da un pacchetto recensito, le attività possono contenere qualsiasi codice eseguibile, potenzialmente malware).

Se non trovi una versione in pacchetto del software di cui hai bisogno, potresti trovare checkinstall( checkinstall make install) utile.


3

Non sono un esperto e non so molto sull'installazione del software dalla fonte, ma utilizzando apt-get, è possibile rimuovere il software installato con apt-get remove package-name. Per rimuovere anche tutti i file di configurazione, utilizzare apt-get purge package-name. Il modo più sicuro per mantenere in ordine l'installazione di Linux è utilizzare i pacchetti solo nei repository ufficiali. Quando è necessario un pacchetto che non si trova nei repository ufficiali, spesso può essere trovato (poiché si utilizza Ubuntu) in un PPA .


apt-getè inutile per l'OP che ha utilizzato configureemake install
roaima

3

Come dicono le altre risposte, al giorno d'oggi è tipico installare la stragrande maggioranza del software utilizzando il gestore dei pacchetti preferito dalla distro. È così comodo che probabilmente ti mancherà quando torni a Windows! In un certo senso, i vari "mercati" e "negozi" vanno in quella direzione anche per i sistemi operativi commerciali.

Detto questo, ricordo che quando ho iniziato a conoscere Linux ero perplesso dal modo in cui il software è tipicamente installato. Mentre su Windows tutti i file vanno in una singola directory sotto c:\Programs, il tradizionale "modo unix" è di spargerli in "posizioni standard" (i dettagli non sono così standardizzati, [dai un'occhiata a LSB per maggiori informazioni] [1] ), ad esempio /usr/local/binper gli eseguibili, /usr/local/docper la documentazione e così via.

In un certo senso, Windows "non sa" dove si trovano i tuoi eseguibili. Sa che sono "da qualche parte sotto c:\Program Files", ma non molto di più. Scansionare tutte quelle directory per trovarle è, o era, proibitivamente costoso. Quindi un collegamento all'eseguibile verrebbe esplicitamente collocato in una posizione nota (il menu di avvio), ed è quello che useresti per avviarlo.

Su Unix / Linux, la tua shell e la maggior parte degli altri programmi cercheranno automaticamente eseguibili o altre risorse in una serie nota di posizioni. Ecco perché, semplicemente copiando i tuoi file nelle loro directory appropriate, li "vedrai" automaticamente, senza doverli "registrare" ovunque per farli conoscere agli utenti.

Entrambi i meccanismi hanno i loro pro e contro, ma scoprirai che l'approccio Unix è in genere più flessibile.

Tieni presente che ci sono molte eccezioni e dettagli che rendono l'immagine non ben definita come l'ho descritta, ma penso che questo tipo di introduzione possa essere utile ai neofiti per capire almeno la logica di base.


grazie @unclezeif. Quel problema con "file sparsi ovunque" mi sta davvero dando fastidio perché non lo capisco. Hai detto che l'approccio Unix è in genere più flessibile. Puoi elaborare per favore?
AlexStack,

Ad esempio, la documentazione è tutta in un posto, le icone sono tutte in un posto, ecc. Che in alcuni casi è davvero bello! Con più flessibile intendo che, essendo tutti basati sul percorso, puoi fare cose come: generare una nuova shell in cui le variabili di ambiente sono cambiate in modo da vedere solo gli eseguibili in una determinata directory, limitando (o espandendo) la tua scelta. È tutto molto "semplice" poiché si utilizzano solo file e variabili di ambiente per ottenere un grande grado di personalizzazione.
ZioZeiv,

Un altro esempio è: in linea di principio è possibile installare un programma nella directory home, ad esempio / home / foo / bin, e aggiungere semplicemente / home / foo / bin negli ambienti dei percorsi, senza toccare il sistema condiviso.
ZioZeiv,

3

Penso che il miglior consiglio sia proprio in questo post del forum . Ecco le tue opzioni (2 e 3 sono più o meno le stesse in termini di effetto, davvero):

  1. Utilizzare un gestore pacchetti e un repository. Ciò significa che ricevi aggiornamenti, ottieni versioni ufficiali, versioni firmate, ecc. Ecc. Ecc.
  2. Se non è possibile o non si desidera utilizzare un pacchetto da un repository, creare un pacchetto per il software e installarlo utilizzando il proprio gestore pacchetti. Le istruzioni dettagliate per farlo su sistemi basati su Debian sono nel post sopra linkato. All'inizio sembra spaventoso, ma è davvero abbastanza semplice, e specialmente nel caso di Debian ci sono molti script là fuori per fare tutto il duro lavoro per te.
  3. Se non riesci a far funzionare quel metodo, usa checkinstallcome altri hanno raccomandato. È una sostituzione drop-in molto semplice per effettuare l'installazione:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Ciò dovrebbe creare il software normalmente, quindi eseguirlo make installin un ambiente limitato che tiene traccia di ciò che fa e crea un pacchetto che farebbe esattamente queste cose. Quindi installa quel pacchetto con il tuo gestore pacchetti. Rimuovere quindi è come rimuovere qualsiasi altro pacchetto, proprio come in (2).

  4. Se non puoi o non vuoi usare un gestore di pacchetti, beh, allora usa make install, suppongo. E spero che il manutentore del software mantenga una routine di disinstallazione.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.