Was ist das Linux-Äquivalent zu C: \ Programme?

64

Ich verstehe, dass sowohl unter Windows als auch unter Linux und Unix ein Programm | eine Anwendung | Software in einem beliebigen Verzeichnis installiert werden kann. Wenn Pakete mit dem Paketsystem der Distribution installiert werden, werden die Dateien am richtigen Speicherort abgelegt.

Manchmal werden Sie bei einer Softwareinstallation aufgefordert, einen Pfad zum Ablegen von Dateien anzugeben. Wo befindet sich im Falle einer Linux-Distribution dieser Standardspeicherort ( C:\Program Filesoder ein C:\progra~1gleichwertiger Speicherort)? Ist es für verschiedene Distributionen unterschiedlich? Wenn ja, wo wäre dies RHEL, Suseund Ubuntu?

Thomas
quelle

Antworten:

60

Das Linux-Dokumentationsprojekt enthält eine Beschreibung der Linux-Dateisystemhierarchie , in der die verschiedenen Ordner und ihre (teilweise historische) Bedeutung erläutert werden.

Wie Xenoterracide bereits angedeutet hat /binund /optdie Standardverzeichnisse sind, die unter Windows mit "Programme" verglichen werden können.

/binenthält mehrere nützliche Befehle, die sowohl für den Systemadministrator als auch für nicht privilegierte Benutzer von Nutzen sind. Es enthält in der Regel die Schalen wie bash, cshusw .... und am häufigsten Befehle wie verwendet cp, mv, rm, cat, ls.

( zitiert aus TLDP )

/optist für alle Software- und Add-On-Pakete reserviert, die nicht Teil der Standardinstallation sind. Beispielsweise finden Sie hier normalerweise StarOffice-, Kylix-, Netscape Communicator- und WordPerfect-Pakete.

( zitiert aus TLDP )

Axel Knauf
quelle
9
Wird / opt nicht nur für Pakete verwendet, die nicht in den Repos enthalten sind? Die Anwendungsordner für inkscape, gimp, rhythmbox usw. befinden sich in / usr / share. Wäre das nicht eher das Äquivalent?
c76c3r8c42b347r8
5
Weitere Informationen zur Dateisystemhierarchie (FHS) finden Sie unter linuxfoundation.org/de/FHS . (Hinweis: Die Website ist derzeit nicht verfügbar, sollte jedoch in Kürze wieder verfügbar sein.)
jw013
@Toxicbits: Zumindest unter Gentoo in / opt gibt es Binärpakete - insbesondere solche, die aufgrund einer nicht standardmäßigen Dateisystemhierarchie nicht auf / usr installiert werden können.
Maciej Piechotka
TLDP scheint großartig! Nun, eine Randnotiz; Als ich TLDP zum ersten Mal sah, dachte ich: "Zu lange hat nicht ... Spitze? Was?"
Ege Özcan
3
Das ist falsch. / bin enthält nur ausführbare Programme. Das Windows-Programmdateiverzeichnis enthält ein Unterverzeichnis für jede installierte Anwendung, das alle ausführbaren Dateien, DLLs, Datendateien und alles andere enthält, was von der Anwendung benötigt wird bzw. mit der Anwendung geliefert wird.
Psusi
45

Es gibt kein direktes Äquivalent. Die Verzeichnisstruktur ist sehr unterschiedlich. Unter Windows haben Sie ein einziges Verzeichnis für jedes installierte Paket / jede installierte Software, das / die alle Dateien enthält, die sich auf (z C:\Program Files\MyProgram. B. ) beziehen . Unter Linux ist jede Software nach Dateityp und einer anderen Regel in vielen Verzeichnissen "verteilt".

Als Beispiel können wir untersuchen, wo verschiedene xscreensaverprogrammbezogene Dateien installiert sind:

/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
[ ... ]

Keine Sorge, in der Regel , wenn ein Installationsprogramm fragt , wo zu installieren , um die richtige Antwort ist eine der folgenden: /, /opt, /usr,/usr/local

Wie Sie sehen, werden alle (1) Dateien von nach einer einfachen Regel xscreensaverinstalliert /usr: ausführbare Dateien in /usr/bin, Handbuchseiten in /usr/share/man, Dokumentation in /usr/share/doc/packages/PROGRAMNAMEund so weiter.

Wenn ein Installationsprogramm für eine Installation fragt prefix, in der Regel will er den nun Basis Pfad , unter dem das Programm installieren. In meinem xscreensaverBeispiel ist es /usr.

Als einfache Regel: /nur Programm enthalten, das System zu booten (wie benötigt werden C:\windows\system32), /usr/localsollten die Programme enthalten , die nur auf diesem einzigartigen Computer benötigt werden, /opt(2) alle optionalen Programme , die nicht Standard - Verzeichnisstruktur und haben /usralle Standard - Software .

