Doc
This commit is contained in:
163
t/PKGBase.md
Normal file
163
t/PKGBase.md
Normal file
@ -0,0 +1,163 @@
|
||||
# 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 -kru`lassen 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
|
||||
```
|
||||
Reference in New Issue
Block a user