Eine Antwort schreiben

Schreibe deinen Beitrag und versende ihn
Beitragsoptionen
Deine Antwort

Zurück

Themen-Übersicht (Neuester Beitrag zuerst)

drcux
16.12.2017 23:43:09

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

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

Basher
16.12.2017 20:01:43

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)"
drcux
15.12.2017 20:50:15

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

rriw
15.12.2017 19:06:12

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?

drcux
14.12.2017 21:03:41

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.

Schard-nologin
14.12.2017 10:21:07

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

malte
14.12.2017 06:29:31

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

drcux
13.12.2017 20:50:59

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

Fußzeile des Forums

Powered by FluxBB