#1 13.12.2017 20:50:59

drcux
Mitglied

Buildskript

Da ich Angst habe, langsam das (Bash-)Programmieren zu verlernen, habe ich mir mal ein kleines Skript geschrieben um Pakete in einer frischen Chroot zu erstellen. Ja, ich weiß, gibt es alles....
Ich wollte nur mal schauen, wie "kurz" man das lösen kann.

Hat jemand Verbesserungsvorschläge? Habe ich etwas übersehen?

Wie gesagt, nur zur Inübungshaltung! ;-)

https://wiki.archlinux.de/title/Benutzer:Drcux

Offline

#2 14.12.2017 06:29:31

malte
Mitglied

Re: Buildskript

Moin!

Ich habe mal ein paar Anpassungen vorgenommen:

  • $buildroot sollte IMHO unterhalb von /var/abs liegen; auch wenn es das altbekannte abs-Skript nicht mehr gibt, verwende ich z.B. dieses Verzeichnis weiterhin, um dort AUR-Paket-Repos zu klonen.

  • Da das Skript nur als root funktioniert, sollte vor dem ersten mount-Befehl bei einer UID ungleich 0 mit einer entsprechenden Fehlermeldung abgebrochen werden

  • Nach erfolgreichem Erstellen des Pakets wird es in das aktuelle Verzeichnis kopiert

malte70/pbuild.sh @gist.github.com

mfg
Malte

Offline

#3 14.12.2017 10:21:07

Schard-nologin
Gast

Re: Buildskript

Also ich denke, dass es eher zweitrangig ist, wo das Build System liegt.
Bei mir liegt es auf einem Debian Server in /home/abs. Darunter befindet sich eine extrem minimalistische Arch Linux Installation, innerhalb welcher ich per chroot Pakete baue.

Zum Skript: Mir fällt nichts groß negatives auf.
Wenn es funktioniert, gut.
Zum Thema sich im bash Skripten fit zu halten gab es vor ein paar Tagen einen interessanten Artikel zu Arrays auf pro-linux.de.

http://www.pro-linux.de/artikel/2/1914/ … rrays.html

#4 14.12.2017 21:03:41

drcux
Mitglied

Re: Buildskript

Danke für eure Rückmeldungen!

- Tja, wohin er baut war bei mir halt in /home weil ich dort genug Platz habe. ;-)
- Das mit "auf root testen" hatte ich total vergessen, danke.
- Mit dem Kopieren war ich mir noch nicht sicher, ob ich sogar in $repodir ein Repository erstelle.
- Der Link ist gut, mit Arrays in der bash habe ich mich noch nie wirklich tiefer beschäftigt, immer nur gerade so, das es funktioniert.

Beitrag geändert von drcux (14.12.2017 21:16:03)

Offline

#5 15.12.2017 19:06:12

rriw
Gast

Re: Buildskript

Die ifs sind teilweise etwas verstaubt wink

Hier für /bin/bash:

$ buildroot='p r o b l e m'
$ if [ $buildroot"x" != "x" ] ; then echo ok ; fi
bash: [: too many arguments
$ if [ "${buildroot}x" != "x" ] ; then echo ok ; fi
ok
$ if [ -n "$buildroot" ] ; then echo ok ; fi
ok
$ if [[ -n $buildroot ]] ; then echo ok ; fi
ok

Da könntest du aber auch -d verwenden?

#6 15.12.2017 20:50:15

drcux
Mitglied

Re: Buildskript

Es geht dort nur um den Test, ob die Variable $buildroot überhaupt schon gesetzt ist, nicht ob das Verzeichnis existiert. Ich möchte halt nicht umount auf "nix" loslassen. "-d" passt also nicht, aber "-n" ist gut!

PS:

Hallo? Verstaubt? Bin doch nicht soooo alt..... wink

Offline

#7 16.12.2017 20:01:43

Basher
Gast

Re: Buildskript

Wenn $buildroot mal einen Pfad mit Whitespace enthält, dann tut das Skript nicht mehr was es soll. Besser also beispielsweise:

mkdir -p "${buildroot}/dev"

Die geschweiften Klammern sind nicht immer erforderlich, jedoch "guter Stil". Weitere "Stil"-Empfehlungen bietet Shell Style Guide. Zum Bleistift statt Backticks die Variante mit $() verwenden (bessere Lesbarkeit und kann im Bedarfsfall verschachtelt werden [bei gleichzeitig verwirrungsfreiem Quoting]):

echo -e "# START:\t\t $(date)"

#8 16.12.2017 23:43:09

drcux
Mitglied

Re: Buildskript

Ok, nun sieht es gut aus, denke ich ....

https://github.com/drcux/test/blob/master/pbuild.sh

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums