Files
klara-ports/t/PKGBase.md
Xavier Beaudouin 3b54995a82 Doc
2025-03-17 15:29:13 +01:00

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