Frage Wie lautet das Linux-Äquivalent zu Windows-Programmdateien?


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


146
2018-02-20 07:36


Ursprung


Wenn Sie wissen möchten, wo sich die Dateien eines bestimmten Pakets befinden, können Sie den Synaptic-Paket-Manager verwenden. Suchen Sie einfach nach dem Paket und sehen Sie sich die installierten Dateien an. - Asmerito
Ich denke, dass diese Frage verbessert werden würde Grund um ein Äquivalent zu haben. Es gibt einen Unterschied zwischen "lasst uns sehen, was ich installiert habe und was ich ausführen kann" und "Ich versuche das Speicher-Spiel dieser / dieser Software zu finden, damit ich damit herumspielen kann" und vielleicht sogar "Ich vermute etwas Einstellungsdatei / Ini-Datei für dieses Programm, das ich zwicken kann". Diese könnten alle "Programme" -Frage sein, aber haben unterschiedliche Antworten hier. - Nanne
Related (aber wahrscheinlich sollte nicht als ein Duplikat betrachtet werden): Wie kann ich das Layout des Ubuntu-Dateisystems verstehen? - Eliah Kagan


Antworten:


/bin und /usr/bin ist, wo die Skripte sind, die die Programme starten. Das direkte Äquivalent von "Programmdateien" ist jedoch wahrscheinlich /usr/share. Dieses Verzeichnis enthält die verschiedenen Unterstützungsdateien für die meisten Programme.

Nautilus showing /usr/share

Es gibt jedoch wahrscheinlich keine direkte Entsprechung, da z. B. Bibliotheksdateien systemübergreifend verwendet werden ( /lib) und Optionen sind entweder benutzerdefiniert (im Home-Verzeichnis des Benutzers) oder universell in /etc.

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

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


91
2018-02-20 13:21



Wie wäre es mit /opt? Ich habe gesehen, dass viele Programme (normalerweise Closed-Source- oder App-basierte Programme) in ähnlicher Weise vorgehalten werden Program Files. - Kupiakos
Scheint so zu sein, mit dem Aufkommen des Ubuntu Software Centers, das dort seine Spiele liefert. Aber selbst dann, kaum ein direkter Vergleich, wirklich, ist es? Könnte das nächste Ding in diesen Tagen sein. - Scaine
Sehen askubuntu.com/a/294492/41499 für was /opt Verzeichnis ist für. - Gerhard Burger


Es gibt keine einfache Antwort.

/bin,/usr/bin, und /usr/share

Wie in den anderen Antworten erwähnt, finden Sie die meisten ausführbaren Dateien unter /bin oder /usr/binund die Supportdateien sind in installiert /usr/share.

/usr/local und /opt

Es gibt jedoch mehr Verzeichnisse, in denen Ubuntu Anwendungen installiert. Das PATH Variable, die bestimmt, wo nach einem eingegebenen Befehl gesucht wird, könnte Ihnen einen Hinweis geben,echo $PATH in 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 können, ist einige Software installiert /usr/local und haben ihr eigenes Verzeichnis und bin. Ein anderer Ort, wo viele Programme installiert sind, ist /opt. Die Eigenschaften dieser Standorte werden durch die Dateisystemhierarchie StandardDas ist eine sehr gute Lektüre. Leider ist der Unterschied zwischen /opt und /usr/local ist nicht sehr gut erklärt, jemand auf der UNIX-Stapelaustausch hatte eine ausführlichere Erklärung:

  • /usr/local ist ein Ort zum Installieren von Dateien, die vom Administrator erstellt wurden, normalerweise mit dem make-Befehl. Die Idee besteht darin, Konflikte mit Dateien zu vermeiden, die zu den Betriebssystemen gehören, die überschrieben werden oder die lokalen überschrieben werden. z.B. /usr/bin/foo ist Teil des Betriebssystems während /usr/local/bin/foo ist eine lokale Alternative,
  • /opt ist ein Verzeichnis, um entbündelte Pakete jeweils in einem eigenen Unterverzeichnis zu installieren. Sie sind bereits vollständige Pakete von einem unabhängigen Software-Distributor von Drittanbietern zur Verfügung gestellt. Beispielsweise someapp würde in installiert werden /opt/someapp, einer seiner Befehle wäre in /opt/someapp/bin/foo [und dann normalerweise eine symbolische Verbindung in einem der bin Verzeichnisse in der PATHoder das Programm wird von einer Desktop-Datei aufgerufen (siehe unten)].

Ein bestimmtes Programm oder einen bestimmten Befehl finden

.desktop Dateien

