Pagina 1 di 2
rimuovere programmi installati tramite compilazione
Inviato: lun 26 mar 2007, 16:41
da danix
Salve a tutti,
chiedo scusa fin d'ora se la mia domanda potrà sembrare banale ai più, ma ci stavo pensando da un pò... come si fà a disinstallare un programma che è stato compilato su una certa macchina?? Provo a spiegarmi meglio... quando utilizzo del software pacchettizzato mi basta dare un removepkg e lo elimino senza problemi, ma quando compilo?? Esiste un comando per rimuovere tutto quello che si va a creare nel sistema con la compilazione?? Ad esempio le pagine di man, gli eseguibili, le varie lib... nei pacchetti si tiene traccia di tutto, ma compilando da sorgenti??
Spero mi toglierete questo dubbio...
Grazie mille
Inviato: lun 26 mar 2007, 16:44
da JohnnyMnemonic
Quando compili i programmi, normalmente con il classico schema
./configure
make
make install
analogamente puoi rimuoverli con il comando
make uninstall
il problema è che non tutti i Makefile hanno comprese le istruzioni per la rimozione
Inviato: lun 26 mar 2007, 17:41
da submax82
e inoltre devi avere la certella dei sorgenti
Inviato: lun 26 mar 2007, 17:47
da JohnnyMnemonic
submax82 ha scritto:e inoltre devi avere la certella dei sorgenti
vero, l'avevo dato per scontato.
E' per la scomodità di tenere sempre le directory dei sorgenti che risulta molto più comodo e pulito fare i pacchetti
Inviato: lun 26 mar 2007, 18:50
da gastone90
JohnnyMnemonic ha scritto:
make uninstall
il problema è che non tutti i Makefile hanno comprese le istruzioni per la rimozione
è veramente un gran problema, sono in molti i makefile che non ce le hanno...e quando è ora di rimuovrere viene sempre fuori un disastro..
Inviato: lun 26 mar 2007, 19:22
da albatros
Se make uninstall non è disponibile, basta che ti ricordi o che abbia annotato le opzioni del configure, poi lo installi da qualche altra parte (es. /prova) e guardi che file installa, a quel punto li rimuovi. Se vuoi puoi anche ripetere l'installazione senza cambiare la destinazione e/o farti un file di log di make install...
Ci sono tool come checkinstall, ma mi convincono poco...
Inviato: lun 26 mar 2007, 19:41
da danix
in ogni caso per aggiornare un software compilato sul proprio pc con una versione successiva devo prima disinstallare la versione vecchia, giusto??
Inviato: lun 26 mar 2007, 19:46
da albatros
Diciamo che è spesso consigliabile, ma non necessario...
Attenzione che in alcuni casi, vedi le glibc, potresti avere dei problemi a disinstallare prima di installare, se ci fai caso upgradepkg prima installa la versione nuova, poi rimuove la vecchia.
Inviato: lun 26 mar 2007, 19:49
da danix
albatros ha scritto:Diciamo che è spesso consigliabile, ma non necessario...
Attenzione che in alcuni casi, vedi le glibc, potresti avere dei problemi a disinstallare prima di installare, se ci fai caso upgradepkg prima installa la versione nuova, poi rimuove la vecchia.
si, ma upgradepkg tiene nota di tutto quello che installa e di quello che già si trova installato nel sistema, quindi gli viene più facile rimuovere il vecchio dopo aver installato il nuovo... (parlo di upgradepkg come se fosse una persona.... mah... mi faccio paura da solo) per un comune essere umano come me la questione è un pò più difficile... non credi??
Inviato: lun 26 mar 2007, 19:52
da albatros
Beh, anche per me...
Ma allora?
Se vuoi risparmiare tempo dopo ti conviene impiegarne di più prima per scrivere lo slackbuild...
Inviato: lun 26 mar 2007, 20:23
da danix
in effetti quella che mi proponi è la cosa più sensata... mi stavo appunto documentando in proposito e ho trovato un sito,
http://www.slackbuilds.org che mette a disposizione un vasto repository di slackbuild per numerose applicazioni... credo che inizierò a prendere in considerazione l'idea di crearmi da solo i pacchetti tgz quando ne ho bisogno...
grazie mille per i chiarimenti...
Inviato: lun 26 mar 2007, 20:45
da targzeta
Ci sarebbe un altro modo.
prima di lanciare il
fai passere due minuti di orologio. Dopo aver installato il programma puoi lanciare questa funzione per la bash:
Codice: Seleziona tutto
scova_file ()
{
find / -not \( -wholename '/dev*' -or -wholename '/tmp*' -or -wholename '/proc*' -or -wholename '/sys*' -or\
-wholename '/etc/mtab' -or -wholename '/var*' -or -wholename '/root*' -or \
-wholename '/.reiserfs_priv*' \)\
-and -mount -mmin -2
}
in questo modo:
in modo da inviare tutti i file che sono stati modificati meno di un minuto prima nel file /tmp/casa.
NOTA che il -mount io lo uso perchè tutti i filesystem montati sono quelli miei privati (compresa la /home). Se hai il filesystem /usr montato, allora dovresti intensificare il filtro e togliere il -mount.
Quando vuoi disinstallare il programma qui ci sono tre funzioni bash che fanno al caso tuo:
Codice: Seleziona tutto
del_file ()
{
for file in $(</tmp/casa );
do
[ -f $file -o -L $file ] && rm $file;
done
}
del_dir ()
{
for file in $(</tmp/casa );
do
[ -d $file ] && rmdir $file 2>&1;
done | wc -l
}
del_all ()
{
del_file;
i=$(del_dir);
j=$(del_dir);
while (( $j != $i )); do
i=$j;
j=$(del_dir);
done
}
lanci dell_all e il gioco è fatto.
E' ovvio che se ti guardi il file /tmp/casa prima di lanciare del_all non fai male

.
Spina
Inviato: lun 26 mar 2007, 20:56
da danix
@spina
he he... ogni volta che leggo una tua risposta aumenta sempre di più la mia convinzione che tu ti diverta un sacco con la bash... grazie del suggerimento, è un bel walkaround...

Inviato: lun 26 mar 2007, 21:04
da targzeta
danix85 ha scritto:@spina
he he... ogni volta che leggo una tua risposta aumenta sempre di più la mia convinzione che tu ti diverta un sacco con la bash...
Sono molto contento, è veramente un bel complimento, grazie.
Spina
Inviato: lun 26 mar 2007, 21:25
da giberg
danix85 ha scritto: mi stavo appunto documentando in proposito e ho trovato un sito,
http://www.slackbuilds.org che mette a disposizione un vasto repository di slackbuild per numerose applicazioni...
Beh anche qui nel repository di Slacky trovi gli SlackBuilds
