Come disinstallare git installato dal sorgente? [chiuso]


21

Ho installato git usando questo articolo . Ora voglio disinstallare git. Come farlo?


1
Hai ancora il codice sorgente che hai scaricato e fatto make installcon?
Hennes,

Sì, ho il codice sorgente
Mikhail

Qual è l'output di 'make uninstall'? Non tutti i Makefile hanno questa opzione, ma molti lo fanno.
Hennes,

1
make: *** Nessuna regola per fare il "disinstallazione" di destinazione. Fermare.
Mikhail,

1
perché -1? spiegare
Mikhail il

Risposte:


15

Ho trovato la soluzione qui .

AGGIORNATO 2.11.2012

Se sei stato abbastanza intelligente e hai usato un prefisso non standard quando hai configurato Git in modo che sia stato installato in una gerarchia specifica, come in / opt / git, quindi elimina quella gerarchia, in modo ricorsivo.

Altrimenti, potresti andare così:

1) Recupera il tarball sorgente esattamente della versione che hai creato e installato, scompatta.

2) Configuralo esattamente come hai fatto con l'installazione originale per quanto riguarda i percorsi di installazione (prefisso, exec-prefix ecc); presumibilmente non dovresti semplicemente ignorare nulla.

3) Creare una directory temporanea per eseguire l'installazione, in questo modo: $ mkdir / var / tmp / git

4) Installa Git passando una variabile DESTDIR corretta per fare: $ make DESTDIR = / var / tmp / git install La gerarchia di Git finirà per essere creata in quella directory temporanea.

5) Utilizzare la gerarchia creata per decidere quali file eliminare nella gerarchia reale ("/" stesso).

L'ultimo passo è dove "la magia" accade in modo che porti più spiegazione. Ad esempio, potresti correre

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(come root) cancella i file installati dalla prima installazione errata nel filesystem di root. L'incanto sopra usa la gerarchia / var / tmp / git per stampare l'elenco dei file trovati, ma sostituisce il prefisso "/ var / tmp / git" con "/", in modo che "/ var / tmp / git / usr / bin / git "nell'output verrà elencato come" / usr / bin / git ". Questo elenco viene quindi reindirizzato al xargsquale viene eseguito rm sui nomi dei file che legge in pacchetti di dieci (solo per ridurre il numero di invocazioni di rmun ordine di grandezza).

Dopo aver gestito i file, esegui

$ find /var/tmp/git -type d -printf '/%P\n'

per ispezionare l'elenco delle directory installate. Questi richiedono un approccio manuale, quindi basta guardare l'elenco generato e pensare a quale di essi potresti tranquillamente rmdirdal tuo sistema (saranno le directory come "/ usr / libexec / git" o qualcosa del genere; probabilmente non vorrai eliminare "/ usr / share / man / mann" o qualcosa anche se è vuoto).

PS In futuro non installare mai nulla in un sistema eseguendo make install! La maggior parte dei makefile al giorno d'oggi non supportano il target "disinstallazione" in quanto vengono utilizzati per l'installazione in una posizione di memoria privata per i test o per creare un pacchetto (.rpm, .deb ecc.) E quindi il gestore dei pacchetti si occupa della pulizia. Se è necessario installare qualcosa, provare a trovare un pacchetto ufficiale o provare a eseguire il backport di un altro pacchetto ufficiale da una versione più recente del sistema operativo, se disponibile. Come ultima risorsa, prova a utilizzare lo checkinstallstrumento che tenta di creare un pacchetto binario fuori dalla tua make installcorsa. Questo fa schifo, ma ancora meglio di nudo make install.


Si prega di espandere alcuni dei dettagli presenti lì. Succede il bit-rot e quando ciò fa questa risposta diventa inutile.
sysadmin1138

ok, ho aggiornato la mia risposta
Mikhail

Rispetto. funziona
dotslash

Sommario: ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install. sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid

3

Ho appena preso 2691 linee di Makefile. Effettivamente nessuna disinstallazione. Drat.

In tal caso, una soluzione potrebbe essere quella di utilizzare l' make rpmopzione. Installa l'rpm (sovrascrivendo tutti i file installati, che dovrebbero essere identici ai file già installati). Quindi disinstallare l'rpm.

In tutti i casi futuri creare un pacchetto (RPM, yum, qualunque cosa). Rende la manutenzione molto più semplice.


1
Tranne che in genere make installmette cose nel prefisso /usr/localmentre rpm / deb / your-package-here funzionano ./configurecon parametri diversi in modo che i file che installano finiscano con il prefisso /usr.
ptman,

Sono un principiante nel CentOS. Quale comando devo eseguire? Puoi spiegare di più, per favore
Mikhail,

Ho eseguito il make rpmcomando. Cosa dovrei fare il prossimo?
Mikhail,

Inizia con man rpmo 'rpm --help. Probabilmente ti dirà di usare rpm -i packagename.rpm. Tuttavia, potrebbe essere meglio chiedere al amministratore di sistema di umbrella-web di aiutarti. C'è solo così tanto che possiamo fare a distanza.
Hennes,
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.