Seiten: [1]
|
|
|
|
Autor
|
Thema: Ein Paket in einer chroot - Umgebung bauen (Gelesen 7567 mal)
|
|
Andreas
Administrator
Offline
Einträge: 1319
Linux von Innen
|
|
Ein Paket in einer chroot - Umgebung bauen
« 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!! ...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:paru --chroot -S <Name_des_Paketes> |
| Die oben beschriebenen Schritte sind damit allesamt überflüssig geworden.
LG Andreas
|
« Letzte Änderung: 15. Juni 2022, 10:21:04 von Andreas » |
Gespeichert
|
Wissen ist das einzige Gut, das mehr wird, wenn man es teilt - wenn es Menschen gibt, die es teilen, und es Menschen gibt, die bereit sind, dieses Geschenk auch mit eigenem Einsatz anzunehmen.
Freiheit zu erkämpfen reicht nicht. Man muss sie auch verteidigen.
Ohne IT-Kompetenz ist man heutzutage ein willkommenes Opfer und Spielball anderer, egal, welches System oder Gerät man nutzt. Nur Wissen schützt vor Schaden!
|
|
|
Sebastian
Sr. Member
Online
Einträge: 487
|
|
Re:Ein Paket in einer chroot - Umgebung bauen
« Antwort #1 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 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"
|
|
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Seiten: [1]
|
|
|
|
|
|
|