Du bist nicht angemeldet.
Guten Tag Zusammen,
wie ich sehe war ich hier schon sehr lange nicht mehr aktiv :-)
Ich nutze weiterhin Archlinux und bin sehr zufrieden.
Nun möchte ich jedoch mein System bzw die Art und Weise wie ich mit Paketen aus dem AUR umgehe optimieren bzw voll automatisieren.
Da ich einige Pakete nutze die für meine tragbaren Geräte unmöglich sind zu kompilieren (weil es fast ein Tag dauert. Thinkpads. X250 u. T530. i5 u. i7), habe ich auf meinem Desktop eine virtuelle Maschine gebaut, und baue darin meine AUR Pakete für den Desktop selbst und die tragbaren Geräte.
Dank Threadripper (1950x), dauert das auch dann nicht einen Tag, sondern nur wenige Minuten.
Baue die deswegen (weil im IRC schon gefragt worden bin) in einer VM, weil man so sauber die CPU Threads trennen kann. Da nicht alle Pakete bzw compiler sich an die Threadangabe in makepkg.conf halten. Klar könnte man noch mit nice oder CPU Pinning oder Isolation arbeiten, aber das ist viel zu viel Aufwand, und vor allem zu unflexibel (da diese Kerne dann dauerhaft dem System "entnommen" werden, bis ein berechtigtes Programm Zugriff darauf fordert).
Bis jetzt mache ich es so das ich die VM mit Archlinux darauf starte, und ein selbstgeschriebenes Skript starte. Dieses prüft ob meine AUR Pakete aktuell sind und wenn nicht baut er diese und verschiebt das Paket in mein lokales Reporsitory und aktualisiert die Datenbank des Repos. Und die Clients können dann bequem per pacman installieren/aktualisieren.
Nun ist es bis jetzt jedoch so, das ich dabei sein muss. Weil immer wenn z.B Abhängigkeiten aufgelöst werden müssen, ich nach dem root Passwort gefragt werde. Klar, könnte ich umgehen in dem ich die Pakete einfach mit root baue, dann fragt pacman jedoch weiterhin nach Bestätigungen. Mal abgesehen davon das dies nicht die feine englische Art ist.
Ich würde das jedoch komplett automatisieren.
Das heißt das Skript kann per cronjob getstartet werden, er baut in einer Liste hinterlegten Pakete und hält diese aktuell, installiert sich selbst ggf alle notwendigen abhängigkeiten, und wenn er fertig mit bauen ist schiebt das Skript das Paket ins Repo.
Kann mir einer helfen wie ich dies am besten mache?
Vielen Dank!
Offline
Ich baue Pakete für mein Repository nur noch in sauberen Chroot Umgebungen mittels makechrootpkg. Dies fragt auch nicht nach einem Passwort zur Installation der Abhängigkeiten, da es innerhalb des Chroot als root läuft. Allerdings habe ich es nicht vollständig automatisiert, da ich gerade bei AUR Paketen, welche ich nicht selbst pflege, gerne Mal gucke was so im PKGBUILD verändert wurde. Bei einer Automatisierung wäre auch ein vorausgehendes Update des Chroot sinnvoll.
Offline
Ich baue Pakete für mein Repository nur noch in sauberen Chroot Umgebungen mittels makechrootpkg. Dies fragt auch nicht nach einem Passwort zur Installation der Abhängigkeiten, da es innerhalb des Chroot als root läuft. Allerdings habe ich es nicht vollständig automatisiert, da ich gerade bei AUR Paketen, welche ich nicht selbst pflege, gerne Mal gucke was so im PKGBUILD verändert wurde. Bei einer Automatisierung wäre auch ein vorausgehendes Update des Chroot sinnvoll.
Ok. Wie mach ich das? Und dann fragt der dich nicht nach dem Passwort, ok. Aber was ist mit den Abfragen ala "Sollen X Pakete Installiert werden (y/n)?"
Offline
Aus der pacman-Manpage:
--noconfirm
Bypass any and all “Are you sure?” messages. It’s not a good idea to dothis unless you want to run pacman from a script.
Offline
Ok. Wie mach ich das?
Lies die entsprechenden Wiki-Artikel: https://wiki.archlinux.org/index.php/De … ean_chroot
Und dann fragt der dich nicht nach dem Passwort, ok. Aber was ist mit den Abfragen ala "Sollen X Pakete Installiert werden (y/n)?"
Du musst dich bei makechrootpkg gar nicht mit pacman und --noconfirm herumschlagen. makechrootpkg macht das automatisch.
Offline
Super! Danke!
Baut gerade das erste Paket. Was ich jedoch nicht verstanden habe: wird diese Umgebung persistent gebaut? Oder muss ich diese Schritte nach jedem Build durchgehen?
Edit:
Anscheinend nicht.
Das erste Paket hat er ohne Abfrage des root Passworts gebaut. Das zweite, yay, nicht. Dort will er direkt nach "makechrootpkg -c -r $CHROOT" das root Passwort haben.
Beitrag geändert von tomekk228 (17.10.2019 19:44:33)
Offline
Keiner mehr eine Idee? Vorallem unterscheidet sich das eigene Archlinux Wiki wieder gravierend von einander.
https://wiki.archlinux.org/index.php/De … ean_chroot erklärt was völlig anderes als https://wiki.archlinux.de/title/Makechrootpkg
Beide funktionieren an sich als normaler User. Doch im letzteren Wikieintrag steht man solle es als Root ausführen. Dann wäre auch die Anfrage nach dem Passwort auch nicht.
Jedoch kommt als Fehlermeldung: --> ERROR: You do not have write permission for the directory $SRCDEST (/tmp/x64/ncspot-git). Aborting...
Sogar dann wenn ich /tmp/x64 für allen und jeden les- und schreibbar mache (chmod -R 777).
Edit: Es ist egal welches Paket aus dem AUR bauen will. Kommt bei allen.
Beitrag geändert von tomekk228 (26.10.2019 18:36:25)
Offline
Der deutschsprachige Artikel ist veraltet, benutze den bitte nicht. Ansonsten: Sage klar und deutlich, was du gemacht hast, was deine Erwartung war und was stattdessen passiert ist.
Ich arbeite nach der Convenience-Methode und mit sudo. Folgendes habe ich meinem User haawda in der /etc/sudoers gestattet:
haawda ALL=(ALL) NOPASSWD: /bin/mkarchroot
haawda ALL=(ALL) NOPASSWD: /bin/makechrootpkg
haawda ALL=(ALL) NOPASSWD: /bin/arch-nspawn
Offline
Der deutschsprachige Artikel ist veraltet, benutze den bitte nicht. Ansonsten: Sage klar und deutlich, was du gemacht hast, was deine Erwartung war und was stattdessen passiert ist.
Ich arbeite nach der Convenience-Methode und mit sudo. Folgendes habe ich meinem User haawda in der /etc/sudoers gestattet:
haawda ALL=(ALL) NOPASSWD: /bin/mkarchroot haawda ALL=(ALL) NOPASSWD: /bin/makechrootpkg haawda ALL=(ALL) NOPASSWD: /bin/arch-nspawn
Tatsache. Convenience-Methode ist um einiges einfacher als die Classic-Methode. Für standard Arch Repos ist extra-x86_64-build denk ich mal richtig?
Was ich machen möchte? Ich möchte eine Liste mit speziellen AUR Paketen auf dem aktuellsten Stand halten und in mein Repo hinzufügen. Dafür habe ich folgendes Skript geschrieben (nicht schön, tut aber nun halbwegs wie ich es will):
#!/bin/bash
cd /home/user
for i in `cat aurpackages.conf`; do
git clone https://aur.archlinux.org/$i.git &> /dev/null
if [ ! -f /mnt/repo/$i*.pkg.tar.xz ]; then
rm $i.ver &> /dev/null
fi
if [ ! -f $i.ver ]; then
echo 0 > $i.ver
fi
ver=$(cat $i/PKGBUILD | grep pkgver | head -n1 | cut -b8-)
ver2=$(cat $i.ver)
if [ "$ver" != "$ver2" ]; then
cd $i
extra-x86_64-build
rm -Rf /mnt/repo/$i* &> /dev/null
mv *.pkg.tar.xz /mnt/repo/ &> /dev/null
cd /home/user/
rm -Rf $i
echo $ver > /home/user/$i.ver
else
echo "$i ist aktuell... ($(cat $i.ver))"
rm -Rf $i
fi
done
rm -Rf /mnt/repo/repo*
repo-add /mnt/repo/repo.db.tar.gz /mnt/repo/*.pkg.tar.xz
Nun soll das Skript als normaler Nutzer per Cronie beim Start ausgeführt werden. Daher darf der Nutzer nach kein Passwort o.ä gefragt werden sondern einfach durchlaufen. Werde das mit deiner sudoers mal probieren.
Die Liste befindet sich in aurpackages.conf und ist untereinander geschrieben. Einfach die Namen der Pakete aus dem AUR.
Beitrag geändert von tomekk228 (26.10.2019 23:37:34)
Offline
Nachtrag zu den sudoers-Einträgen: pacman selbst und extra-x86_64-build sollte euch einen bekommen. das hatte ich oben unterschlagen.
haawda ALL=(ALL) NOPASSWD: /usr/bin/pacman
haawda ALL=(ALL) NOPASSWD: /usr/bin/extra-x86_64-build
Wenn du in der makepkg.conf die SRCDEST auf /mnt/repo setzt, ersparst du dir das Verschieben in dieses Verzeichnis. makepkg verschiebt dann selber dorthin.
Es könnte noch problematisch sein, wenn du in deinem chroot ein AUR-Paket bauen willst, das wiederum Abhängigkeiten aus dem AUR zum Bauen benötigt. Wenn das der Fall ist, kommst du vermutlich nicht um mehrere
aurpackages.conf-Inkarnationen herum und kannst das nicht mehr in einer großen Schleife machen.
Du solltest die auch einmal repoctl-git aus dem AUR anschauen. Dies in Go geschriebene Programm stellt ein Benutzerinterface für lokale Repos zur Verfügung und erspart dir das zeitraubende komplette Löschen und Neuanlegen des Repos, also
rm -Rf /mnt/repo/repo*
repo-add /mnt/repo/repo.db.tar.gz /mnt/repo/*.pkg.tar.xz
durch ein einfaches "repoctl update". Es ist auch recht smart beim Abhandeln alter Paketversionen.
Offline
Super, danke! Nun kommt schon keine Passwortabfrage mehr.
Dafür aber wieder as neues:
https://abload.de/img/bildschirmfotovom2019hhjc5.png
Beim bau von Signal. Ungoogled-chromium, und paar andere Pakete. Kann es nun sein das er die PGP Keys nicht importiert? Oder was auch immer das Problem ist?
EDIT: das was hier vor dem Edit schrieb, kann ignoriert werden. Nachdem ich über yay Signal z.b gebaut habe, und anschließend über chroot bauen lassen habe, war das Problem verschwunden. Verstehe zwar nicht wieso, weil die chroot umgebung doch nicht auf die Abhängigkeiten auf dem "host" zugreifen kann oder? Aber das scheint auf jeden Fall das Problem zu sein wovon du sprachst.
Da werde ich wohl den ganz umständlichen Weg mit yay gehen müssen.
Beitrag geändert von tomekk228 (27.10.2019 01:24:17)
Offline
Bei mir kam heute ein neues archlinux-keyring-Paket. Versuch mal ein pacman -Suy, oder explizit pacman -suy archlinux-keyring.
Offline