distfiles archivieren

lantis

Sascha Retzki
Mööp,


Ok, ein wenig Kontext: Wir haben hier FreeBSD auf versch. AMPs oder ähnlichen Webapplikationen, für unsere Entwickler als Testmaschinen zum kaputtfummeln. D.h. das wir z.b. mal ne AMPel mit PHP4 brauchen, hier mal eine mit PHP5, da mit Java, etc.pp. Des weiteren nehmen wir auch etwas ältere Versionen, weil erfahrungsgemäß nicht alle Welt sofort updatet oder updaten kann.


Nun begab es sich zu der Zeit Anno 2005, das ich ungefähr zwei Tage nach ner MySQL4-versi gesucht habe, weil das Wort "Archiv" ein Fremdwort für Delphine zu seien scheint.


Idee: Selbermachen. D.h. ich will nen fbsd-rechner, der den ganzen tag praktisch nichts anderes tut als die ports zu updaten, distfiles von definierten ports zu ziehen, zu archivieren, und wieder zu updaten, usw.


Frage: Kennt ihr sowas, gibbet das scho? Wenn nein, wer macht mit? Ich mach das sowieso irgendwann, bin aber bei FreeBSD leicht neu ;-)


Mfg, Saschi
 

TCM

Well-Known Member
sollte nicht ein make fetch im obersten level des ports tree alle distfiles von allen ports ziehen?

edit: ah, definierte ports. dann halt kleines script machen, welches aus einer datei ne liste einliest.
 

CAMISOLITE

Well-Known Member
Vorausgesetzt ich habe Dich jetzt richtig verstanden, würde ich sagen, daß ich ähnliches für pkgsrc vorhabe. Die Vorgehensweise sollte sich nicht großartig unterscheiden.
 

lantis

Sascha Retzki
lantis schrieb:
Idee: Selbermachen.

Code:
#/bin/sh

export portlist="lang/php4 lang/php5 databases/mysql41-server databases/mysql40-
server databases/mysql50-server www/apache13 www/apache2 www/apache20 www/apache
21"


#danke paefchen ;-)
if test `id -u` != "0"; then
        echo "you are not root!??!?" ;
       exit 1
fi

cd /usr/ports

# nach näherer betrachtung ist das und das fehlende updaten des portstrees als solches doch ein nachteil dieses scripts, *lol*
rm -rf distfiles/*


for i in $portlist; do
        cd $i ;
        make fetch 2>&1 >/dev/null &&
                echo "$i success" ||
                echo "$i failed" ;
        cd ../../ ;
done
cp distfiles/* ~/archieve/`date "+ %d.%m.%Y"`/

So far. Java wird ein wenig komplizierter ^^
 
Zuletzt bearbeitet:

MrFixit

aka uqs
Oeh .... periodisches 'make update && portupgrade -F foo bar baz' reicht nicht? Zum "archivieren" reicht es ja einfach, /usr/ports/distfiles nie zu loeschen ;]

Update: -RF macht vielleicht mehr Sinn :D
 
Zuletzt bearbeitet:

0815Chaot

FreeBSD/sparc64-Tüftler
lantis schrieb:
export portlist=[...]
Das export kannst du dir schenken. Eigentlich brauchst du die ganze Variable nicht, weil du die Liste direkt in den for-Schleifen-Kopf verfrachten kannst. Man könnte aber auch in Erwägung ziehen, die ganze Liste in eine Datei auszulagern.

lantis schrieb:
# nach näherer betrachtung ist das und das fehlende updaten des portstrees als solches doch ein nachteil dieses scripts, *lol*
Wie man den Portstree aktualisiert steht im Wiki, von daher sehe ich hier das Problem nicht.

lantis schrieb:
for i in $portlist; do
cd $i ;
make fetch 2>&1 >/dev/null &&
echo "$i success" ||
echo "$i failed" ;
cd ../../ ;
done
Wieso machst du ständig Semikolons hinter Befehle? Im Übrigen kannst du dir auch das cd ../../ sparen, wenn du aus cd $i einfach cd /usr/ports/$i machst. Davon abgesehen solltest du nicht make fetch sondern make fetch-recursive verwenden. Anderenfalls kann es dir passieren, daß du bei den Abhängigkeiten ebenfalls das Problem bekommst, das du eigentlich mit deinem Skript vermeiden wolltest.

lantis schrieb:
cp distfiles/* ~/archieve/`date "+ %d.%m.%Y"`/
Du mußt das Zielverzeichnis vorher anlegen. Zum Glück hast du wenigstens den Backslash am Ende angehängt, sonst hätte an dieser Stelle massiver Daten"schwund" gedroht. (Aside, archive is spelled with one e only. ;))

lantis schrieb:
Java wird ein wenig komplizierte
Du solltest die Skriptsprache wechseln. Mit Perl dürfte das nämlich funktionieren. Wenn ich da allerdings an das Download-Procedere auf der Sun-Seite denke, dürfte das ganze nicht gerade trivial werden. Naja, viel Glück.
 
Oben