Was ist das Linux-Äquivalent zu Windows-Programmdateien?

179

Unter Windows werden die meisten Anwendungen und Anwendungsdaten in einem speziellen Verzeichnis gespeichert, das als C:\Program Files(und gelegentlich C:\Program Files (x86)) bezeichnet wird. Was ist das Ubuntu / Linux-Äquivalent zu diesem Pfad? Gibt es überhaupt einen?

Kaz Wolfe
quelle
2
Wenn Sie wissen möchten, wo sich die Dateien eines bestimmten Pakets befinden, können Sie den Synaptic-Paketmanager verwenden. Suchen Sie einfach nach dem Paket und sehen Sie sich die installierten Dateien an.
Asmerito
6
Ich denke, diese Frage würde durch einen Grund für den Wunsch nach einem Äquivalent verbessert . Es gibt einen Unterschied zwischen "Mal sehen, was ich installiert habe und was ich ausführen kann" und "Ich versuche, das Speicherspiel dieser / jener Software zu finden, damit ich damit experimentieren kann". und vielleicht sogar "Ich vermute, dass ich eine Einstellungsdatei / Ini-Datei für dieses Programm optimieren kann". Das können alles "Programmdateien" sein, aber hier gibt es unterschiedliche Antworten.
Nanne
4
Verwandt (sollte aber wahrscheinlich nicht als Duplikat betrachtet werden): Wie wird das Layout des Ubuntu-Dateisystems verstanden?
Eliah Kagan

Antworten:

104

/binund /usr/binhier befinden sich die Skripte, die die Programme starten. Das direkte Äquivalent zu "Programmdateien" ist wahrscheinlich /usr/share( siehe Dateisystem-Hierarchie-Standard ). Dieses Verzeichnis enthält die verschiedenen Unterstützungsdateien für die meisten Programme.

Nautilus zeigt / usr / share

Es gibt jedoch wahrscheinlich keine direkte Entsprechung, da beispielsweise Bibliotheksdateien auf dem gesamten System (in /lib) gemeinsam genutzt werden und die Optionen entweder vom Benutzer angegeben (im Basisverzeichnis des Benutzers) oder universell in gespeichert sind /etc.

Wenn Sie also ein Programm über eine Deb-Datei, ein Repository oder einen Build installieren, werden wahrscheinlich Dateien an all diesen Speicherorten abgelegt.

[EDIT] Und wie andere bemerken, gibt es auch /sbinund /usr/sbin. Plus /usr/local/bin, /opt/binund sogar /usr/games/. Also definitiv kein direkter Vergleich dazu c:\program files!

Scaine
quelle
4
Wie wäre es /opt? Ich habe gesehen, dass viele (normalerweise Closed-Source- oder App-basierte) Programme in ähnlicher Weise wie zuvor enthalten sind Program Files.
Kupiakos
Scheint so zu sein, mit dem Aufkommen des Ubuntu Software Centers, das dort seine Spiele anbietet. Aber auch dann kaum ein direkter Vergleich, oder? Könnte aber heutzutage das Nächste sein.
Scaine
Siehe askubuntu.com/a/294492/41499 für das, was das /optfür Verzeichnis ist.
Gerhard Burger
/usr/local/binist ein semi-allgemeiner Speicherort für Software, die von einem Benutzer / Unternehmen möglicherweise nicht allgemein verwendet wird.
Mark Stewart
Und wie ist dieses Betriebssystem besser als Windows? Ich habe darauf umgeschaltet, um zu versuchen, ob es für die Webentwicklung geeignet ist. Aber ich kann diese Hierarchie Dinge nicht verstehen ... Ich habe PhpStorm installiert und es ist jetzt in 1238128 Ordnern ..
Toma
84

Späte Antwort - Ich habe eine Roadmap für Anfänger erstellt. Wenn sie nach einer Datei suchen, aber nicht wissen, wo sie suchen sollen, können sie mithilfe der Karte grob navigieren. Sie können eine hallo-res PNG herunterladen hier . Den dazugehörigen Beitrag finden Sie hier . Ich werde weiterhin sowohl die Datei als auch den Beitrag aktualisieren, wenn es die Zeit erlaubt, und dabei hilfreiche Kommentare einfügen.

d4nyll
quelle
6
Diese Antwort wird ignoriert und sollte oben stehen.
Voldemort
83

BEARBEITEN : Siehe auch die Antwort von d4nyll für eine ausgezeichnete und anfängerfreundliche Karte!

