La stragrande maggioranza dei .debpacchetti, 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/bino /usr/sbin(o /usr/gamesse si tratta di un gioco), entrano le librerie condivise, entrano /usr/libi dati condivisi indipendenti dalla piattaforma /usr/share, entrano i file di intestazione /usr/includee entra automaticamente il codice sorgente installato /usr/src.
Una piccola percentuale di pacchetti utilizza /come prefisso. Ad esempio, il bashpacchetto inserisce l' basheseguibile /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 .debpacchetti, principalmente quelli creati con Quickly , crea una cartella specifica per pacchetto all'interno /opte 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/libo /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 /usrprefisso e quindi sovrascriverebbero le installazioni degli stessi programmi dai .debpacchetti. In genere puoi impedirlo eseguendolo ./configure --prefix=/usr/localinvece che ./configurequando 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 /usre 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/bino ovunque siano installati gli eseguibili nella PATHvariabile di ambiente e appare prima della corrispondente /usrdirectory 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 /usranziché /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 uninstallnella 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 .debpacchetto 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 .debpacchetto 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.)