Frage zu: /bin -> (/)usr/bin

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Frage zu: /bin -> (/)usr/bin

Beitrag von michaa7 » 18.09.2024 12:03:42

Für mich ist das kein Problem, bei mir schauen die Symlinks aus wie sie sein sollen:

bin -> usr/bin, lib -> usr/lib, lib64 -> usr/lib64, sbin -> usr/sbin

Es gab und gibt aber viele Nutzer die früher oder später Probleme bekommen weil in ihren Systemen die Linkziele einen führenden slash haben: /bin -> /usr/bin

Ich habe danach gegoogelt und auch die wenigen Debian Bug reports zu usrmerge durchgesehen um zu verstehen wie es dazu kam dass diese Symlinks fälschlicherweise so definiert wurden, ohne Erfolg.

Kann das jemand hier aufklären?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von MSfree » 18.09.2024 12:11:38

michaa7 hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 12:03:42
...wie es dazu kam dass diese Symlinks fälschlicherweise so definiert wurden,
Die Links sind nicht fehlerhaft sondern völlig korrekt.

Benutzeravatar
QT
Beiträge: 1318
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von QT » 18.09.2024 12:24:10

Das kann man auch anders sehen. Sobald 1 solches Dateisystem per NFS woanders importiert wird, führt der führende Slash dazu, dass auf dem dortigen NFS Client das falsche /usr/bin verlinkt ist. Daher macht man keine Links mit absoluten Pfaden, um die Logik bei NFS Clients zu erhalten.

Beispiel:

Du importierst das / des NFS Server nach /mnt

Dann sollte /mnt/bin nach /mnt/usr/bin führen, durch den führenden Slash gehts aber lokal nach /usr/bin

Daher sind die Links mMn ohne führenden Slash richtig :D

Benutzeravatar
hikaru
Moderator
Beiträge: 13911
Registriert: 09.04.2008 12:48:59

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von hikaru » 18.09.2024 12:25:09

MSfree hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 12:11:38
Die Links sind nicht fehlerhaft sondern völlig korrekt.
Nein, sie sind nicht korrekt.
Wenn ich das root-Verzeichnis eines anderen Systems nach /mnt mounte und auf /mnt/bin zugreife, dann erwarte ich, dass ich auf die Inhalte von /mnt/usr/bin (das nach /mnt gemountete System) zugreife, nicht auf /usr/bin (das Host-System).

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von MSfree » 18.09.2024 13:03:44

hikaru hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 12:25:09
Wenn ich das root-Verzeichnis eines anderen Systems nach /mnt mounte und auf /mnt/bin zugreife, dann erwarte ich, dass ich auf die Inhalte von /mnt/usr/bin (das nach /mnt gemountete System) zugreife, nicht auf /usr/bin (das Host-System).
Und genau das passiert doch, wenn usr (ohne führenden Slash) auf usr/bin (ohne führenden Slash) verlinkt ist.

Benutzeravatar
towo
Beiträge: 4545
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von towo » 18.09.2024 13:14:09

Es gibt aber systeme, da wurde /bin => /usr/bin verlinkt und genau das war die Frage, einfach mal den Eingangspost genauer lesen.

michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von michaa7 » 18.09.2024 13:20:34

Es wird aber "/bin" verlinkt, nicht "bin" ... <- da bin ich nicht so sicher, das ist aber auch nicht die Frage. Es geht um den führenden slash des Zielpfades (wobei ich mit den Bezeichnungen auf Kriegsfuß stehe)
Es ist aber offenbar auch ein Frage der Perspective: Viele Seiten im Netz beschreiben die hier bestehenden Probleme aus Sicht des unprivilegierten Nutzers aus dessen home Verzeichnis heraus. Entsprechende Abfragen auf der Kommandozeile müssen dann "ls -ld /bin" lauten:

Code: Alles auswählen