Um herauszufinden, wo ein bestimmtes Programm installiert ist, können Sie eine Reihe von Schritten ausführen. Zuerst müssen Sie seine finden .desktop Datei. Desktopdateien ähneln den Verknüpfungen in Windows und für Systemanwendungen, in denen sie sich befinden /usr/share/applications. Die Desktopdateien 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 mit der Desktop-Datei /usr/share/applications/google-chrome.desktop und nach der Zeile suchen, die mit beginnt Exec=bestimmt dies, wie Google Chrome gestartet wird. Es sagt:

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

Sie wissen also, dass Google Chrome in /opt.

Jetzt für Mozilla Firefox, der sich in befindet /usr/share/applications/firefox.desktop. Es sagt einfach

Exec=firefox %u

Das scheint zunächst nicht viel zu helfen, aber dann merkt man das firefox Muss in einem Verzeichnis sein, das in der PATH Variable (am wahrscheinlichsten a bin), und wir können es nachschlagen (siehe unten).

Befehle nachschlagen

Um Befehle nachzuschlagen, können Sie einen oder mehrere der folgenden Befehle verwenden: type, which und whereis (Ich habe einen Link zu ihren Handbuchseiten online eingefügt).

  • Art: Es beschreibt einen Befehl und gibt an, wie er interpretiert würde, wenn er als Befehlsname verwendet wird. Mögliche Typen für einen Befehl sind:

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

    (Geben Sie selbst einen eingebauten Befehl ein, versuchen Sie es mit type type : P)

    Ausführen type firefox gibt uns

    firefox is /usr/bin/firefox
    

    was wir wissen wollten

Wenn ein Befehl eine Datei ist (die Sie überprüft haben) type) können Sie dann auch verwenden:

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

    Ausführen which firefox gibt uns

     /usr/bin/firefox
    
  • wo ist: Suchen Sie nach den binären, Quell- und manuellen Seitendateien für einen Befehl.

    Ausführen whereis firefox gibt 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 überprüfen /usr/bin/firefox näher mit ls -l /usr/bin/firefox und das gibt:

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

Anscheinend /usr/bin/firefox ist 'nur' eine symbolische Verbindung zum Skript /usr/lib/firefox/firefox.sh. Wenn Sie das Skript untersuchen, stellen Sie fest, dass das Skript aufruft /usr/lib/firefox/firefox.
Sie können jetzt in Frieden ruhen :)

BEARBEITEN: Siehe auch d4nylls Antwort  für eine schöne Roadmap.


72
2018-05-12 19:49



Ziemlich coole Antwort. Eine Frage, was ist symbolischer Link? Ist es Windows-Verknüpfung gleichwertig? - Quazi Irfan
@iamcreasy danke! Ja, sie sind eine Art Abkürzung, aber mit der Hauptabsicht Dateikopien zu vermeiden. Die Windows-Verknüpfungen sind vergleichbar mit. Desktop-Dateien, mit denen beispielsweise Startmenü-Einträge erstellt werden können. - Gerhard Burger
Warum sollte jemand eine .desktop-Datei über symbolische Links verwenden und umgekehrt? - Quazi Irfan
@iamcreasy In .desktop-Dateien können Sie zusätzliche Informationen wie eine Beschreibung und ein Symbol hinzufügen (siehe ein Beispiel hier: standards.freedesktop.org/desktop-entry-spec/latest/apa.html), es ist eine 'normale' Datei. Ein symbolischer Link ist eine spezielle Datei, die nur mit einer anderen Datei verknüpft ist. Ich finde das schwer zu erklären, aber vielleicht finden Sie hier eine bessere Antwort: superuser.com/questions/253935/ ... - Gerhard Burger


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 mit der Karte grob navigieren. Sie können ein hochauflösendes PNG herunterladen Hier. Sie können den zugehörigen Beitrag finden Hier. Ich werde sowohl die Datei als auch die Post aktualisieren, wenn es die Zeit erlaubt, und hilfreiche Kommentare enthalten.


60
2017-11-20 18:25



Diese Antwort wird ignoriert. Sie sollte oben stehen. - voldemort


Es gibt kein einziges Verzeichnis, das dem entspricht Programmdateien Mappe. 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 innerhalb des Programmverzeichnisses. In diesem Verzeichnis werden weitere Unterverzeichnisse für verschiedene Arten von Dateien erstellt. Es gibt keine feste Struktur für Unterverzeichnisse. Programme entscheiden selbst, was sie jedes Verzeichnis nennen wollen und wo sie was setzen wollen.

