O freebsd-update e o pkg upgrade fazem coisas muito diferentes.
O freebsd-update irá (binário) atualizar seu sistema básico . O sistema básico contém tudo, exceto /usr/local : verifique /{,s}bin e /usr/{,s}bin para quais programas são enviados com o sistema base. As partes do sistema base não aparecem no banco de dados de pacotes, é uma infraestrutura separada. Todo o sistema básico desenvolvido pelo FreeBSD.
O pkg upgrade faz uma coisa diferente: atualiza os pacotes. Os pacotes estão em /usr/local , são "3th-party-apps" - desenvolvidos por outras pessoas / empresas / ..., não pelo FreeBSD.
a) Atualização do sistema significa atualizar o sistema básico ( freebsd-upgrade ). A atualização do programa significa a atualização dos pacotes instalados (em /usr/local , com pkg upgrade ou com a árvore de ports).
b) Você pode construir seus pacotes a partir de portas com suas opções ("baseadas em fonte") ou você pode usar pacotes de repositórios ("baseados em binários").
É independente do sistema básico: você pode atualizar seu sistema básico com freebsd-update ("atualização binária") e pode construir seu sistema básico a partir do código-fonte.
Se você quiser construir pacotes a partir de portas, você deve ter a árvore de portes. Você pode fazer o checkout com portsnap .
Espero que esteja claro agora.
Update1 se você quiser criar o sistema básico a partir do código-fonte, deverá recriar todas as atualizações - consulte Rebuilding World . E deve sincronizar a fonte do curso.
Eu acho que se você quer um sistema baseado em fonte, é uma boa opção usar o sistema base binário (que contém um compilador (clang em 10.x)) e construir seus aplicativos desejados (servidor web , editor favorito, talvez gerenciadores de janela, navegadores, office suite, etc.) das portas.