Qual è l'equivalente di Linux in C: \ Programmi?


64

Capisco che in Windows, oltre a Linux e Unix, un programma | applicazione | software può essere installato in qualsiasi directory. Inoltre, se i pacchetti vengono installati utilizzando il sistema di packaging della distribuzione, i file verranno collocati nella posizione corretta.

Ma a volte, un'installazione software richiede un percorso per posizionare i file. Nel caso di una distribuzione Linux dove si trova questo posto predefinito ( C:\Program Fileso C:\progra~1equivalente)? È diverso per varie distribuzioni? Se sì, dove questo sarebbe per RHEL, Susee Ubuntu?

Risposte:


60

Il Linux Documentation Project ha una descrizione della gerarchia del filesystem Linux in cui spiegano le diverse cartelle e il loro significato (in parte storico).

Come già indicato xenoterracide /bine /optsono le directory standard che possono essere confrontate con "Programmi" su Windows.

/bincontiene diversi utili comandi utili sia all'amministratore di sistema che agli utenti non privilegiati. Di solito contiene i gusci come bash, csh, ecc .... e comandi come comunemente usato cp, mv, rm, cat, ls.

( citato da TLDP )

/optè riservato a tutti i pacchetti software e aggiuntivi che non fanno parte dell'installazione predefinita. Ad esempio, i pacchetti StarOffice, Kylix, Netscape Communicator e WordPerfect si trovano normalmente qui.

( citato da TLDP )


9
/ Opt non viene utilizzato solo per i pacchetti che non sono contenuti nei repository? Le cartelle dell'applicazione per inkscape, gimp, rhythmbox ecc. Si trovano in / usr / share. Non sarebbe piuttosto l'equivalente?
c76c3r8c42b347r8,

5
Vedi linuxfoundation.org/en/FHS per informazioni più recenti sulla gerarchia dei filesystem (FHS). (Nota: al momento il sito non è attivo, ma dovrebbe essere eseguito il backup a breve).
jw013,

@Toxicbits: almeno su Gentoo in / opt ci sono pacchetti binari, specialmente quelli che non possono essere installati su / usr a causa di una gerarchia di filesystem non standard.
Maciej Piechotka,

TLDP sembra fantastico! Bene, su una nota a margine; la prima volta che ho visto TLDP, ho pensato: "troppo a lungo non ... picco? cosa?"
Ege Özcan,

3
Questo non è corretto / bin contiene solo programmi eseguibili. La directory dei file di programma di Windows contiene una sottodirectory per ogni applicazione installata, che contiene tutti gli eseguibili, le dll, i file di dati e tutto il resto necessario / spedito con l'applicazione.
psusi

45

Non esiste un equivalente diretto. La struttura delle directory è molto diversa. In Windows, hai una singola directory per ogni pacchetto / software installato che contiene tutti i file relativi (ad es C:\Program Files\MyProgram.). Sotto Linux ogni software è "disperso" in molte directory in base al tipo di file e ad altre regole.

Ad esempio, possiamo esaminare dove xscreensaversono installati diversi file relativi al programma:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

Non ti preoccupare, di solito quando un programma di installazione chiede dove installare a, la risposta corretta è una delle seguenti: /, /opt, /usr,/usr/local

Come puoi vedere, quasi tutti i (1) file di xscreensaversono installati /usrsecondo una semplice regola: eseguibili in /usr/bin, pagine di manuale in /usr/share/man, documentazione in /usr/share/doc/packages/PROGRAMNAMEe così via.

Quando un programma di installazione richiede un'installazione prefix, in genere desidera ora il percorso di base in base al quale installare il programma. Nel mio xscreensaveresempio lo è /usr.

Come semplice regola: /dovrebbe contenere solo i programmi necessari per l'avvio del sistema (come C:\windows\system32), /usr/localdovrebbe contenere i programmi necessari solo su quel computer univoco, /opt(2) tutti i programmi opzionali che hanno una struttura di directory non standard e /usrtutto il software standard .

In ogni caso, esiste uno standard che definisce in dettaglio tutte queste regole: Filesystem Hierarchy Standard