Lesen Sie meine Antwort weiter unten, um mehr darüber zu erfahren, was die PATHUmgebungsvariable ist, welche .desktopDateien es gibt und wie Sie mit verschiedenen Linux-Befehlen ein bestimmtes Programm finden.

Ursprüngliche Antwort:


Es gibt keine einfache Antwort.

/bin, /usr/binUnd/usr/share

Wie in den anderen Antworten erwähnt, finden Sie die meisten ausführbaren Dateien unter /binoder /usr/bin, und die Unterstützungsdateien werden unter installiert /usr/share.

/usr/local und /opt

Es gibt jedoch mehr Verzeichnisse, in denen Ubuntu Anwendungen installiert. Die PATHVariable, die festlegt, wo nach einem eingegebenen Befehl gesucht werden soll, könnte Ihnen einen Hinweis geben, meiner sieht wie folgt aus ( echo $PATHin einem Terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Wie Sie sehen, ist einige Software in installiert /usr/localund hat ein eigenes Verzeichnis und bin. Ein weiterer Ort, an dem viele Programme installiert sind, ist /opt. Die Eigenschaften dieser Speicherorte werden durch den Dateisystem-Hierarchie-Standard erläutert , der sehr gut gelesen werden kann. Leider ist der Unterschied zwischen /optund /usr/localnicht sehr gut erklärt, jemand auf dem Unix-Stack-Exchange hatte eine ausführlichere Erklärung:

  • /usr/localHier können vom Administrator erstellte Dateien installiert werden, in der Regel mithilfe des Befehls make. Die Idee ist, Konflikte mit Dateien zu vermeiden, die Teil des Betriebssystems sind und die anderenfalls entweder überschrieben oder die lokalen überschrieben würden. z.B. /usr/bin/fooist Teil des Betriebssystems, während /usr/local/bin/fooeine lokale Alternative ist,
  • /optist ein Verzeichnis zum Installieren von entbündelten Paketen, die sich jeweils in einem eigenen Unterverzeichnis befinden. Sie bestehen bereits aus kompletten Paketen, die von einem unabhängigen Softwarehändler bereitgestellt werden. Beispielsweise someappwürde in installiert sein /opt/someapp, einer seiner Befehle wäre in /opt/someapp/bin/foo[und dann wird normalerweise eine symbolische Verknüpfung in einem der binVerzeichnisse in der vorgenommen PATH, oder das Programm wird von einer Desktop-Datei aufgerufen (siehe unten)].

Suchen eines bestimmten Programms oder Befehls

.desktop Dateien

Um herauszufinden, wo ein bestimmtes Programm installiert ist, können Sie mehrere Schritte ausführen. Zuerst müssen Sie die .desktopDatei suchen. Desktop-Dateien ähneln Verknüpfungen in Windows und befinden sich in Systemanwendungen /usr/share/applications. Die Desktop-Dateien für Anwendungen, die nur für den aktuellen Benutzer verfügbar sind, befinden sich in ~/.local/share/applications. Nehmen Sie zum Beispiel Google Chrome, das die Desktop-Datei enthält, /usr/share/applications/google-chrome.desktopund suchen Sie nach der Zeile, die mit beginnt Exec=. Dies bestimmt, wie Google Chrome gestartet wird. Es sagt:

Exec=/opt/google/chrome/google-chrome

Sie wissen also, dass Google Chrome aktiviert ist /opt.

Nun zu Mozilla Firefox in /usr/share/applications/firefox.desktop. Es sagt einfach

Exec=firefox %u

Zuerst scheint das nicht viel zu helfen, aber dann merkt man, dass firefoxes sich in einem Verzeichnis befinden muss, das sich in der PATHVariablen befindet (höchstwahrscheinlich a bin), und wir können es nachschlagen (siehe unten).

Befehle nachschlagen

So schlagen Sie Befehle können Sie einen oder mehrere der folgenden verwenden: type, whichund whereis(ich habe einen Link zu ihrer manuellen Seiten online enthalten).

  • Typ : Beschreibt einen Befehl und gibt an, wie er interpretiert wird, wenn er als Befehlsname verwendet wird. Mögliche Typen für einen Befehl sind:

    1. Alias ​​(Shell-Alias)
    2. Funktion (Schalenfunktion)
    3. eingebaut (Shell eingebaut)
    4. Datei (Festplattendatei)
    5. Schlüsselwort (Shell reserviertes Wort)

    (Typ selbst ist eine eingebaute Shell, probieren Sie es mit type type: P)

    Ausführen type firefoxgibt uns

    firefox is /usr/bin/firefox
    

    Das wollten wir wissen

Wenn ein Befehl eine Datei ist (mit der Sie geprüft haben type), können Sie auch Folgendes verwenden:

  • welche : zeigt den vollständigen Pfad des Befehls,

    Ausführen which firefoxgibt uns

     /usr/bin/firefox
    
  • whereis : Suchen Sie die Binär-, Quell- und Handbuchdateien für einen Befehl.

    Ausführen whereis firefoxgibt uns

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Bonus

Sie können /usr/bin/firefoxnäher mit inspizieren ls -l /usr/bin/firefoxund dies gibt:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Es scheint, dass dies /usr/bin/firefox"nur" eine symbolische Verknüpfung zum Skript ist /usr/lib/firefox/firefox.sh. Wenn Sie das Skript überprüfen, stellen Sie fest, dass das Skript aufruft /usr/lib/firefox/firefox.
Sie können jetzt in Frieden ruhen :)