Aber in Linux, wenn ein Programm installiert ist, werden verschiedene Arten von Dateien an verschiedene Orte kopiert. Ausführbare Dateien werden kopiert / usr / bin, Bibliotheksdateien zu / usr / lib, Dokumentation zu einem oder mehreren von / usr / mann, / usr / info und / usr / doc. Wenn sich Konfigurationsdateien befinden, befinden sie sich normalerweise im Home-Verzeichnis des Benutzers oder in /etc.


16
2018-02-24 15:19



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 "Gruppierungsstil für Unix-Dateien" aus Sicht des Systemadministrators generell bequemer? - jojman
nicht wirklich. Es ist eine Design-Wahl, die sie gemacht haben, denke ich. Obwohl es ermöglicht, Dienstprogramme wie "man", "info" oder viele andere zu machen, die von dieser Dateistruktur abhängen. Zum Beispiel weiß "man", wo die Dokumentation für jeden Befehl zu suchen ist. Wenn es keinen Standardspeicherort für Dokumente gibt, kann der Benutzer nicht arbeiten. - binW


Das C:\Program Files Ordner wäre /usr/bin in Ubuntu. /bin sieht eher so aus C:\windows.

Von dem 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 platziert fast alle Anwendungen in einem Verzeichnis, sagen wir /usr/bin. Windows würde einen neuen Ordner erstellen, sagen wir Mozilla Firefoxund fügen Konfiguration, ausführbare Dateien, DLLs, Bilder usw. hinzu. Ubuntu teilt sie auf, ausführbare Dateien gehen hinein /usr/binSystemweite Konfiguration in /etc, geteilte Objekte in /usr/lib, Bilder in /usr/share, ...


9
2018-02-20 14:42





Linux 'Programme' sind in der gesamten Hierarchie. Es könnte sein /usr/bin, /bin, /opt/...oder in anderen Verzeichnissen.

Ich denke, Sie werden eine Datei finden, die sich auf Ihre Bewerbung bezieht. Dann habe ich eine Idee, wie man Dateien sieht, die bei der Programminstallation installiert werden.

  1. Installieren synaptic durch Ausgabe sudo apt-get install synaptic am Terminal.
  2. Suchen Sie nach dem gewünschten Paket, suchen Sie nach der Suchtexteingabe.
  3. Klicken Sie mit der rechten Maustaste auf das Paket und wählen Sie Properties.
  4. Ziehen nach Installed File Tab. 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 basierend auf ihrem Typ in Verzeichnisse verschiebt.

  • Ausführbare Datei geht zu /usr/bin oder /bin.
  • Icon geht zu /usr/share/icons oder weiter ~/.local/share/icons für lokal.
  • Ganze Anwendung (portabel) an /opt.
  • Verknüpfung in der Regel auf /usr/share/applications oder weiter ~/.local/share/applications
  • Dokumentation auf /usr/share/doc
  • Bibliothek / Modul auf /usr/lib

Und viele andere Verzeichnisse. (CMIIW, Annahme der Korrektur)


3
2018-03-15 14:09





In dieser Antwort, wenn ich Unix sage, meine ich 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, sogar die Terminalbefehle. Sie sind auch Dateien. Die Art, wie Unix mit Programmen umgeht, kann ziemlich chaotisch und gleichzeitig organisiert sein.

Symbole für Programme werden in / usr / share / icons / * gespeichert, Programmdateien werden normalerweise in / usr / bin, / bin und anderen Orten mit bin-Verzeichnissen gespeichert (bin ist obv kurz für binary). Bibliotheken, von denen Programme abhängig sind, befinden sich in / lib.

Sie haben also kein Verzeichnis, das alle Daten für ein Programm enthält, sondern die Daten für das Programm. Während dies zunächst sehr unorganisiert erscheint, erlaubt es das Teilen von Standard-Dingen wie Bibliotheken und Icons.

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


2
2018-02-20 19:25





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

Das allgemeine Muster in Windows ist für ein Programm; oder eine Reihe von Programmen von einem Hersteller in ein eigenes Unterverzeichnis in C: \ Programme \ Vendor oder etwas ähnliches.

In Linux werden Ihre Dateien abhängig von ihrer Funktion in bestimmte Unterverzeichnisse aufgeteilt. Es gibt Verzeichnisse für Bibliotheken, Icons, man-Seiten, Log-Dateien, Konfiguration und so weiter. Sie können einige von ihnen verwenden, aber das System wird alle von ihnen verwalten. Sie sind nicht miteinander gekoppelt, sondern existieren zusammen mit ähnlichen Dateien aus anderen Programmen.

Es gibt also keine echte Entsprechung zu dieser Windows-Verzeichnisstruktur in einer normalen Linux-Implementierung.


2
2018-02-20 14:36