Du bist nicht angemeldet.

#1 17.10.2019 11:08:07

tomekk228
Mitglied

"AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#2 17.10.2019 12:04:42

schard
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#3 17.10.2019 12:11:35

tomekk228
Mitglied

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

schard schrieb:

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

#4 17.10.2019 13:48:43

stefanhusmann
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#5 17.10.2019 15:10:36

schard
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

tomekk228 schrieb:

Ok. Wie mach ich das?

Lies die entsprechenden Wiki-Artikel: https://wiki.archlinux.org/index.php/De … ean_chroot

tomekk228 schrieb:

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

#6 17.10.2019 19:02:41

tomekk228
Mitglied

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#7 26.10.2019 18:35:39

tomekk228
Mitglied

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#8 26.10.2019 22:32:04

stefanhusmann
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#9 26.10.2019 23:36:18

tomekk228
Mitglied

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

stefanhusmann schrieb:

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

#10 27.10.2019 00:33:41

stefanhusmann
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#11 27.10.2019 01:04:38

tomekk228
Mitglied

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

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

#12 27.10.2019 01:26:02

stefanhusmann
Moderator

Re: "AUR Roboter" fragen von vornherein beantworten bzw automatisieren.

Bei mir kam heute ein neues archlinux-keyring-Paket. Versuch mal ein pacman -Suy, oder explizit pacman -suy archlinux-keyring.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums