orm@doc-tcpip.org

Erstellt: Januar 2007 - Letzte Modifikation: Oktober 2013

[ Main | Local ]


Arbeiten mit cvs


CVS root Verzeichnis - CVSROOT

Das ist ein Pfad wie jeder andere, der dem cvs Kommando sagt, wo es das Dateisystem mit den Sourcen (oder sonstigen Daten) finden kann - das ist das Repository. Im Prinzip ein URL. Damit erfährt das System, ob das Repository lokal oder remote ist, und wie es darauf zugreifen soll (zb. SSH oder CVS password).

Eingestellt wird das alles über einen Satz an Shell-Variablen, die man einmal passend setzen muss. Beim ersten Start wird diese strukturelle Information dann in das CVS Filesystem, was im ausgecheckten Verzeichnis angelegt wird.

 
Ein lokales CVSROOT (oder per NFS gemounted):

CVSROOT=/devel/src/cvsroot

Ein remotes per SSH (CVS_RSH muss gesetzt sein):
CVSROOT=devon@devel.orm.org:/devel/src/
oder
CVSROOT=:ext:cvsuser@cvs1.devel.example.com:/CVS/src
CVS_SERVER=/usr/bin/cvs
CVS_RSH=ssh

Mit einem remoten password server (man braucht user und login):
CVSROOT=:pserver:devel@cvs1.devel.example.com:/CVS/src

Wie komme ich an die Sourcen?

Dazu brauche ich einen Zugang (User, Password, Key), ich muss den Server wissen und den Pfad, unter dem die Source bereit gestellt werden. Mit dieser Information kann ich den ganzen Pfad an eine beliebige Stelle auf meinem lokalen Rechner auschecken; z.B. bin ich in /home/orm/devel und möchte "super_prg" auschecken:

export CVSROOT=:ext:cvsuser@cvs1.devel.example.com:/CVS/src
export CVS_RSH=ssh

cvs checkout super_prg    
(oder cvs co super_prg, wenn es viel ist, kann ich mit -z komprimieren) 

CVS kopiert jetzt alle Files auf meine Platte, und zeigt mir das 
mit einem "U pfad/file" an. Das "U" sehe ich auch in der Zukunft,
wenn das File neugeschrieben wird (weil es sich geändert hat).

Jetzt habe ich also in dem Pfad /home/orm/devel/super_prg die sourcen auf meiner Maschine, und CVS hat alle nötigen Information dort in den Files in /home/orm/devel/super_prg/CVS abgelegt. Ich brauche also die Environment Variablen eigentlich nicht mehr.

Die Sourcen synchronsieren - cvs update

Dieses Kommando zieht alle Änderungen vom Repository in den eigenen Baum. Dazu geht man in das Start-Verzeichnis des Modules, was man ausgescheckt hat (im Beispiel /home/orm/devel/super_prg). Dort wird das Update Kommando gestartet.

cvs update -dP   
-d Legt neue Verzeichnisse an, die im Repository dazugekommen sind
-P Löscht leere Verzeichnisse im lokalen Respository

Das Update macht man auch, bevor man ein geändertes File eincheckt. Eigene Änderungen gehen bei dem Update nicht verloren.

Das cvs gibt pro File einen Status:


Eigene Änderungen ins Repository schreiben - cvs commit

 
ata2:  at port 0x100-0x10f irq 11 function 0 config 1 on
pccard0
ata2: [MPSAFE]
GEOM: create disk ad4 dp=0xc50aa560
ad4: 1027MB  [2088/16/63] at ata2-master PIO2
Auf dem Drive gibt es jetzt mindestens eine Slice, die (weil es vom XP Laptop kommt) natürlich MSDOS formatiert ist. Also:
 
mount_msdosfs /dev/ad4s1 /mnt
Und vor dem Ausstoßen immer umount machen...

FBSD bootet nicht

FBSD bootet nicht - rc.conf hat einen schadhaften Eintrag.
- booten in Single User Mode (da werden nur die Devices gecheckt,
  aber die rc.conf wird nicht ausgeführt.)
- / ist readonly, also mit rw neu mounten:
     mount -o rw /dev/ad0s1 /  (Oder wie das Device heisst - zeigt 
     das mount-Kommando)
- ed gegen die Datei. Findet sich in /bin.

Automounter amd

amd
File /etc/amd.cdrom
#Automount des CDRom
cdrom		type:=cdfs;dev:=/dev/acd0;opts:=ro

File /etc/amd.conf

