5.1 KiB
Upgrade FreeBSD von 13.2 zu 14.1 oder 13.3 mit pkgbase
Quellen: https://wiki.freebsd.org/PkgBase https://vermaden.wordpress.com/2023/12/09/personal-freebsd-pkgbase-update-server/
PKGBase Mirror Server erstellen
In unserem Fall auf fippuder01.cc.bka
cd /usr/src
#git clone https://github.com/freebsd/freebsd-src.git .
#git fetch --all
#git reset --hard origin/main #wirft alle Änderungen weg
git pull
git checkout releng/14.1 --force
make -j48 buildworld && make -j48 buildkernel && make -j48 packages
Branches: https://github.com/freebsd/freebsd-src/branches
Über den git checkout releng/13.3 kann über den Branch zwischen Versionen gewechselt werden.
Der Make Befehl erstellt die Pakete und legt sie unter /usr/obj/usr/src/repo/FreeBSD:14:amd64/14.1p2 ab (je nach Version).
ccache
/etc/make.conf
CCACHE_DIR=/var/cache/ccache
WITH_CCACHE_BUILD=yes
nginx config
In der NGINX Config wird der Pfad mit den Paketen dann freigegeben
vim /usr/local/etc/nginx/nginx.conf
location /FreeBSD:14:amd64 {
alias /usr/obj/usr/src/repo/FreeBSD:14:amd64/;
autoindex on;
}
service nginx reload
Bzw. für 13.3 jeweils checkout releng/13.3 und location/repo FreeBSD:13:amd64
Neue Version erstellen:
Analog zu oben in den gewünschten Branch wechseln und build starten. Ggf. muss für neue Versionen (wie 15.0) die NGINX Config angepasst werden.
Auf den Clients
Upgrade auf 14.1
Sofern das Verzeichnis noch nicht existiert:
mkdir -p /usr/local/etc/pkg/repos
Erstellen eines upgrade Repos für pkg:
vim /usr/local/etc/pkg/repos/upgrade.conf
freebsd-upgrade: {
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.1p6
enabled = yes
}
Zum Update muss die ABI der neuen Version als Umgebungsvariable mitgegeben werden.
env ABI=freebsd:14:amd64 pkg-static update -r FreeBSD-base-14.1
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg-static install -r freebsd-upgrade -g 'FreeBSD-*'
Wenn der Fehler pkg: Fail to rename /usr/include/c++/v1/.pkgtemp.__string.YaGYjRyeEZcE -> /usr/include/c++/v1/__string:Not a directory auftritt kann /usr/include gelöscht, und die Installation erneut versucht werden.
rm -rf /usr/include
env ABI=freebsd:14:amd64 IGNORE_OSVERSION=yes pkg install -r FreeBSD-base-14.1 -g 'FreeBSD-*'
Durch das Update werden alle Konfigurationsdateien in /etc mit den Originaldateien überschrieben. Die bearbeiteten Versionen werden in .pkgsave gespeichert.
Wird an dieser Stelle ein Neustart ausgeführt gibt es keine User und Passwörter mehr und die sshd_config ist wie bei einem frischen System.
Daher werden die wichtigsten pkgsave Dateien zurück kopiert.
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
cp /etc/master.passwd.pkgsave /etc/master.passwd
cp /etc/group.pkgsave /etc/group
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
Passwort Datenbank neu aufbauen:
pwd_mkdb -p /etc/master.passwd
Alle anderen .pkgsave Dateien können mit folgendem Befehl gelöscht werden, ggf. ist hier zu prüfen welche Dateien sich noch geändert haben.
find /etc -name \*.pkgsave -delete
rm /boot/kernel/linker.hints
Alternativ können auch alle .pkgsave dateien gegen die originale ausgetauscht werden um die Konfiguration vor dem Update wiederherzustellen.
bash
cd /etc
for file in $(ls *.pkgsave); do echo cp $file ${file/.pkgsave/};done
etcupdate
find /etc -name \*.pkgsave -delete
Damit kann ggf. allerdings neue Konfigurationsoptionen in der neuen Version nicht mitgenommen werden, besser wäre ein Diff jeder .pkgsave Datei mit dem Original um etwaige Änderungen zusammen zu führen.
Dann kann der Neustart des Clients durchgeführt werden. Mit freebsd-version -krulassen sich die Versionsstände anzeigen. Runtime wird erst durch einen Neustart auf die neue Version gehoben.
reboot
Nach dem Upgrade muss pkg neu initialisiert und alle Pakete geupdatet werden. An dieser Stelle kann auch das Repository in der upgrade.conf auf enabled = no gesetzt werden.
vim /usr/local/etc/pkg/repos/upgrade.conf
upgrade: {
url = http://fippuder01.cc.bka/FreeBSD:14:amd64/14.1p2
enabled = no
}
pkg bootstrap -f
pkg update
pkg upgrade -y
Update auf 13.3
Analog zu 14.1, nur einfacher:
vim /usr/local/etc/pkg/repos/upgrade.conf
upgrade {
url = http://fippuder01.i.cc.bka/FreeBSD:13:amd64/13.3p4
enabled = yes
}
pkg-static update -r upgrade
rm -rf /usr/include
pkg-static install -r upgrade -g 'FreeBSD-*'
Auch hier gilt, Konfigurationsdateien zurück kopieren, siehe Upgrade auf 14.1
cp /etc/ssh/sshd_config.pkgsave /etc/ssh/sshd_config
cp /etc/master.passwd.pkgsave /etc/master.passwd
cp /etc/group.pkgsave /etc/group
pwd_mkdb -p /etc/master.passwd
service sshd restart
cp /etc/sysctl.conf.pkgsave /etc/sysctl.conf
find / -name \*.pkgsave -delete
rm /boot/kernel/linker.hints
reboot
pkg bootstrap -f
pkg update
pkg upgrade -y
Upgrade von 14.1p6 auf 14.2
upgrade.conf bearbeiten
vim /usr/local/etc/pkg/repos/upgrade.conf
FreeBSD-base-14.2: {
url = http://pkg.freebsd.org/FreeBSD:14:amd64/14.2
enabled = yes
}
pkg update
pkg upgrade
shutdown -r now