(1) i file di configurazione dell'intero sistema devono risiedere in /etc

(2) abbastanza obsoleto sotto Linux


/optè preferito per software di terze parti /usr/localda un po 'di tempo.
Steve-o

7
Solo una spiegazione, /usr/sharesi chiama "condividi" perché è condivisa tra architetture diverse (documentazione, script, immagini), mentre /usr/lib*è per file dipendenti dall'architettura (e non eseguibili, a cui /usr/bin).
eudoxos,

12

Ususually, /bin, /usr/bin, /usr/local/bin, o /opt/bin. Penso /usr/bine /opt/binsono i più vicini ai Programmi, perché di solito sono per i binari non critici del sistema installati dall'amministratore di sistema, sebbene a differenza di Windows entrambi contengano programmi installati con un gestore di pacchetti. Dove si /usr/local/bintrova il software impacchettato non distro. /binè per binari di sistema critici come /bin/sh.


perché quattro opzioni? /bin, /usr/bin, /usr/local/binO /opt/bin. Non esiste una posizione standard? Il motivo per cui lo chiedo è perché sto installando software su alcune macchine virtuali e la posizione predefinita porta alla quale ogni partizione ha lo spazio più grande. Voglio cambiare lo spazio di partizione nella directory in cui di solito va il software e non posizionare il software in modo diverso in tutte le macchine virtuali.
Thomas,

1
lo standard specifica più posizioni idk perché il nome percorso è inattivo ma ecco un link all'FHS memorizzato nella cache che va in una maggiore definizione di cosa sono e in realtà dipende molto da ciò che si sta installando. Anche RHEL, Suse e Ubuntu sono diversi, quindi possono mettere la stessa cosa in posizioni leggermente diverse. /optad esempio, viene solitamente utilizzato per software proprietario.
xenoterracide,

Inoltre di solito ... in genere quelli sono tutti sulla stessa partizione ... a volte /usr/è una partizione separata.
xenoterracide,

1
Alcune persone (ad esempio il progetto Hurd) sostengono che la discriminazione /bine /usr/binsia ormai obsoleta; storicamente, roba critico di sistema sarebbe in /bin, /lib... (direttamente nella radice), mentre /usr(con /usr/bin, /usr/lib...) sarebbe montato successivamente (forse sulla rete), non essendo necessaria per la funzionalità di base del sistema.
eudoxos,

1
@Thomas, /optnon dovrebbe uscire. Alcune persone in passato pensavano che fosse una buona idea avere alcune applicazioni in una posizione diversa da tutte le altre app. /binè sulla partizione di root. Poiché su alcuni sistemi, lo spazio sulla partizione di root è limitato, i binari non essenziali (ovvero tutte le applicazioni utente) sono stati spostati /usr/bin.
Jan

8

Dai un'occhiata man hierè una "Descrizione della gerarchia del file system".


3

Come altri hanno sottolineato, i programmi installati tramite il gestore pacchetti sono distribuiti su più directory. Mentre in genere viene trovato il binario /usr/bin, i file di configurazione dell'intero sistema sono presenti /etce così via.

Se un'applicazione non viene installata tramite il gestore pacchetti, i file devono essere installati in un luogo in cui non interferiscono con il gestore pacchetti. Questo posto è /usr/local.

Se viene richiesto un percorso di installazione, la scelta più comune sarebbe /usr/local/appname


3

Digita il echo $PATHtuo terminale per vedere i percorsi in cui la shell cercherà per trovare un comando. Cerca un file nell'ordine in cui è stato stampato.


1
Questo non risponde a ciò che l'OP ha chiesto.
Francesco Turco,

1

Bene, non troverai tutte le tue soluzioni /bine sbinperché contengono principalmente i comandi di sistema (cioè i comandi utilizzati dal sistema).

/usr/binpuò essere idealmente chiamato il "Program Files"mondo di unix. Per quanto riguarda /optpochissimi pacchetti scelgono di usare quella posizione per l'installazione, lo stesso vale per i pacchetti che usano /etc/o /varcome posizioni

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.