Dove devo mettere il software che compilo da solo?


Risposte:


90

Regola empirica, almeno sui sistemi basati su Debian:

  • /usr/localper le cose che è "a livello di sistema", cioè /usr/localtende ad essere in difetto di una distro $PATH, e segue una gerarchia di directory standard di UNIX con /usr/local/bin, /usr/local/libe così via

  • /optper le cose che non ti fidi di fare a livello di sistema, con per-app-prefissi cioè /opt/firefox-3.6.8, /opt/mono-2.6.7e così via. Le cose qui richiedono una gestione più attenta, ma hanno anche meno probabilità di rompere il sistema, ed è più facile da rimuovere poiché basta eliminare la cartella e non c'è più.


interessante notare che molti programmi / applicazioni suggeriscono automaticamente di installarlo /optse lo si sudoinstalla.
HongboZhu,

50

Se davvero non vuoi che interferisca affatto, non metterlo da nessuna parte nel tuo $PATH.

Se lo desideri $PATH, almeno assicurati di non installarlo /usr/local. Ho scoperto che un sacco di software guarda lì anche se è installato dalla distribuzione in /usr.

Il mio modo preferito di installare software compilato su misura è nella mia $HOMEdirectory. In questo modo non devi usare sudonulla ed è ben separato dal resto del tuo sistema. Per esempio:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

E se lo desideri, puoi aggiungerlo /home/username/stage/binal tuo $PATH.


1
Sicuramente, usare la tua home directory è l'opzione migliore. IMO.
Bitek,

1
+1 concordato. Mi piace ~ / sbin per gli script bash / ruby ​​/ python e ~ / opt / ... per le installazioni compilate, con alias in ~ / bin.
Kris

4
+1 per l'utilizzo della tua home directory in quanto semplifica le cose; -1 per il suggerimento di evitare $ PATH - in realtà ci sono directory "riservate alle installazioni locali" secondo gli standard (ad es /usr/local.).
Riccardo Murri,

1
Il mio suggerimento di evitare / usr / local era basato sul desiderio (un po 'vago) del poster originale di non interferire con il software in pacchetto. Dato che ci sono molti software in pacchetto che "aiuteranno" guardando in / usr / local o in $ PATH, ho pensato che si qualificasse come interferente. Ma dipende davvero dalle esigenze e dagli obiettivi individuali di una persona. / usr / local può essere una scelta perfettamente valida in molte situazioni.
Sandy,

nessuno ha notato il malinteso completo della lettera "s" nel commento n. 2. che dovrebbe essere eliminato
meffect

20

FHS dice di metterlo in / usr / local dove le distribuzioni non dovrebbero toccarlo. /usr/local/binper i binari /usr/local/srcper l'origine e /usr/local/libper le librerie. Vedi le specifiche FHS per maggiori informazioni


E la configurazione? Supponiamo che abbia installato MySQL senza utilizzare il gestore pacchetti, dovrei ancora utilizzarlo /etc/mysqlper la configurazione?
Hubro,

Ho appena notato che esiste una /usr/local/etccartella per impostazione predefinita, immagino che dovrei usarla ... :-)
Hubro

10

Il più delle volte, mi piace inserire le mie cose compilate /opt. È una specie di posto pseudo-standard. Puoi anche considerare /usr/local, ma preferisco mantenere le mie cose isolate al 100%.


1
la distro tende a mettere parecchie cose in / opt (di solito pacchetti proprietari) / opt non dice che la distro non può toccarlo. tuttavia dice che su / usr / local
xenoterracide il

1
Non ho mai visto una distribuzione distribuita /opt, tuttavia ho visto molte volte dove /usr/localè disseminata di spazzatura che proviene dalla distribuzione
Scott Anderson

la distro che uso mi piace inserire java / opt Ho visto anche acrobat reader. se stanno inserendo oggetti in / usr / local, ignorano l'FHS che dice che deve essere protetto dall'essere sovrascritto negli aggiornamenti di sistema.
xenoterracide,

A ciascuno il suo, immagino. FHS è bello, ma penso che a volte venga ignorato.
Scott Anderson,

L'unica cosa in cui abbia mai visto collocare i pacchetti di distro /usr/localerano le gerarchie di directory che erano parallele a quelle dell'albero standard e forse indicizzavano i file per cose come TeX.
Phil Miller,

9

Mettili a /usr/local/src.