~$ ls -ld /bin
lrwxrwxrwx 1 root root 7 22. Jul 2021  /bin -> usr/bin
Startet man die Abfrage aus "/" kann es auch so aussehen:

Code: Alles auswählen

/$ ls -ld bin
lrwxrwxrwx 1 root root 7 22. Jul 2021  bin -> usr/bin



In der "man ln" wird auch erwähnt das symlinks den Pfad immer *relative* zum Elternverzeichnis des Links auflösen. Das ist für mich zumindest ein Hinweis darauf, dass dieser Link keinen absoluten Pfad für das Ziel (?) nutzen sollte.

Die eigentliche Frage für mich ist jedoch warum einige Systeme dies richtig ohne führenden slash machen, andere mit slash .... und dann in Probleme laufen wie derzeit sid(uction) Nutzer mit dem Paket base-files was mit der falschen Verlinkung nicht aktualisierbar ist.

Zudem sind in "/" alle Links ohne führenden "/" verlinkt, so auch vmlinuz und initrd.img
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

tobo
Beiträge: 2346
Registriert: 10.12.2008 10:51:41

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von tobo » 18.09.2024 15:26:50

michaa7 hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 13:20:34
Die eigentliche Frage für mich ist jedoch warum einige Systeme dies richtig ohne führenden slash machen, andere mit slash .... und dann in Probleme laufen wie derzeit sid(uction) Nutzer mit dem Paket base-files was mit der falschen Verlinkung nicht aktualisierbar ist.
Hast du dir das nicht schon selbst beantwortet? Man kann auf ein und dieselbe Datei relativ oder absolut verlinken und dann ist das entweder richtig oder falsch:

Code: Alles auswählen

$ pwd
/home/tobo
$ touch f
$ ln -s ~/f l1  ##absoluter Pfad
$ ln -s f l2    ##relativer Pfad
$ ll -d f l?
-rw------- 1 tobo tobo  0 2024-09-18 15:22 f
lrwxrwxrwx 1 tobo tobo 12 2024-09-18 15:22 l1 -> /home/tobo/f
lrwxrwxrwx 1 tobo tobo  1 2024-09-18 15:23 l2 -> f
$

Benutzeravatar
cosinus
Beiträge: 4202
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von cosinus » 18.09.2024 15:38:03

Richtig ist ohne führenden Slash.

michaa7
Beiträge: 4927
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von michaa7 » 18.09.2024 15:53:41

tobo hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 15:26:50
...
Hast du dir das nicht schon selbst beantwortet? ...
Nein. (Und nochmals, das ist eine reine Frage aus Neugier. Niemand sollte deshalb irgendwelchen Aufwand betreiben)
Dass es *ohne* slash richtig ist ... ist klar ... aber eben nicht die Frage.


Das sind ja Links, die kein Mensch manuell einrichtet. Das muß ja von einem Paket eingerichtet worden sein. Da es aber bei "usrmerge" dazu keinen Bug gibt, andererseits sowohl hier als auch im siduction forum dazu Anfragen aufgetaucht waren wollte ich verstehen warum es in einem System mit, im anderen ohne führenden slash eingefügt wurde.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
cosinus
Beiträge: 4202
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von cosinus » 18.09.2024 16:32:41

michaa7 hat geschrieben: ↑ zum Beitrag ↑
18.09.2024 15:53:41
wollte ich verstehen warum es in einem System mit, im anderen ohne führenden slash eingefügt wurde.
In welchen anderen Systemen ist das denn mit führendem Slash?

Benutzeravatar
towo
Beiträge: 4545
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von towo » 18.09.2024 16:37:34


Benutzeravatar
cosinus
Beiträge: 4202
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Frage zu: /bin -> (/)usr/bin

Beitrag von cosinus » 18.09.2024 16:39:22

Hm. Also ich habs nicht. Aber das könnte daran liegen, dass ich ursprünglich ein echtes Debian hatte und das zu einem siduction umbaute.
Ich schau mir nachher mal meinen PC zu Hause an.

Antworten