In jedem Fall gibt es einen Standard , der alle diese Regeln im Detail definiert: Dateisystem-Hierarchie-Standard

(1) Systemweite Konfigurationsdateien müssen sich in befinden /etc

(2) ziemlich veraltet unter Linux

andcoz
quelle
/optwird für Software von Drittanbietern /usr/localseit geraumer Zeit vorgezogen .
Steve-o
7
Nur eine Erklärung, /usr/sharewird "Teilen" genannt, da es zwischen verschiedenen Architekturen (Dokumentation, Skripten, Bildern) geteilt wird, während /usr/lib*es sich um architekturabhängige Dateien handelt (und nicht um ausführbare Dateien, die verwendet werden sollen /usr/bin).
Eudoxos
12

USusually, /bin, /usr/bin, /usr/local/bin, oder /opt/bin. Ich denke /usr/binund bin /opt/binden Programmdateien am nächsten, weil sie normalerweise für nicht systemkritische Binärdateien bestimmt sind, die vom Systemadministrator installiert werden, obwohl beide im Gegensatz zu Windows Programme enthalten, die mit einem Paketmanager installiert wurden. Wo /usr/local/binist für Nicht-Distribution-Software. /binist für systemkritische Binärdateien wie /bin/sh.

Xenoterracid
quelle
warum vier Möglichkeiten? /bin, /usr/bin, /usr/local/binOder /opt/bin. Gibt es nicht einen Standardstandort? Der Grund, den ich frage, ist, dass ich Software auf einigen VMs installiere und der Standardspeicherort für jede Partition den größten Speicherplatz hat. Ich möchte den Partitionsbereich in das Verzeichnis ändern, in das die Software normalerweise wechselt, und die Software nicht auf allen VMs anders platzieren.
Thomas
1
Der Standard gibt an, warum der Pfadname nicht verfügbar ist. Hier ist jedoch ein Link zum zwischengespeicherten FHS, der ausführlicher erläutert, was dies ist, und es hängt stark davon ab, was Sie installieren. Auch RHEL, Suse und Ubuntu sind unterschiedlich, so dass sie das Gleiche an leicht unterschiedlichen Orten platzieren können. /optBeispielsweise wird normalerweise proprietäre Software verwendet.
Xenoterracide
Auch normalerweise ... normalerweise befinden sich alle auf derselben Partition ... manchmal /usr/ist es eine separate Partition.
Xenoterracide
1
Einige Leute (z. B. das Hurd-Projekt) argumentieren, dass die /binund die /usr/binDiskriminierung jetzt überholt sind; historisch, systemkritische Sachen würden sein /bin, /lib... (direkt in der Wurzel), während /usr(mit /usr/bin, /usr/lib, ...) montieren später (vielleicht über das Netzwerk) werden würde, nicht notwendig für die grundlegende Funktionalität des Systems zu sein.
Eudoxos
1
@ Thomas, /optsollte nicht beendet werden. Einige Leute dachten in der Vergangenheit, es sei eine gute Idee, einige Anwendungen an einem anderen Ort als alle anderen Apps zu haben. /binbefindet sich auf der Root-Partition. Da auf einigen Systemen der Speicherplatz auf der Root-Partition begrenzt ist, wurden nicht unbedingt erforderliche Binärdateien (dh alle Benutzeranwendungen) nach verschoben /usr/bin.
Jan
8

Schauen man hierSie sich die "Beschreibung der Dateisystemhierarchie" an.

vasily-vm
quelle
3

Wie bereits erwähnt, sind die über den Paketmanager installierten Programme auf mehrere Verzeichnisse verteilt. Während die Binärdatei normalerweise gefunden wird /usr/bin, befinden sich die systemweiten Konfigurationsdateien in /etcusw.

Wenn eine Anwendung nicht über den Paketmanager installiert wird, sollten die Dateien an einem Ort installiert werden, an dem sie den Paketmanager nicht beeinträchtigen. Dieser Ort ist /usr/local.

Wenn Sie nach einem Installationspfad gefragt werden, ist dies die häufigste Wahl /usr/local/appname

Jan
quelle
3

Geben Sie echo $PATHIhr Terminal ein, um die Pfade anzuzeigen, in denen die Shell nach einem Befehl sucht. Es wird nach einer Datei in der Reihenfolge gesucht, in der sie gedruckt wurde.

Jaseem
quelle
1
Dies entspricht nicht den Anforderungen des OP.
Francesco Turco
1

Nun, Sie werden nicht alle Ihre Lösungen in /binund finden, sbinweil sie hauptsächlich Systembefehle enthalten (dh die vom System verwendeten Befehle).

/usr/binkann idealerweise die "Program Files"von Unix-Welt genannt werden. In Bezug auf /optsehr wenige Pakete, die diesen Speicherort für die Installation verwenden, gilt dies auch für Pakete, die /etc/oder /varals Speicherorte verwenden

pankajdoharey
quelle