Mein Skript
So, hatte vor ca. ner Woche diesen Thread gelesen und hab mich Erinnert, das ich auch mal ein Skript schreiben wollte.
Nun ja, wenigstens hab ich wieder lust bekommen und hab 'mein' Skript mal angehängt.
Dem Skript muss ein Packagename übergeben werden, ich hab kein automatisches Update von *allen* Packeten geschrieben und werd das auch schön lassen, da ich wahrscheinlich in der Testphase schon meine kompletten pkg's zerschießen würde.
Aufruf des skripts:
Code:
./pkg_update.sh sudo-1.6.8pl9nb2
Diesen 'kompletten' Packagenamen + Versionnummer bekommt man mit
Code:
pkg_info -a | grep "$PKG_NAME"
Also z.b.
Code:
$ pkg_info -a | grep sudo
sudo-1.6.8pl12nb1 Allow others to run commands as root
Das skript holt sich aus /var/db/pkg/$PKG_NAME/+BUILD_INFO den $PKG_PATH, also z.b. security/sudo
Dann schaut es im Makefile von 'sudo' nach dependencys und schau bei denen ebenfalls nach dependencys bis es anfängt die dependencys zu bauen, bis es beim 'eigentlichen' packet wieder angelang ist.
FIXME: Das skript baut die dependency auch, wenn die version schon voll genügt. Ich hab leider keine ahnung wie ich herausbekommen kann, welche version das Packet braucht und so gegebenfalls diese Dependency zu übergehn, was das updaten sehr beschleunigen würde.
U.a holt es sich auch aus der +BUILD_INFO die, wenn vorhanden, PKG_OPTIONS, d.h. das Packet wird beim updaten mit den selben PKG_OPTIONS gebaut wie vorher.
Bei mir funktioniet das skript und hat, bis jetzt, noch nix zerschossen
3 Variablen müssen am Anfang definiert werden:
Code:
#############################################
#
# "must" defined variables
[ "$PKGSRCDIR" ] || PKGSRCDIR="/usr/pkgsrc"
[ "$PKG_DB" ] || PKG_DB="/var/db/pkg"
[ "$MAIL_ADDR" ] || MAIL_ADDR="root"
Fehler werden zu MAIL_ADDR gemailt (mit dem kommando 'mail')
PKGSRCDIR ist meistens /usr/pkgsrc
PKG_DB ist auch eigentlich /var/db/pkg
Falls jemand Fehler u.ä. findet oder einfach mal meckern möchte, so soll er dies doch tun
btw, das ist meiner erstes *richtiges* shell skript was mehr als 5 zeilen und 2 'if' abfragen hatt.
Es basiert u.a. auf 'gwak', 'sed' und 'grep' sind AFAIK immer installiert
MfG