[linux-l] Platz fuer eigene Scripte

Stefan Bund sbund at artec-berlin.com
Fr Mai 24 09:46:19 CEST 2002


"Baerwaldt, Ralf" <Ralf.Baerwaldt at Dresdner-Bank.com> writes:
[...]
> Alle eigene System-Scripte (also nicht Dateien, die nach HOME
> gehoeren) kommen in eine Verzeichnisstruktur
> unterhalb von "/u":
>   /u/etc
>   /u/etc/init.d
>   /u/bin
>   /u/sbin
>   /u/usr/local/bin
>   ...
>
> Diese Dateien werden dann in das "normale" root-Verzeichnis
> kopiert: "tar cC /u -f - | tar xC / -f -"
[...]

Unter debian mache ich das alles mit 'stow' in /usr/local (Ich weiß
nicht genau, aber ich glaube das stow nicht debian-spezifisch
ist). Falls jemand stow nicht kennt: Ist die beste Erfindung seit es
die Package-managementsysteme gibt (meine subjektive meinung).

Stow vewaltet /usr/local. Das funktioniert so: alles wird nach
/usr/local/stow/<paketname>/...<pfad>... instaliert (also meine
skripte liegen z.Bsp. unter
/usr/local/stow/local-tools/bin/<script-name>. Mit dem tool 'stow'
werden nun automatisch alle diese Dateien unter /usr/local/stow in die
entsprechenden Dateien unter /usr/local/ ge-sym-linkt. Dabei meldet
stow Konflikte mit anderen Paketen und optimiert die Symlinkstruktur
wirklich vorbildlich. Mit 'stow -D' kann man ein Paket wieder
de-installieren.

Das funktioniert absolut wunderprächtig, gerade auch mit
selbstkompilierter software: 
 
  ./configure --prefix=/usr/local/stow/<paket>
  sudo mkdir /usr/local/stow/<paket>
  sudo chown `whoami` /usr/local/stow/<paket>
  make
  make install

und wenn alles geklappt hat:
  
  sudo chown -R root.root /usr/local/stow/<paket>
  cd /usr/local/stow
  sudo stow <paket>

dann habe ich gleichzeitig die absolute Sicherheit, das *nichts*
ausserhalb von /usr/local/stow/<paket> installiert wurde, weil ich das
'make install' als user und nicht als root auführe (das klappt
natürlich nicht, wenn make install irgendwelche devices anlegt oder
mit chown ownership setzt, aber das ist ja schon eher selten, und dann
muß ich halt doch mal das Makefile wirklich lesen um sicherzugehen
...)

Manche Pakete sind ein bischen blöd (z.Bsp: suns JDK). Da installiere
ich das binärpaket einfach unter /usr/local/stow/<paket>/<paket> und
linke dann die binaries nach /usr/local/stow/<paket>/bin u.s.w. Dann
liegt nach dem stow-ing das JDK direkt unter /usr/local/<paket> und
die binaries finden sich aber auch unter /usr/local/bin/... . So solls
ein. 

Das funktioniert jetzt hier seit einiger Zeit ganz
hervoragend. Endlich kein chaos mehr. Damit das alles schön ist habe
ich jetzt auch '/usr/local/etc' und '/usr/local/share/doc'
Verzeichnisse. Und wenn ich eine datei wirklich unter /etc brauche,
mache ich meistens einen symlink nach /usr/local/etc. Dann weiß ich
immer noch, das die Datei zu einem /usr/local-Programm gehört.

Stefan.



Mehr Informationen über die Mailingliste linux-l