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
EDIT: (15.06.2022) Das Bauen in einer chroot-Umgebung geht mit Hilfe eines kleinen Helper-Programmes noch einfacher. Installier paru. Dann könnt ihr jedes AUR-Paket mit dieser Syntax in einer chroot-Umgebung bauen und installieren: Code:
paru --chroot -S <Name_des_Paketes> |
| Die oben beschriebenen Schritte sind damit allesamt überflüssig geworden.
LG Andreas |
Titel: Re:Ein Paket in einer chroot - Umgebung bauen
Beitrag von: Sebastian am 11. August 2022, 19:51:42
Vielen dank Andreas, die Tools mkarchroot, arch-nspawn und makechrootpkg kannte ich noch nicht.
Ich war erst am Rätseln warum du in deinem /chroot/ Ordner einen weiteren Ordner /chroot/root erstellt hast, und nicht einfach im /choot/ Verzeichnis die Sachen baust. Nach kurzer Recherche über die drei Tools, was die so können habe ich schnell die Antwort (https://man.archlinux.org/man/makechrootpkg.1) dazu gefunden.
The chroot dir consists of the following directories: <chrootdir>/{root, copy} but only "root" is required by default. The working copy will be created as needed
The chroot "root" directory must be created via the following command: mkarchroot <chrootdir>/root base-devel
|
|
An den Spruch ist also wirklich was dran: "Read the Manual" ;D |
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
|