Quello che faccio è estrarre la fonte in questa directory. Creerà un percorso simile

/usr/local/src/postgresql-8.3.7

Quindi creo un link simbolico ad esso:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Fai tutto il tuo edificio /usr/local/src/postgresql.

Fare le cose in questo modo aiuta quando è necessario passare da una versione all'altra tra documenti e versioni.


1
+1 per indicare la logica e il modo in cui l'OP può applicarla, compreso il controllo delle versioni.
Samt

6

Questo mi ricorda che devo usare checkinstall più spesso! In questo modo faccio solo il solito

 ./configure
 make

seguito da

 sudo checkinstall

per creare un file .deb ...


2
Non risponde alla domanda
JBentley,

5

Se c'è possibilità, suggerirei di compilare il tuo software e quindi di creare un pacchetto FC (credo che stia usando yum per installare i pacchetti software). Quindi è possibile installare quel pacchetto del proprio software compilato e rimuoverlo senza incasinare l'intero sistema.


5

Se vuoi installare e rimuovere facilmente diverse applicazioni che hai creato tu stesso, puoi usare Stow come un semplice gestore di pacchetti.


5

Secondo FHS , /usr/local/viene utilizzato per le applicazioni compilate dall'origine, mentre /opt/viene utilizzato per applicazioni di terze parti non supportate dal fornitore del sistema operativo.


4

Due cose che consiglierei:

A livello di sistema: usa stow e installa in / usr / local / stow / versione-pacchetto. Quindi puoi passare facilmente da una versione all'altra.

A casa mia, o se non ho i permessi di scrittura / usr / local, installo personalmente i programmi sotto ~ / .local, che è suggerito dallo standard XDG .

Puoi anche usare stow localmente, anche se non l'ho mai fatto :)


3

Ho un setup un po 'diverso rispetto alla maggior parte delle persone perché faccio molto sviluppo. Ho una directory / home / jackson / bin / in cui installo roba e ho modificato il mio .bashrc aggiungendo questo:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Non lo farei per tutto, ma è bello durante lo sviluppo.


3

In realtà non è poi così difficile creare deb o rpm da un tarball sorgente. In questo modo, è possibile utilizzare le funzionalità del gestore pacchetti della distro per mantenere pulito il sistema. Questo è quello che faccio, il più delle volte: basta creare un piccolo numero di giri.


2

se stai compilando un'applicazione, puoi aggiungere il suo percorso eseguibile nella variabile ENV PATH. questo non avrà alcun impatto sugli altri utenti.


Mi chiedo perché il down voti? +1 al tipo di "bilanciamento"
phunehehe,

Mi chiedo anche perché :-). Ho usato la stessa soluzione per usare cscope dove non ho i permessi di installazione.
Hemant,

@phunehehe Probabilmente perché non tenta nemmeno di rispondere alla domanda. La domanda chiede dove posizionare il software. Questa risposta fornisce un suggerimento su cosa potresti fare dopo averlo posizionato da qualche parte. Potrebbe essere migliorato dando alcuni suggerimenti su quali cartelle usare.
JBentley,

2

C'è sempre la possibilità di "metterlo dove appartiene" ma prima di tutto scrivi un semplice numero di giri.


1

Se si desidera che l'applicazione sia disponibile per tutti gli utenti del sistema e si disponga delle autorizzazioni necessarie, utilizzare / opt. Se vuoi che l'applicazione sia disponibile solo per te (e root), usa / home / username


0

Il modo più semplice per farlo è quello di prendere il pacchetto sorgente ( .src.rpmper RPMites), decomprimerlo, hackerare il nuovo sorgente / configurazione / qualunque cosa in esso, cambiare la versione in modo appropriato e compilare. L'installazione di questo rende il gestore pacchetti consapevole del nuovo pacchetto, consente di considerarlo per le dipendenze e disinstallare / aggiornare.

Questo è un lavoro ingrato la prima volta, ma se esce una nuova versione (o qualche patch critica), è più semplice aggiornarlo. Un altro vantaggio è che è possibile creare il proprio repository con software locale, da condividere ad esempio con le macchine in un laboratorio.


0

Scrivi un RPM, non è difficile, ha delle linee guida su dove mettere le cose e semplifica la disinstallazione.

Se lo fai, installa i file sotto /usre non sotto /usr/local, come tutti gli altri file che arrivano attraverso il sistema di packaging.

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.