ubuntuusers.de

Verzeichnishierarchie

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Verzeichnisstruktur.

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Bis /usr überarbeitet.

Jetzt warte ich erst mal auf Kritik... ☺

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

Sieht alles sehr gut aus. Bei /usr sollte auf jeden Fall erwähnt werden, dass in /usr/local nochmal die gleiche Verzeichnisstruktur ist und das dort selbstkompilierte Programme hinkommen. Und das man in den anderen Verzeichnissen in /usr nichts an der Paketverwaltung vorbei ändern sollte. Die Unterscheidung von /usr/bin und /usr/sbin ist glaube ich noch nicht richtig. Nach kurzem googlen habe ich sbin = "wesentliche Systemkommandos" und bin="die meisten Benutzerkommandos" gefunden.

Gruß, BigMc

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

BigMc schrieb:

Sieht alles sehr gut aus.

Fein.

Bei /usr sollte auf jeden Fall erwähnt werden, dass in /usr/local nochmal die gleiche Verzeichnisstruktur ist

Ja, das habe ich nicht richtig verstanden. Wieso nochmal die gleiche Verzeichnisstruktur?

und das dort selbstkompilierte Programme hinkommen.

Ist /usr/local dann so ne Art "Testverzeichnisstruktur"? Im FHS steht

 * '''/usr/local''' :  Local hierarchy (empty after main installation)

Und leer ist es bei Ubuntu ja nun wirklich nicht...

FHS zu /usr/local:

The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to
be safe from being overwritten when the system software is updated. It may be used for programs and data that
are shareable amongst a group of hosts, but not found in /usr.
Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to
replace or upgrade software in /usr.

Und das man in den anderen Verzeichnissen in /usr nichts an der Paketverwaltung vorbei ändern sollte.

Im gesamten "/"-Baum sollte ein Normaluser keine Änderungen vornehmen (müssen)... oder?

Die Unterscheidung von /usr/bin und /usr/sbin ist glaube ich noch nicht richtig. Nach kurzem googlen habe ich sbin = "wesentliche Systemkommandos" und bin="die meisten Benutzerkommandos" gefunden.

FHS zu /usr/sbin:

This directory contains any non-essential binaries used exclusively by the system administrator. System
administration programs that are required for system repair, system recovery, mounting /usr, or other essential
functions must be placed in /sbin instead.

FHS zu /usr/bin:

This is the primary directory of executable commands on the system.

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

kaputtnik schrieb:

Bei /usr sollte auf jeden Fall erwähnt werden, dass in /usr/local nochmal die gleiche Verzeichnisstruktur ist

Ja, das habe ich nicht richtig verstanden. Wieso nochmal die gleiche Verzeichnisstruktur?

und das dort selbstkompilierte Programme hinkommen.

Ist /usr/local dann so ne Art "Testverzeichnisstruktur"? Im FHS steht

 * '''/usr/local''' :  Local hierarchy (empty after main installation)

Und leer ist es bei Ubuntu ja nun wirklich nicht...

Solange man nur Software über die Paketverwaltung installiert hat, sollte es höchstens leere Ordner enthalten. Bei mir ist auch nur selbstkompilierte Software drin.

FHS zu /usr/local:

The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to
be safe from being overwritten when the system software is updated. It may be used for programs and data that
are shareable amongst a group of hosts, but not found in /usr.
Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to
replace or upgrade software in /usr.

Und das man in den anderen Verzeichnissen in /usr nichts an der Paketverwaltung vorbei ändern sollte.

Im gesamten "/"-Baum sollte ein Normaluser keine Änderungen vornehmen (müssen)... oder?

Ja, aber in /usr sollte auch kein Administrator selbst Hand anlegen. Dafür ist /usr/local da. Das ist so, damit man der Paketverwaltung nicht in die Quere kommt.

Die Unterscheidung von /usr/bin und /usr/sbin ist glaube ich noch nicht richtig. Nach kurzem googlen habe ich sbin = "wesentliche Systemkommandos" und bin="die meisten Benutzerkommandos" gefunden.

FHS zu /usr/sbin:

This directory contains any non-essential binaries used exclusively by the system administrator. System
administration programs that are required for system repair, system recovery, mounting /usr, or other essential
functions must be placed in /sbin instead.

FHS zu /usr/bin:

This is the primary directory of executable commands on the system.

Ok, aber "sbin" heißt immer "Systemkommandos". Die werden dann wohl nach Wichtigkeit auf /sbin und /usr/sbin aufgeteilt. Das wird aus dem Artikel noch nicht deutlich. Für /usr/bin würde ich schreiben "über die Paketverwaltung installierte Anwenderprogramme" und keine Beispiele geben. Die Beispiele führen IMHO in diesem Fall nur dazu, dass man irgendwelche Gesetzmäßigkeiten sucht, die es nicht gibt.

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