#Global Options
[global]
auto_dir = /.amd_mnt
log_file = /var/log/amd

# cdrom Map
[ /auto ]
map_name = /etc/amd.cdrom

Aufruf des amd jetzt mit amd -F /etc/amd.conf - 
kann man aber auch weglassen, da /etc/amd.conf
der Default ist:
amd 

Das sieht dann so aus:
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /data (ufs, local, soft-updates)
/dev/ad0s1h on /home (ufs, local, soft-updates)
/dev/ad0s1f on /tmp (ufs, local, soft-updates)
/dev/ad0s1g on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
procfs on /proc (procfs, local)
pid594@elazul:/auto on /auto (nfs)

Wenn ich jetzt nach /auto wechsle, passiert nichts.
Es stehen dort auch keine Files, das Verzeichnis ist
leer.

Ich muß wissen, daß ich dort nach cdrom
wechseln kann - oder der Administrator muß
einen symbolischen Link für /cdrom erzeugt 
haben:


Wenn ich dann nach cdrom bzw. /auto/cdrom wechsle, wird
das CD gemountet.

Was dann so aussieht:
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /data (ufs, local, soft-updates)
/dev/ad0s1h on /home (ufs, local, soft-updates)
/dev/ad0s1f on /tmp (ufs, local, soft-updates)
/dev/ad0s1g on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
procfs on /proc (procfs, local)
pid594@elazul:/a on /a (nfs)
/dev/acd0 on /.amd_mnt/elazul/auto/cdrom (cd9660, local, read-only)

Dabei im Verzeichnis /auto die Links zu diesem Automountpoint
(.amd_mnt):
#ls -l /a
total 1
lrwxrwxrwx  1 root  wheel  24 Jul 16 11:34 cdrom -> /.amd_mnt/elazul/auto/cdrom

Bei Nichtbenutzung wird der Mount nach 2 minuten wieder abgebaut.

Eintrag in die rc.conf:

amd_enable="YES"
amd_flags=" "

#cd /autofs/cdrom
Jul 16 11:50:41 elazul kernel: cd9660: Joliet Extension (Level 3)

Für den großen Luxus: Symlink von /cdrom nach /autofs/cdrom.

Der Automounter amd hat einen Administrations-Client amq:
Ausgabe von amq:

/            root    "root"          elazul:(pid706)
/auto        toplvl  /etc/amd.cdrom  /auto
/auto/cdrom  cdfs    /dev/acd0       /.amd_mnt/elazul/auto/cdrom

Für einzelne Mounts die Statistiken:
amq /auto/cdrom
What         Uid   Getattr Lookup RdDir   RdLnk   Statfs Mounted@
/auto/cdrom  0     3       0      0       1       0      04/07/18 22:40:13

Weiterhin:
amq -v
amq -f ==> re-Read Datenfiles
amq -u /auto/cdrom ==> Umount des Filesystems

Beispielfile für ein Map-file:
/etc/amd.home

/defaults	type:=nfs; opts:=nosuid,quota,intr,rw
# Default Settings für alle folgenden Mounts
# Der Typ des mounts ist nfs, nosuid verhindert die 
# Execution von Programmen, die das SUID Bit gesetzt
# haben (die laufen schon, aber nicht SUID).
# quota aktiviert den Quota-Support für das NFS
# gemountete FS, intr sorgt dafür, daß der Mount 
# mit CTRL C unterbrochen werden kann.
# rw läßt lesen und schreiben zu.
orm		-rhost:=elbueno; rfs:=/data1/user; sublink:=${key} \
		host!=${rhost}; type:= nfs \
		host==${rhost}; type:= link
# Das Minus-Zeichen kennzeichnet Optionen, die für 
# diesen Eintrag gelten. Diese Optionen haben Priorität
# gegenüber den Defaults. Der Name des Eintrags (orm)
# ist der Key. rhost zeigt den Server, der das rfs, das 
# remote Filesystem, exportiert. Die sublink Option weist
# darauf hin, daß /data1/user/orm kein eigenes FS ist.
# Gemountet wird effektiv also /data1/user.
# Die host!= Zeile zeigt an, was getan wird, wenn
# der lokale Hostname nicht der Name des rhosts ist.
# Im zweiten Fall (host==) ist man auf der Maschine,
# die als Server exportiert - daher wird das FS direkt
# gemountet (Typ link).
hugo		-rhost:=elazul; rfs:=/u/home; sublink:=${key} \
		host!=${rhost}; type:= nfs \
		host==${rhost}; type:= link

[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )