Já faz anos que deixei de usar FreeBSD como principal systema operacional, inclusive no meu laptop. Um dos motivos que me levaram a isso na época foi o fato da hibernação não funcionar corretamente (naquela época). O post que fiz da migração foi esse aqui: Migrando para OpenSuse. Como mudei pra Suécia pra virar um desenvolvedor de software em Linux, não fazia muito sentido continuar ou tentar voltar ao FreeBSD como sistema principal.
Mas sempre tentei manter um pé por ali. FreeBSD é um sistema fantástico pra ser usado. E com as facilidades de CPUs com múltiplos núcleos e avanço no sistemas de virtualização, ficou fácil ter sempre à mão uma VMzinha com o diabinho rodando.
Meu eu sempre criava a VM, usava por um tempo, e depois removia. Simplesmente parei de fazer upgrades. Só testava algumas features e ficava por isso mesmo.
Após uma explicação muito boa do sistema de upgrades feita pelo Garga (@rbgarga) no grupo de FreeBSD (FUG-BR) no Telegram (https://t.me/fug_br), eu resolvi experimentar.
A explicação:
Existem 3 casos de uso do freebsd-update:
1. Atualizar de X.Y pra X.Y-p1
2. Atualizar de X.Y pra X.Y+1
3. Atualizar de X.Y pra X+1.Y
No caso 1, apenas correções de segurança, então vc vai rodar freebsd-update fetch install, reboot e já era.
No caso 2, como vc tá atualizando pra uma nova versão de kernel, dentro da mesma série, vc vai fazer freebsd-update -r X.Y+1 upgrade pra ele baixar tudo o que precisa, aí vai fazer freebsd-update install pra ele instalar o kernel novo, então reboot no kernel novo, confere que tá tudo em ordem e freebsd-update install novamente pra ele atualizar o world, aí vc reinicia ( ou faz um reboot se for possível ) e pronto.
No caso 3 você tá trocando de major version, do 12 pro 13 por exemplo, então vc repete o processo do caso 2, porém, depois do segundo freebsd-update install vc vai estar em um sistema rodando world e kernel do 13, porém com pacotes ainda do 12. Então vc atualiza todos os pacotes e depois roda o último freebsd-update install pra ele remover todos os arquivos antigos do 12 que não são mais usados no 13 (equivalente ao make delete-old delete-old-libs). Se rodar isso antes de reinstalar todos os pacotes, com certeza vai quebrar coisas
Então segui as direções num upgrade do 12.2-RELEASE pro 13.0-RC1, o caso 3.
root@freebsd:~ # freebsd-update -r 13.0-RC1 upgrade
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 12.2-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/generic kernel/generic-dbg world/base world/base-dbg world/doc
world/lib32 world/lib32-dbg
The following components of FreeBSD do not seem to be installed:
Does this look reasonable (y/n)? y
Fetching metadata signature for 13.0-RC1 from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 12.2-RELEASE for merging... done.
Preparing to download files... done.
Fetching 10251 patches.....10....20....30....40....
[editado]
....10230....10240....10250 done.
Applying patches...
Fetching 638 files... ....10....20....
[editado]
...620....630.... done.
Attempting to automatically merge changes in files... done.
The following file will be removed, as it no longer exists in
FreeBSD 13.0-RC1: /etc/motd
Does this look reasonable (y/n)? y
The following files are affected by updates. No changes have
been downloaded, however, because the files have been modified
locally:
/var/db/etcupdate/log
The following files will be removed as part of updating to
13.0-RC1-p0:
/boot/boot1.efifat
13.0-RC1-p0:
/boot/boot1.efifat
/boot/gptboot.efifat
/boot/kernel/aha.ko
[...]
The following files will be added as part of updating to
13.0-RC1-p0:
/boot/fonts
/boot/fonts/10x18.fnt.gz
/boot/fonts/10x20.fnt.gz
/boot/fonts/11x22.fnt.gz
[...]
The following files will be updated as part of updating to
13.0-RC1-p0:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
/bin/chflags
[...]
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Kernel updates have been installed. Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
root@freebsd:~ # reboot
Mar 10 11:39:50 freebsd reboot[65100]: rebooted by root
Mar 10 11:39:50 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # uname -a
FreeBSD freebsd 13.0-RC1 FreeBSD 13.0-RC1 #0 releng/13.0-n244639-60e8939aa85: Fri Mar 5 05:01:01 UTC 2021 This email address is being protected from spambots. You need JavaScript enabled to view it. :/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd
64
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Scanning //usr/share/certs/blacklisted for certificates...
Scanning //usr/share/certs/trusted for certificates...
Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
/bin/[
/bin/cat
/bin/chflags
[...]
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Kernel updates have been installed. Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
root@freebsd:~ # reboot
Mar 10 11:39:50 freebsd reboot[65100]: rebooted by root
Mar 10 11:39:50 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # uname -a
FreeBSD freebsd 13.0-RC1 FreeBSD 13.0-RC1 #0 releng/13.0-n244639-60e8939aa85: Fri Mar 5 05:01:01 UTC 2021 This email address is being protected from spambots. You need JavaScript enabled to view it. :/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd
64
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Scanning //usr/share/certs/blacklisted for certificates...
Scanning //usr/share/certs/trusted for certificates...
Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.
root@freebsd:~ # reboot
Mar 11 17:25:34 freebsd reboot[43513]: rebooted by root
Mar 11 17:25:34 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # file /usr/local/bin/htop
/usr/local/bin/htop: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 12.0 (1200086), FreeBSD-style, stripped
root@freebsd:/usr/ports/ports-mgmt/pkg # pkg update -f
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100% 163 B 0.2kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 6.4MB/s 00:01
pkg: No trusted certificates
Unable to update repository FreeBSD
Error updating repositories!
E fiquei travado nesse problema de "no trusted certificates" pra atualizar os pacotes.
Levei um tempo buscando solução, que indicavam pegar os certificados do /usr/src, que eu não instalo mais, mas achei a informação de ouro que corrigiu o problema. A instalação sobrescreveu a configuração em /etc/pkg/FreeBSD.conf e isso causou o erro. Bastou trocar o parâmetro "signature_type" para "none" que consegui atualizar os pacotes pra binários do FreeBSD-13.0-RC1.
root@freebsd:~ # cat /etc/pkg/FreeBSD.conf
# $FreeBSD$
# echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "none",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Sobre o FreeBSD-13.0? Não muito a dizer até onde mexi, mas tem novas features interessantes que espero testar mais a fundo. No momento estou deixando o ambiente preparado pra talvez fazer uma palestra dobre Python no FreeBSD.