Zum Inhalt springen

Benutzer:Tuxnix: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Tuxnix (Diskussion | Beiträge)
edit
K Seiten im Benutzerkontext müssen nicht mit inuse-Vorlage markiert werden
 
(15 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Entwurf:  
{{SEITENTITEL:sway}}{{righttoc}}


== Package-Preload (Beispiel) ==  
<u>Erzeugen einer Schlüsseldatei zur Vermeidung einer zweiten Eingabe des Verschlüsselungspassworts:</u><br>
<code style=font-size:12px>dd bs=512 count=4 if=/dev/urandom of=/keyfile.bin</code><br>
<code style=font-size:12px>cryptsetup luksAddKey /dev/disk/by-label/ROOT /keyfile.bin</code><br>
<code style=font-size:12px>chmod 000 /keyfile.bin</code><br><br>


Das folgende Beispiel zeigt die Möglichkeit auf den Download von neuen Paketen auf einem zentalen Rechner automatisch durchzuführen und die Pakete von dort aus auf andere Rechner zu verteilen.
<code style=font-size:12px>nano /etc/mkinitcpio.conf</code><br>
Um die Gefahr eines [[Pacman#Keine_partiellen_Upgrades|partiellen Upgrades]], das die Konsistenz des Systems bei einen unbedachten `pacman -S foobar` beschädigen könnte zu vermeiden, wird eine separate Sync-DB genutzt, damit die vorhandene Paketdatenbank weiterhin den jeweiligen Stand der Aktualität des Systems wiedergibt. Die  Installation, der auf diese Weise vorab heruntergeladenen Pakete, wird dabei wie bisher mit dem Befehl `pacman -Syu` auf jedem Rechner einzeln durchgeführt. Das Upgrade läuft entsprechend schneller ab, da für bereits heruntergeladene Pakete auf den gemeinsam genutzten Paket Cache zugegriffen wird.
<u>'/keyfile.bin' zu Files hinzufuegen:</u><br>
 
<code style=font-size:12px>FILES=(/keyfile.bin)</code><br>
=== Für den Rechner (server) der das Package-Preload durchführen soll: ===
 
==== Vorbereitung ====
Für die separate Sync-Datenbank wird ein Verzeichnis angelegt und der Ordner local symbolisch darauf verlinkt.
 
mkdir /var/lib/preload
ln -s /var/lib/pacman/local/ /var/lib/preload
 
==== Einrichtung des nfs Servers ====
Im Unterschied zu dem Beispiel im Wiki-Artikel [[Network_File_System|nfs Server]] wird in der Datei /etc/exports folgende Zeile hinzugefügt.
/var/cache/pacman/pkg <client>(rw,sync,no_root_squash)
Für <client> ist hier der entsprechende hostname des zugreifenden Rechners zu setzen. Für den Zugriff von weiteren Rechnern kann jeweils eine neue Zeile angelegt werden.
 
==== pkgpreload.sh ====
 
#!/usr/bin/env bash
# file-> /usr/local/bin/pkgpreload.sh
# Proof if root
if (( `id -u` != 0 )); then
echo "Sorry, you must be root."
exit
fi
ListDir="/var/cache/pacman/pkg"
PreLoad_DB="/var/lib/preload"
# Write and sort package lists
pacman -Qqe > ${ListDir}/${HOSTNAME}.list
sort -u ${ListDir}/*.list > ${ListDir}/org.list
# Ignore packages not available in our sync DB (like AUR and local installed packages)
comm -12 <(pacman -Slq --dbpath ${PreLoad_DB} | sort) <(sort ${ListDir}/org.list) > /${ListDir}/all.list
# Preload packages
pacman -Syuw --noconfirm --dbpath ${PreLoad_DB}
 
Die Datei pkgpreload.sh nach /usr/local/bin/pkgpreload.sh abspeichern und mit dem folgen Befehl ausführbar machen.
chmod +x /usr/local/bin/pkgpreload.sh
Zusätzlich wäre zu überlegen, den Befehl [[Pacman#Paccache|paccache]] ins script zu integrieren um der Vorrat an alten Paketen zu limitieren.
 
==== systemd service ====
# file-> /etc/systemd/system/pkgpreload.service
[Unit]
Description=preloads packages
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/pkgpreload.sh
[Install]
WantedBy=basic.target
Service unter /etc/systemd/system/pkgpreload.service abspeichern und danach aktivieren
systemctl enable --now pkgpreload.service
 
 
==== systemd timer ====
# file-> /etc/systemd/system/pkgpreload.timer
[Unit]
Description=preloads packages
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=basic.target
Timer unter /etc/systemd/system/pkgpreload.timer abspeichern und danach aktivieren
systemctl enable --now pkgpreload.timer
Für andere Zeitintervalle siehe [[Systemd/Timers#Die_[Timer]_Sektion|systemd/Timers]]
 
 
=== Für alle anderen Rechner: ===
 
==== Den nfs Client einrichten ====
Wie beim server ist auch hier das Paket nfs-utils zu installieren.
pacman -S nfs-utils
Danach ist der /etc/fstab Datei die folgende Zeile anzufügen.
<server>:/var/cache/pacman/pkg /var/cache/pacman/pkg nfs rw,nofail 0 0
Der Ausdruck <server> ist hier durch den hostname des Servers zu ersetzen.
Nach einem reboot sollte die Verbindung stehen.
 
==== pacman Hook ====
Ein Verzeichnis hooks anlegen
mkdir /etc/pacman.d/hooks
Und die folgende pkglist.hook Datei dort abspeichern
# file->/etc/pacman.d/hooks/pkglist.hook
[Trigger]
Type = Package
Operation = Install
Operation = Remove
Target = *
[Action]
Description = updating packagelist
When = PostTransaction
Exec = /bin/sh -c 'pacman -Qqe  > /var/cache/pacman/pkg/$HOSTNAME.list; exit'

Aktuelle Version vom 31. Januar 2025, 14:39 Uhr

Erzeugen einer Schlüsseldatei zur Vermeidung einer zweiten Eingabe des Verschlüsselungspassworts:
dd bs=512 count=4 if=/dev/urandom of=/keyfile.bin
cryptsetup luksAddKey /dev/disk/by-label/ROOT /keyfile.bin
chmod 000 /keyfile.bin

nano /etc/mkinitcpio.conf
'/keyfile.bin' zu Files hinzufuegen:
FILES=(/keyfile.bin)