PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : /etc mit symlinks einchecken : PreservePermissions=yes Fehler



linuxhanz
29.07.04, 21:26
Hallo Hacker ;



Also ich moechte /etc als CVS Repository benutzen mit ( Pfad /usr/cvs/etc ).

Wenn ich einen checkout mache, bekomme ich als Root alle Dateien. Bis auf die Symlinks.
Also habe ich usr/cvs/etc/CVSROOT ausgecheckt, um die config Datei zu editieren.
PreservePermissions=yes soll laut

http://developer.apple.com/darwin/tools/cvs/cederquist/cvs_105.html#SEC106



if the configuration variable PreservePermissions
(see section C.12 The CVSROOT/config configuration file)
is set in the repository, CVS will save the following file
characteristics in the repository:

* user and group ownership
* permissions
* major and minor device numbers
* symbolic links
* hard link structure


dafuer zustaendig sein. Beim committen habe ich mich dann vertippt, und diese
Meldung beim Korrigieren des Typos entdeckt:


cvs admin: warning: this CVS does not support PreservePermissions


Was nun? Es ist ein Debian Binary.
Komme ich um ein Neukompilieren herum? *grrrr*

( Ein Vorschlag ist ja, die Symlinks hinterher zu committen... )

linuxhanz
30.07.04, 23:19
so also, nicht schoen aber etwas:



cd /etc/init.d; for i in `find . -type f -maxdepth 1` ; do /usr/sbin/update-rc.d -n $i defaults ; done


nach dem Auschecken , und die Symlinks sind wieder da.

update-rc.d ist ein Perl Script das nicht nur auf Debian funktionieren sollte.

-n simuliert nur.

Laut garbeam kann man auch die symlinks via cvs add -kb einchecken.

linuxhanz
03.09.04, 18:05
hm, bleibt noch das problem die restlichen symlinks anzulegen.
habe eine Liste der Symlinks erstellt:



test -f /root/etcsymlinks || find /etc \! -name "/etc/init.d" -type l -exec
/usr/bin/file {} >> /root/etcsymlinks \;


Das Problem ist: ln FILE LINK
Die Liste ist aber LINK is a symbolic link to FILE

gut, jetzt sage ich (ohne hardlinks):


cat /root/etcsymlinks|sed -e 's/: symbolic link to//'
|sed -e '1,$s/^ *\([^ ]*\) *\([^ ]*\)/\2 \1/'

Das heisst, es rauschen jrtzt die umgedrehten Argumente (FILE LINK) an mir vorbei.

Aber wie setzt ich jetzt die Links (So?):


while read zeile;
do
case $zeile in
[#]*) ;;
* ) cat /root/etcsymlinks |sed -e 's/: symbolic link to//' |sed -e
'1,$s/^ *\([^ ]*\) *\([^ ]*\)/\2 \1/' && sleep 1s
# possible?
while read zeile do ln -sf $1 $2;
;;
*)
echo "Usage: $0 {noargs}"
exit 1
;;
esac
done < /etc/symlinks



Ärgerlich auch, das nicht alle Links absolut sind *grummel*