Quando installo un semplice programma, spesso usa make && make install
e spesso non ha nemmeno una disinstallazione obiettivo.
Se desidero aggiornare un programma, è un protocollo standard presumere che si riscriva senza problemi sul vecchio programma?
Come tengo traccia di questi programmi; la maggior parte delle persone semplicemente "spara e dimentica" e, in caso contrario, disinstalla target è dato devo cancellare tutto manualmente?
Risposta accettata:
Installa ogni programma in un albero di directory dedicato e usa Stow o XStow per far apparire tutti i programmi in una gerarchia comune. Stow crea collegamenti simbolici dalla directory specifica del programma a un albero comune.
Più in dettaglio, scegli una directory di primo livello, ad esempio /usr/local/stow
. Installa ogni programma in /usr/local/stow/PROGRAM_NAME
. Ad esempio, fai in modo che i suoi eseguibili siano installati in /usr/local/stow/PROGRAM_NAME/bin
, le sue pagine man in /usr/local/stow/man/man1
e così via. Se il programma utilizza autoconf, esegui ./configure --prefix /usr/local/stow/PROGRAM_NAME
. Dopo aver eseguito make install
, esegui stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
E ora avrai collegamenti simbolici come questi:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
Puoi facilmente tenere traccia di quali programmi hai installato elencando il contenuto di stow
directory e sai sempre a quale programma appartiene un file perché è un collegamento simbolico a una posizione nella directory di quel programma. Disinstalla un programma eseguendo stow -D PROGRAM_NAME
quindi eliminando la directory del programma. Puoi rendere un programma temporaneamente non disponibile eseguendo stow -D PROGRAM_NAME
(esegui stow PROGRAM_NAME
per renderlo nuovamente disponibile).
Se vuoi passare rapidamente da una versione all'altra dello stesso programma, usa /usr/local/stow/PROGRAM_NAME-VERSION
come directory del programma. Per eseguire l'aggiornamento dalla versione 3 alla versione 4, installa la versione 4, quindi esegui stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.
Le versioni precedenti di Stow non vanno molto oltre le basi che ho descritto in questa risposta. Le versioni più recenti, così come XStow (che non è stato mantenuto di recente) hanno funzionalità più avanzate, come la possibilità di ignorare determinati file, gestire meglio i collegamenti simbolici esistenti al di fuori della directory stow (come man -> share/man
), gestisce automaticamente alcuni conflitti (quando due programmi forniscono lo stesso file), ecc.
Se non hai o non vuoi usare l'accesso come root, puoi scegliere una directory nella tua home directory, ad es. ~/software/stow
. In questo caso, aggiungi ~/software/bin
al tuo PATH
. Se man
non trova automaticamente le pagine man, aggiungi ~/software/man
al tuo MANPATH
. Aggiungi ~/software/info
al tuo INFOPATH
, ~/software/lib/python
al tuo PYTHONPATH
e così via a seconda dei casi.