Gerhard Burger
quelle
Ziemlich coole Antwort. Eine Frage, was ist Symbolic Link? Handelt es sich um eine Windows-Verknüpfung?
Quazi Irfan,
@iamcreasy danke! Ja, es handelt sich um eine Art Verknüpfung, mit der Hauptabsicht, Dateikopien zu vermeiden. Die Windows-Verknüpfungen sind vergleichbarer mit. Desktop-Dateien, mit denen Sie beispielsweise Startmenüelemente erstellen können.
Gerhard Burger
Warum sollte jemand eine .desktop-Datei über symbolische Links verwenden und umgekehrt?
Quazi Irfan
1
@iamcreasy In .desktop-Dateien können Sie zusätzliche Informationen wie eine Beschreibung und ein Symbol hinzufügen (ein Beispiel finden Sie hier: standards.freedesktop.org/desktop-entry-spec/latest/apa.html ). Dies ist eine "normale" Datei . Ein symbolischer Link ist eine spezielle Datei, die nur auf eine andere Datei verweist. Ich finde das schwer zu erklären, aber vielleicht findest du hier eine bessere Antwort: superuser.com/questions/253935/…
Gerhard Burger
18

Es gibt kein einzelnes Verzeichnis, das genau dem Ordner " Programme " entspricht. Die Art und Weise, wie Linux die Dinge arrangiert, unterscheidet sich stark von Windows.

In Windows erhält jedes Programm, das wir installieren, ein eigenes Verzeichnis im Verzeichnis "Programme". In diesem Verzeichnis werden weitere Unterverzeichnisse für verschiedene Arten von Dateien erstellt. Es gibt keine feste Struktur für Unterverzeichnisse. Programme entscheiden für sich, wie sie jedes Verzeichnis aufrufen und wo sie was ablegen möchten.

Bei der Installation eines Programms unter Linux werden jedoch unterschiedliche Dateitypen an unterschiedliche Speicherorte kopiert. Ausführbare Dateien werden nach / usr / bin kopiert , Bibliotheksdateien nach / usr / lib , Dokumentationen nach / usr / man , / usr / info und / usr / doc . Wenn Konfigurationsdateien sind, sind sie in der Regel in das Home - Verzeichnis des Benutzers oder in / etc .

binW
quelle
Gibt es einen Grund für diese Gruppierung von Dateien basierend auf ihrem Zweck und nicht basierend auf der Anwendung, zu der die Dateien gehören? Ist der "Unix-Dateigruppierungsstil" aus Sicht des Systemadministrators im Allgemeinen praktischer?
Jojman
1
nicht wirklich. Ich denke, es ist eine Design-Wahl, die sie getroffen haben. Es ermöglicht zwar das Erstellen von Hilfsprogrammen wie "man", "info" oder vielen anderen, die von dieser Dateistruktur abhängen. Zum Beispiel weiß "man", wo nach Dokumentation für jeden Befehl gesucht werden muss. Wenn es keinen Standardspeicherort für Dokumente gibt, kann der Mensch nicht arbeiten.
BinW
10

Der C:\Program FilesOrdner wäre /usr/binin Ubuntu. /binsieht eher so aus C:\windows.

