Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Installation & Einrichtung => Thema von: Andreas am 03. August 2019, 12:30:51

Titel: Ein Paket in einer chroot - Umgebung bauen
Beitrag von: Andreas am 03. August 2019, 12:30:51

"Möge die Macht mit Dir sein" - trifft für Arch Linux zu 100% zu...

Ich habe aktuell ein Paket aus den AURs, das auf dem "normalen Wege" nicht bauen will - es findet irgendwelche Deklarationen nicht und das ist natürlich ein fataler Fehler der zum Abbruch führt.

Das ist im Moment das Paket "qt4" - einige, die eine Installation von mir haben haben dieses Paket. Das Update hakt bei diesem Paket.

Eine Recherche im Internet ergab, dass es manchmal hilft, das Paket in einer "chroot-Umgebung" zu bauen. OK: Versuch macht kluch ::)

Was habe ich getan? (alles als normaler User!!)

1) Als erstes die devtools installieren mit dem Befehl: sudo pacman -S devtools
2) Einen geeigneten Ordner erstellen mit: mkdir ~/chroot
3) Diesen Ordner in eine Environment-Variable packen mit: CHROOT=~/chroot/
4) Das chroot vorbereiten mit: mkarchroot $CHROOT/root base-devel
5) Dafür sorgen dass auch im chroot alles up2date ist mit: arch-nspawn $CHROOT/root pacman -Syu
6) In das Verzeichnis des Paketes wechseln da nicht baut (in diesem Fall qt4) mit: cd ~/.cache/yay/qt4/
7) Das Paket nun in der chroot-Umgebung bauen mit: makechrootpkg -c -r $CHROOT
...und siehe da: nach etlichen Minuten ein Abschluss OHNE FEHLERMELDUNG!!
8) ...Also nur noch das fertige Paket installieren mit: sudo pacman -U qt4-4.8.7-31-x86_64.pkg.tar.xz

EDIT:
Beim letzten Befehl ist es sinnvoll nur die ersten Buchstaben des Paketnamens einzugeben und dann mit <TAB> ergänzen zu lassen - niemand kennt die volle Bezeichnung incl. aller Nummern und Bide-/Unterstriche...

Das wars - "ich habe fertig" ::)

Braucht man das nochmal wieder, müssen nicht alle Schritte wiederholt werden, weil die Ordner ja jetzt schon da sind. Es müssen dann nur noch:
CHROOT=~/chroot/
arch-nspawn $CHROOT/root pacman -Syu
cd ~/.cache/yay/paketname/
makechrootpkg -c -r $CHROOT
sudo pacman -U paketname.pkg.tar.xz


EDIT:
Heute (4.09.2019) kam das Problem beim Bau des "gcc6" bei mir. Der gcc6 besteht aus mehreren verschiedenen Einzelpaketen, die alle gemeinsam installiert werden müssen - sonst schlägt die Installation wegen fehlender Abhängigkeiten fehl. Man kann den gcc6 nach den Anweisungen von oben bauen - beim Installieren muss man alle gcc6-* - Pakete aus dem Ordner IN EINE ZEILE zum Installieren schreiben. Also z.B. sudo pacman -U gcc6-blablabla.pkg.tar.xz gg6-blublu.pkg.tar.xz gcc6-bufbuf.pkg.tar.xz

LG
Andreas


Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.