La stragrande maggioranza dei .deb
pacchetti, indipendentemente dal fatto che siano forniti o meno dai repository ufficiali, si installa con il prefisso /usr
.
Ciò significa che gli eseguibili che devono essere eseguiti dall'utente entrano /usr/bin
o /usr/sbin
(o /usr/games
se si tratta di un gioco), entrano le librerie condivise, entrano /usr/lib
i dati condivisi indipendenti dalla piattaforma /usr/share
, entrano i file di intestazione /usr/include
e entra automaticamente il codice sorgente installato /usr/src
.
Una piccola percentuale di pacchetti utilizza /
come prefisso. Ad esempio, il bash
pacchetto inserisce l' bash
eseguibile /bin
, non /usr/bin
. Questo è per i pacchetti che forniscono lo stretto necessario per l'esecuzione in modalità utente singolo (come la modalità di ripristino) e per avviare la modalità multi-utente (ma ricordate, che spesso include funzionalità per montare alcuni tipi di condivisioni di rete ... nel caso in cui /usr
è un file system remoto).
Una piccola percentuale di .deb
pacchetti, principalmente quelli creati con Quickly , crea una cartella specifica per pacchetto all'interno /opt
e vi mette tutti i file. Oltre a ciò, la maggior parte delle volte /opt
è la posizione utilizzata dal software installato da un programma di installazione eseguibile che non utilizza il gestore pacchetti del sistema ma non comporta la compilazione dall'origine. (Ad esempio, se installi un programma proprietario come MATLAB, probabilmente lo inserirai /opt
.)
Al contrario di tutto ciò, quando scarichi un archivio di origine (o ottieni codice sorgente da un sistema di controllo di revisione come Bazaar o git), lo costruisci e lo installi, di solito si installa nel prefisso /usr/local
(a meno che tu non gli dica di farlo altrimenti). Ciò significa che i file eseguibili vanno in /usr/local/bin
, /usr/local/lib
o /usr/local/games
, le librerie in /usr/local/lib
, e così via.
Ci sono alcune eccezioni a questo: alcuni programmi, per impostazione predefinita, si installano nel /usr
prefisso e quindi sovrascriverebbero le installazioni degli stessi programmi dai .deb
pacchetti. In genere puoi impedirlo eseguendolo ./configure --prefix=/usr/local
invece che ./configure
quando li costruisci. Sottolineo nuovamente che di solito questo non è necessario.
(È per questo motivo che ha molto senso inserire il codice sorgente che stai costruendo e che installerai per l'uso a livello di sistema /usr/local/src
, che esiste a tale scopo.)
Supponendo che la versione in pacchetto sia installata /usr
e la versione installata dal sorgente sia in /usr/local
:
I file dal pacchetto installato non verranno sovrascritti.
In genere, la versione più recente verrà eseguita quando si richiama manualmente il programma dalla riga di comando (presupponendo /usr/local/bin
o ovunque siano installati gli eseguibili nella PATH
variabile di ambiente e appare prima della corrispondente /usr
directory prefissata, ad esempio /usr/bin
).
Ma potrebbero esserci dei problemi con ciò che i lanciatori vengono creati e resi accessibili attraverso i menu o la ricerca. Inoltre, se hai installato più di una versione di una libreria in luoghi diversi, può diventare un po 'più complicato determinare quale sarà utilizzato da quale software.
Se non stai effettivamente utilizzando entrambe le versioni del programma o della libreria, spesso dovresti rimuovere quella che non stai utilizzando, anche se in situazioni limitate potresti voler mantenere un pacchetto installato per soddisfare le dipendenze.
Tuttavia, se per qualsiasi motivo i file vengono sovrascritti (ad esempio, se il codice sorgente è installato /usr
anziché /usr/local
):
- Il gestore pacchetti non saprà nulla su come è stato modificato il software installato. Penserà che la vecchia versione sia installata. Potrebbero verificarsi problemi. Dovresti evitare questo. Se hai creato questa situazione, dovresti disinstallare il software che hai installato dal sorgente (di solito con
sudo make uninstall
nella directory), quindi disinstallare il pacchetto oi pacchetti che forniscono i file che sono stati sovrascritti (poiché non verranno ripristinati disinstallando la versione installata dalla fonte). Quindi reinstallare la versione che si desidera avere./usr/local/src/program-or-library-name
Per quanto riguarda le dipendenze soddisfacenti:
Se esiste un .deb
pacchetto che dipende dal software installato dall'origine e richiede la versione installata dall'origine (o successiva), tale pacchetto non verrà installato correttamente. (O, per essere più precisi, potresti essere in grado di "installarlo" ma non sarà mai "configurato", quindi non sarai in grado di usarlo.) Le dipendenze sono risolte da quali versioni di pacchetti sono installati, non da quale software hai effettivamente.
Allo stesso modo, il software tenterà almeno di installarsi completamente anche se sono stati eliminati manualmente i file forniti dai pacchetti da cui dipende il software da installare. (Non dovresti generalmente provare a sfruttarlo per qualsiasi scopo. Il gestore di pacchetti che opera in base a informazioni false è quasi sempre una cosa negativa.)
Pertanto, se non riesci a trovare un pacchetto che fornisce la versione del software di cui hai bisogno, potresti dover creare il tuo .deb
pacchetto dal software che hai compilato e installarlo da quel pacchetto. Quindi il gestore dei pacchetti saprà cosa sta succedendo. Creare un pacchetto per uso personale, che non è necessario per funzionare correttamente sui computer di altre persone, in realtà non è molto difficile. (Ma sento che potrebbe essere al di fuori del campo di applicazione della tua domanda, come è attualmente formulato.)