BigMc schrieb:

kaputtnik schrieb:

Bei /usr sollte auf jeden Fall erwähnt werden, dass in /usr/local nochmal die gleiche Verzeichnisstruktur ist

Ja, das habe ich nicht richtig verstanden. Wieso nochmal die gleiche Verzeichnisstruktur?

und das dort selbstkompilierte Programme hinkommen.

Solange man nur Software über die Paketverwaltung installiert hat, sollte es höchstens leere Ordner enthalten. Bei mir ist auch nur selbstkompilierte Software drin.

Stimmt, ist größtenteils leer. Bei mir gibts im Ordner /usr/local/linuxprinter anscheinend eine Installation von " Linux Printing Package Release Candidate". Keine Ahnung woher die kommt...

Ok, aber "sbin" heißt immer "Systemkommandos". Die werden dann wohl nach Wichtigkeit auf /sbin und /usr/sbin aufgeteilt. Das wird aus dem Artikel noch nicht deutlich.

So wie ich das verstehe, sind in /sbin für das Grundsystem Linux unverzichtbare Programme, in /usr/sbin zB Distributionsspezifische Programme, ohne die ein Linux aber auch auskommen könnte.

Für /usr/bin würde ich schreiben "über die Paketverwaltung installierte Anwenderprogramme" und keine Beispiele geben.

Hmmm... in /usr/bin sind auch Programme drin, die ich nicht explizit installiert habe. zB "apt-get" oder "dpkg" oder "lsusb", "lspci"

Die Beispiele führen IMHO in diesem Fall nur dazu, dass man irgendwelche Gesetzmäßigkeiten sucht, die es nicht gibt.

Ok, da muss ich vllt noch andere Beispiele finden.

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

kaputtnik schrieb:

Ok, aber "sbin" heißt immer "Systemkommandos". Die werden dann wohl nach Wichtigkeit auf /sbin und /usr/sbin aufgeteilt. Das wird aus dem Artikel noch nicht deutlich.

So wie ich das verstehe, sind in /sbin für das Grundsystem Linux unverzichtbare Programme, in /usr/sbin zB Distributionsspezifische Programme, ohne die ein Linux aber auch auskommen könnte.

Ist wohl eher ein fließender Übergang.

Für /usr/bin würde ich schreiben "über die Paketverwaltung installierte Anwenderprogramme" und keine Beispiele geben.

Hmmm... in /usr/bin sind auch Programme drin, die ich nicht explizit installiert habe. zB "apt-get" oder "dpkg" oder "lsusb", "lspci"

Die Standard-Installation habe ich jetzt mit einbezogen, da sie auch von der Paketverwaltung erfasst ist. Dann eben "von der Paketverwaltung verwaltete Anwenderprogramme"?

Die Beispiele führen IMHO in diesem Fall nur dazu, dass man irgendwelche Gesetzmäßigkeiten sucht, die es nicht gibt.

Ok, da muss ich vllt noch andere Beispiele finden.

Ich meine nicht die speziellen Beispiele sondern ich würde an dieser Stelle Beispiele ganz weglassen.

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Gut, habs jetzt nochmal n bisschen überarbeitet und hoffe, das der Unterschied jetzt klarer ist: Unterverzeichnisse u.a.:

  • /usr/bin : Distributionsbedingte- und über Paketverwaltung installierte Programme; Beispiele: Desktopumgebungen und ihre Programme (Distributionsbedingt), Audacity (nachträglich installiert)

  • /usr/include : Header-Dateien für C-Programme (nur für Programmierer interessant)

  • /usr/lib : Bibliotheken

  • /usr/local : Enthält fast die gleiche Verzeichnisstruktur wie /usr; enthaltene Verzeichnisse normalerweise leer; für selbsterstellte Programme

  • /usr/sbin : Distributionsbedingte aber für Linux nicht unbedingt notwendige Systemprogramme; Beispiel: NetworkManager

Passts jetzt besser? Die Beispiele möchte ich schon gerne drin lassen...

Was sagt otzenpunk?

Mach jetzt noch mal an den Rest.

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

Ich würde /usr und /usr/local einfach trennen, dann wird das ganze leichter klar:


/usr

Enthält die meisten Systemtools, Bibliotheken und installierte Programme. Da für die (De-)Installation von Programmen die Paketverwaltung verantwortlich ist, sollte dieses Verzeichnis (abgesehen von /usr/local) nur von der Paketverwaltung angetastet werden.