Von der Handbuchseite der Dateisystemhierarchie :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu hat eine andere Struktur als Windows. Ubuntu legt fast alle Anwendungen in einem Verzeichnis ab /usr/bin. Windows erstellt beispielsweise einen neuen Ordner Mozilla Firefoxund fügt darin Konfigurationen, ausführbare Dateien, DLLs, Images usw. hinzu. Ubuntu teilt sie auf, ausführbare Dateien gehen ein /usr/bin, systemweite Konfiguration in /etc, gemeinsame Objekte in /usr/lib, Bilder in /usr/share, ...

Lekensteyn
quelle
5

Linux-Programmdateien befinden sich in der gesamten Hierarchie. Es könnte auf sein /usr/bin, /bin, /opt/..., oder in anderen Verzeichnissen.

Ich glaube, Sie werden eine Datei finden, die mit Ihrer Bewerbung zusammenhängt. Dann habe ich eine Idee, wie Dateien aussehen, die bei der Programminstallation installiert werden.

  1. Installation synapticdurch Ausgabe sudo apt-get install synapticam Terminal.
  2. Suchen Sie nach dem gewünschten Paket und suchen Sie in der Texteingabe.
  3. Klicken Sie mit der rechten Maustaste auf das Paket und wählen Sie Properties.
  4. Zum Installed FileTab wechseln. Das Ergebnis ist dasselbe wie dpkg -L package_name.
  5. Dort finden Sie alle für das Paket installierten Dateien.

Dies liegt daran, dass Linux die installierte Datei je nach Typ in separate Verzeichnisse verschiebt.

  • Ausführbare Datei geht an /usr/binoder /bin.
  • Symbol geht an /usr/share/iconsoder an ~/.local/share/iconsfür lokal.
  • Ganze Anwendung (portabel) auf /opt.
  • Abkürzung normalerweise an /usr/share/applicationsoder an~/.local/share/applications
  • Dokumentation auf /usr/share/doc
  • Bibliothek / Modul eingeschaltet /usr/lib

Und viele andere Verzeichnisse. (CMIIW, Korrektur wird akzeptiert)

Abdillah
quelle
3

In dieser Antwort meine ich, wenn ich Unix sage, sowohl Unix als auch Unix-ähnliche Betriebssysteme.

Ubuntu hat nicht wirklich einen Programmordner, der alle Daten für jedes Programm enthält. In Unix- und Unix-ähnlichen Betriebssystemen ist ALLES eine Datei, auch die Terminalbefehle. Das sind auch Dateien. Die Art und Weise, wie Unix mit Programmen umgeht, kann ziemlich chaotisch und gleichzeitig organisiert sein.

Symbole für Programme werden in / usr / share / icons / * gespeichert, ausführbare Programme werden normalerweise in / usr / bin, / bin und an anderen Stellen mit bin-Verzeichnissen gespeichert (bin ist die Abkürzung für binary). Bibliotheken, von denen Programme abhängig sind, befinden sich in / lib.

Sie haben also nicht ein Verzeichnis, das alle Daten für ein Programm enthält, sondern die Daten für das Programm verteilt. Dies scheint zunächst sehr unorganisiert zu sein, ermöglicht jedoch die gemeinsame Nutzung von Standardelementen wie Bibliotheken und Symbolen.

Dank der Berechtigungen für jede Datei ist die Vorstellung, dass alles eine Datei ist, sehr brillant, um ehrlich zu sein. Dies macht Unix VIEL sicherer als andere Betriebssysteme.

Thomas Boxley
quelle
3

Die Art und Weise, wie Linux- und Windows-Programme installiert werden, ist sehr unterschiedlich.

Das in Windows gebräuchliche Muster gilt für ein Programm. oder eine Reihe von Programmen eines Herstellers in ein eigenes Unterverzeichnis in C: \ programs \ vendor o.ä.

Unter Linux werden Ihre Dateien je nach Funktion auf bestimmte Unterverzeichnisse aufgeteilt. Es gibt Verzeichnisse für Bibliotheken, Symbole, Manpages, Protokolldateien, Konfiguration usw. Sie können einige davon verwenden, aber das System verwaltet alle. Sie sind nicht miteinander gekoppelt, sondern existieren zusammen mit ähnlichen Dateien aus anderen Programmen.

Es gibt also kein echtes Äquivalent zu dieser Windows-Verzeichnisstruktur in einer regulären Linux-Implementierung.

Benutzer unbekannt
quelle
2

Wenn Sie eigene Programme installieren, empfehle ich 1 Ordner:

Timo
quelle
-2

Schauen Sie in /bin, /usr/binund alles andere , was sagt bin.

CPU2
quelle