Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Installation & Einrichtung => Thema von: Andreas am 25. März 2020, 16:50:29

Titel: was alles mit ein paar Zeilen Bash geht
Beitrag von: Andreas am 25. März 2020, 16:50:29

Hallo liebe Mitstreiter,

seit heute Vormittag ist der Reposerver repo.nasutek.com mal wieder nicht erreichbar. Das führt bei einem Updateverrsuch mit yay oder pacman dazu, dass GAR KEINE Updates ausgeführt werden.

Klar: das kann man manuell umgehen. In der Datei /etc/pacman.conf sind alle Repositories aufgeführt, die Pacman (und damit auch yay) benutzt. Es gibt nun zwei Ansätze:
1) man verändert die /etc/pacman.conf direkt
2) man erstellt eine Kopie der /etc/pacman.conf (beispielsweise in /tmp), ändert diese und benutzt diese
Weg Nr.2 hat den Vorteil, dass man nichts zurückverändern muss, wenn der Server wieder gehen sollte. Aber man muss auch für 2) regelmässig nachschauen, ob der Sever wieder online ist.

Das alles habe ich in meinem Script swupdate automatisiert - und es läuft "like a charm". Findet das Script einen solchen unerreichbaren Server, fertigt es eine Kopie der pacman.conf in /tmp an, kommentiert den betreffenden Server aus und führt das Update dann unter Nutzung dieser veränderten pacman.conf erneut aus (dann geht es natürlich). Beim nächsten Aufruf von swupdate wird wieder mit der normalen Konfiguration probiert, und sollte der Sever immer noch nicht erreichbar sein geht das Spiel von Neuem los. Dadurch braucht ihr euch bei so einem Problem um nichts kümmern - es wird automatisch gelöst.

Ich kopiere mal den dafür verwendeten Bash-Teil raus:
Code:
sudo pacman -Sy 2> >(tee -ia /tmp/upd-repodb.log)
FAILEDREPO=$(cat /tmp/upd-repodb.log | grep aktualisieren | cut -d ' ' -f 3)
# eine Repository-Datenbak konnte nicht erreicht werden - versuche es ohne diese Datenbank durchzuführen
if [ $FAILEDREPO != "" ]; then
echo -e "${BLUE}Repository Datenbank von $FAILEDREPO konnte nicht aktualisiert werden - versuche es unter Auslassung von $FAILEDREPO.${NC}"
# ändere die pacman.conf temporär
cp /etc/pacman.conf /tmp/pacman.conf
sudo sed -e "1,\$s/\[$FAILEDREPO\]/#\[$FAILEDREPO\]/g" -i /tmp/pacman.conf
sudo pacman --config /tmp/pacman.conf -Sy 2> >(tee -ia /tmp/upd-repodb.log)
rm -f /tmp/pacman.conf
fi
Vielleicht habt ihr ja Lust und Muße, die Funktion der einzelnen Zeilen selbst zu ergründen? Das Web hat für euch da Antworten bereit - und ich beantworte euch Fragen dazu auch gerne!

LG
Andreas


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