symlinki między katalogami - względne czy bezwzględne?

Jakub Bogusz qboosh w pld.org.pl
Śro, 30 Paź 2002, 16:03:48 CET


Trzeba określić zasady stosowania symlinków względnych i bezwzględnych
między różnymi katalogami - w celu używania ich konsekwentnie
w dystrybucji.

Do tej pory nie było konsekwencji nawet w ramach jednego pakietu:

$ ls -l /etc/X11/xkb/
[...]
lrwxrwxrwx    1 root     root           26 2001-05-31  compiled -> ../../../../../var/lib/xkb
[...]
lrwxrwxrwx    1 root     root           22 2001-05-31  xkbcomp -> /usr/X11R6/bin/xkbcomp

...ani w ramach jednego celu (/usr/lib/sendmail - w sendmailu,
postfiksie i masqmailu były względne, w eximie i omta bezwzględne).
Podobnie symlinki /usr/lib/libcoś.so -> /lib/libcoś.so.*.

Względne symlinki sprawiają problemy, jeśli trzeba przenieść
(najczęściej z braku miejsca na dotychczasowej partycji jakiś katalog na
inną, niepustą partycję (np. mv /usr /vol1/usr ; ln -s /vol1/usr /usr).
Do obejścia na jądrach 2.4 przez mount --bind. Ale w Ra oficjalnie jest
2.2 bez takiej możliwości.

Bezwzględne symlinki sprawiają problemy:
a) przy podmontowaniu systemu plików w innym miejscu (np. /mnt w celach
naprawczych) - do obejścia przez chroot. A przy oglądaniu plików na tak
podmontowanym systemie i tak trzeba uważać na symlinki.
b) jeśli cały fs jest serwowany po NFS z katalogu innego niż / - to
symlinki będą działać poprawnie po stronie klienta, ale wskazywać nie to
co trzeba po stronie serwera.

Po natrafieniu na opisane problemy z symlinkami względnymi (kilka minut
szukałem na jednej maszynce, dlaczego linker nie widzi paru bibliotek)
i po poruszeniu tematu na pcol (użytkownik PLD naciął się na to samo)
zacząłem zmieniać na bezwzględne - ale te też nie każdemu się
podobają...

W przypadku symlinków w tym samym katalogu nie ma problemu - względne,
nie ma sensu wydłużania ścieżek. W przypadku symlinków w jakichś
głębszych drzewkach dla danego pakietu oprogramowania raczej też.

Do ustalenia:
- jakie mają być symlinki pomiędzy plikami/katalogami umieszczonymi
  w różnych katalogach / (/etc, /lib, /usr, /var)?
- jakie między plikami/katalogami umieszczonymi w różnych katalogach
  /usr (/usr/lib, /usr/bin, /usr/sbin, /usr/X11R6)?
- ew. to samo w ramach hierarchii /usr/X11R6
- w innych przypadkach - chyba mogą być względne.

Do zastosowania: wyniki ww. ustaleń :>

W ramach podglądania innych dystrybucji: Debian Policy Manual sugeruje
stosowanie bezwzględnych symlinków między różnymi katalogami /,
a względnych w pozostałych przypadkach.


Aha, rozważanie sensowności istnienia poszczególnych symlinków nie jest
tematem tego wątku :>
(może być później, już po ustaleniu rodzaju stosowanych symlinków) 


-- 
Jakub Bogusz



Więcej informacji o liście dyskusyjnej pld-devel-pl