Unterverzeichnisse u.a.:

  • /usr/bin : Anwenderprogramme; Beispiele: Desktopumgebungen und ihre Programme, Audacity

  • /usr/include : Header-Dateien für C-Programme (nur für Programmierer interessant)

  • /usr/lib : Bibliotheken

  • /usr/sbin : Systemprogramme, die nur benötigt werden, wenn /usr eingehängt ist; Beispiel: NetworkManager

  • /usr/share : für sich nicht ändernde Dateien; ist Architekturunabhängig, nicht aber vom Betriebsystem (z.B. können sich "Ubuntu 8.10 i386" und "Ubuntu 8.10 amd64" dieses Verzeichnis teilen, aber nicht "Ubuntu 8.10" und "Ubuntu 9.04")

  • /usr/share/man : Manpages

/usr/local

Enthält noch einmal die gleiche Verzeichnisstruktur wie /usr und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. selbstkompilierte Programme. Bei einem neu installierten Ubuntu ist es leer.


== /usr == 

Enthält die meisten Systemtools, Bibliotheken und installierte Programme. Da für die (De-)Installation von Programmen die [:Paketverwaltung:] verantwortlich ist, sollte dieses Verzeichnis (abgesehen von [#usr-local '''/usr/local''']) nur von der Paketverwaltung angetastet werden.

Unterverzeichnisse u.a.:
 * '''/usr/bin''' : Anwenderprogramme; Beispiele: [:Desktop: Desktopumgebungen] und ihre Programme, [:Audacity:]
 * '''/usr/include''' : Header-Dateien für C-Programme (nur für Programmierer interessant)
 * '''/usr/lib''' : Bibliotheken
 * '''/usr/sbin''' : Systemprogramme, die nur benötigt werden, wenn '''/usr''' eingehängt ist; Beispiel: [:NetworkManager:]
 * '''/usr/share ''' : für sich nicht ändernde Dateien; ist Architekturunabhängig, nicht aber vom Betriebsystem (z.B. können sich "''Ubuntu 8.10 i386''" und "''Ubuntu 8.10 amd64''" dieses Verzeichnis teilen, aber nicht "''Ubuntu 8.10''" und "''Ubuntu 9.04''")
 * '''/usr/share/man''' : [:man: Manpages]

=== /usr/local === 
Enthält noch einmal die gleiche Verzeichnisstruktur wie '''/usr''' und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. [:Programme_kompilieren:selbstkompilierte Programme]. Bei einem neu installierten Ubuntu ist es leer.

Die Beispiele finde ich immer noch unglücklich. Z.B. ist NetworkManager auch das Programm einer Desktopumgebung (GNOME).

Gruß, BigMc

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

BigMc schrieb:

Ich würde /usr und /usr/local einfach trennen, dann wird das ganze leichter klar:

Gegenvorschlag: Mach n eigenen Artikel für /usr. Das dürfte für den Normaluser auch das wichtigste Verzeichnis sein und einen eigenen Artikel vertragen... Der Artikel hier soll ja nur eine Übersicht über die Verzeichnisstruktur geben und nicht genau das Was Wo Wie erklären!

Die Beispiele finde ich immer noch unglücklich. Z.B. ist NetworkManager auch das Programm einer Desktopumgebung (GNOME).

Dann hält sich GNOME, oder die Paketentwickler, nicht an die Konventionen. Ich habe hier kde und der KNetworkmanager befindet sich unter /usr/bin. Unter /user/sbin befindet sich bei mir allerdings auch der networkmanager. Daher bin ich davon ausgegangen, das es ein Systemspzifisches Programm ist und kein Desktopspezifisches. Wenn networkmanager zu GNOME gehört, dann nehme ich als Beispiel dmidecode.

Edit: Noch ne Frage... was ist der Unterschied zwischen /opt und /usr/local

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Noch ein paar Fragen:

  • /var/lib/mysql: Welche Anwendung(en) benötigen das? Welche Art Daten liegen hier? In Amarok kann ich einstellen, welche Datenbank es benutzt. Wenn ich dort mysql einstelle, liegt dann die Datenbank von Amarok in diesem Verzeichnis?

  • /var/www: Ist nicht im FHS vorhanden

  • /var/mail: Welche Art Mails (Programm?) liegen hier? Muss man dazu auch einen Mailserver einrichten?

Danke

Edit: Ahh und noch einen 😉... Bei den Tags steht auch 'Einsteiger', was ich persönlich nicht richtig finde. Ich wäre eher der Ansicht, daß dort auch der 'Fortgeschrittene Anwender' Hinweisblock reingehört?

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

kaputtnik schrieb:

BigMc schrieb:

Ich würde /usr und /usr/local einfach trennen, dann wird das ganze leichter klar:

Gegenvorschlag: Mach n eigenen Artikel für /usr. Das dürfte für den Normaluser auch das wichtigste Verzeichnis sein und einen eigenen Artikel vertragen... Der Artikel hier soll ja nur eine Übersicht über die Verzeichnisstruktur geben und nicht genau das Was Wo Wie erklären!

Mehr habe ich über /usr nicht zu sagen und das reicht nicht für einen eigenen Artikel. Also versuch nicht, mich so abzuschieben. Mein Vorschlag ist kaum länger als deiner und bei deinem kommen die wichtigen Informationen IMHO nicht rüber.

Die Beispiele finde ich immer noch unglücklich. Z.B. ist NetworkManager auch das Programm einer Desktopumgebung (GNOME).

Dann hält sich GNOME, oder die Paketentwickler, nicht an die Konventionen. Ich habe hier kde und der KNetworkmanager befindet sich unter /usr/bin. Unter /user/sbin befindet sich bei mir allerdings auch der networkmanager. Daher bin ich davon ausgegangen, das es ein Systemspzifisches Programm ist und kein Desktopspezifisches. Wenn networkmanager zu GNOME gehört, dann nehme ich als Beispiel dmidecode.

Ok, bin mir nicht so sicher mit dem NetworkManager. Ist anscheinend nicht das gleiche wie GNOME Network Manager.

Edit: Noch ne Frage... was ist der Unterschied zwischen /opt und /usr/local

Ich denke in /usr/local kommen die Programme, die der klassischen Linux-Struktur folgen, opt ist für Programme, die wie unter Windows üblich alle ihre Bibliotheken selbst mitbringen und alles in einen Ordner schmeißen. Das kommt afaik vor allem bei kommerzieller Software vor.

Gruß, BigMc

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

BigMc schrieb:

Mehr habe ich über /usr nicht zu sagen und das reicht nicht für einen eigenen Artikel. Also versuch nicht, mich so abzuschieben.

Oh, sorry, das wollte ich auf keinen Fall.

Mein Vorschlag ist kaum länger als deiner und bei deinem kommen die wichtigen Informationen IMHO nicht rüber.

Dein Vorschlag entspricht nicht der vorgehenden Struktur des Artikels. Das ist das was mich stört. Es kann ja nicht sein, das das was vorher OK war, jetzt auf einmal nicht mehr ok ist, oder den Belangen nicht mehr genügt.

Ok, bin mir nicht so sicher mit dem NetworkManager. Ist anscheinend nicht das gleiche wie GNOME Network Manager.

Es kann sein, daß der networkmanager bei mir ein überbleibsel von anderen Testinstallationen ist. So hatte ich mal xfce ausprobiert. Oder es wird automatisch mitinstalliert, wenn man bestimmte GNOME-Programme installiert hat und nutzt. Ich kann es nicht genau sagen, woher er kommt...

Edit: Noch ne Frage... was ist der Unterschied zwischen /opt und /usr/local

Ich denke in /usr/local kommen die Programme, die der klassischen Linux-Struktur folgen, opt ist für Programme, die wie unter Windows üblich alle ihre Bibliotheken selbst mitbringen und alles in einen Ordner schmeißen. Das kommt afaik vor allem bei kommerzieller Software vor.

OK.

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

kaputtnik schrieb:

Mein Vorschlag ist kaum länger als deiner und bei deinem kommen die wichtigen Informationen IMHO nicht rüber.

Dein Vorschlag entspricht nicht der vorgehenden Struktur des Artikels. Das ist das was mich stört. Es kann ja nicht sein, das das was vorher OK war, jetzt auf einmal nicht mehr ok ist, oder den Belangen nicht mehr genügt.

Was heißt es war vorher ok? Die Rekursion in der Verzeichnisstruktur kommt ja auch sonst nirgendwo vor. Meiner Ansicht nach kann man es so am einfachsten beschreiben. Man könnte natürlich /usr/bin mit dem gleichen Text auch mit in die Liste aufnehmen, ich wäre aber eher dafür, eine Ausnahme in der Struktur zu machen.

Gruß, BigMc

EDIT: Die Tags kannst du ruhig ändern.

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Nochmal zum networkmanager:

Suche ich http://packages.ubuntu.com/search?searchon=contents&keywords=knetworkmanager&mode=exactfilename&suite=hardy&arch=any (knetworkmanager) wird angezeigt, das er in /usr/bin liegt,

suche ich http://packages.ubuntu.com/search?searchon=contents&keywords=networkmanager&mode=exactfilename&suite=hardy&arch=any (networkmanager) wird angezeigt, das er in /usr/sbin liegt...

Zu Deinem Vorschlag:

BigMc schrieb:

/usr

Enthält die meisten Systemtools, Bibliotheken und installierte Programme. Da für die (De-)Installation von Programmen die Paketverwaltung verantwortlich ist, sollte dieses Verzeichnis (abgesehen von /usr/local) nur von der Paketverwaltung angetastet werden.

Wie vorher schon geschrieben sollte man Grundsätzlich nix im ganzen "/"-Baum ändern. Vllt sollte man oben noch eine Warnungsbox einfügen. Der Rest passt doch?

Unterverzeichnisse u.a.:

  • /usr/sbin : Systemprogramme, die nur benötigt werden, wenn /usr eingehängt ist; Beispiel: NetworkManager

Verstehe ich nicht: "wenn /usr eingehägngt ist". Wann ist das Verzeichnis denn nicht eingehängt?

  • /usr/share : für sich nicht ändernde Dateien; ist Architekturunabhängig, nicht aber vom Betriebsystem (z.B. können sich "Ubuntu 8.10 i386" und "Ubuntu 8.10 amd64" dieses Verzeichnis teilen, aber nicht "Ubuntu 8.10" und "Ubuntu 9.04")

  • /usr/share/man : Manpages

/usr/local

Enthält noch einmal die gleiche Verzeichnisstruktur wie /usr und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. selbstkompilierte Programme. Bei einem neu installierten Ubuntu ist es leer.

Was hälst Du davon Deinen Text in eine Hinweisbox zu platzieren und diesen vor 'Unterverzeichnisse u.a.:' einzufügen? Ich denke das wäre eine gute Lösung.

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

kaputtnik schrieb:

Nochmal zum networkmanager:

Suche ich http://packages.ubuntu.com/search?searchon=contents&keywords=knetworkmanager&mode=exactfilename&suite=hardy&arch=any (knetworkmanager) wird angezeigt, das er in /usr/bin liegt,

suche ich http://packages.ubuntu.com/search?searchon=contents&keywords=networkmanager&mode=exactfilename&suite=hardy&arch=any (networkmanager) wird angezeigt, das er in /usr/sbin liegt...

Ach, keine Ahnung was NetworkManager ist. Kannst das Beispiel von mir aus lassen oder ändern. 😉

Zu Deinem Vorschlag:

BigMc schrieb:

/usr

Enthält die meisten Systemtools, Bibliotheken und installierte Programme. Da für die (De-)Installation von Programmen die Paketverwaltung verantwortlich ist, sollte dieses Verzeichnis (abgesehen von /usr/local) nur von der Paketverwaltung angetastet werden.

Wie vorher schon geschrieben sollte man Grundsätzlich nix im ganzen "/"-Baum ändern. Vllt sollte man oben noch eine Warnungsbox einfügen. Der Rest passt doch?

Ich hab auch schon geschrieben, dass das was anderes ist. /etc ist zum Beispiel nur zum Verändern da (Konfigurationsdateien). /var/www wär auch witzlos, wenn man es nicht ändert. Wenn man nichts ändern dürfte, wäre dieser Artikel ja nicht nötig. In /usr soll man wirklich nichts ändern.

Unterverzeichnisse u.a.:

  • /usr/sbin : Systemprogramme, die nur benötigt werden, wenn /usr eingehängt ist; Beispiel: NetworkManager

Verstehe ich nicht: "wenn /usr eingehägngt ist". Wann ist das Verzeichnis denn nicht eingehängt?

Z.B. wenn ein /usr auf einem Server von einem ganzen Netzwerk gemeinsam genutzt wird und der Server aus ist. Dann will man den PC ja trotzdem herunterfahren können.

  • /usr/share : für sich nicht ändernde Dateien; ist Architekturunabhängig, nicht aber vom Betriebsystem (z.B. können sich "Ubuntu 8.10 i386" und "Ubuntu 8.10 amd64" dieses Verzeichnis teilen, aber nicht "Ubuntu 8.10" und "Ubuntu 9.04")

  • /usr/share/man : Manpages

/usr/local

Enthält noch einmal die gleiche Verzeichnisstruktur wie /usr und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. selbstkompilierte Programme. Bei einem neu installierten Ubuntu ist es leer.

Was hälst Du davon Deinen Text in eine Hinweisbox zu platzieren und diesen vor 'Unterverzeichnisse u.a.:' einzufügen? Ich denke das wäre eine gute Lösung.

Kannst du ja mal einbauen und dann sag ich was ich davon halte.

Gruß, BigMc