Eu uso principalmente pacotes no FreeBSD, porque a maioria deles é adequada para mim. Alguns não me agradam, no entanto, como o vim
pacote, que não inclui um gráfico gvim
.
Sem problemas. Eu posso instalar a porta, usando portmaster editors/vim
e selecionando a GTK2
opção. Isso funciona bem.
No entanto, quando corro pkg upgrade
depois de um tempo, recebo o seguinte:
Reinstalling vim-7.4.110_3 (options changed)
O que da? Não alterei nenhuma opção e não há nova versão (também não nas portas). Está comparando minha porta instalada com a versão remota sem GTK2
?
Claro que posso deixar pkg upgrade
seu trabalho e instalar a porta novamente depois, mas isso é estúpido. Qual é a maneira recomendada de atualizar uma mistura de pacotes e portas?
package-management
freebsd
bsd-ports
Ricardo Buring
fonte
fonte
pkg lock
a solução recomendada? Funciona, mas espero que algo tão simples quanto isso possa ser tratado automaticamente.pkg lock
a solução foi projetada para isso: na página de manual: “pkg lock é usado para bloquear pacotes contra reinstalação, modificação ou exclusão.”.Respostas:
Você precisa se lembrar que as
pkg
portas e registram o software instalado no mesmo local (um banco de dados SQLite/var/db/pkg
). Nenhum sistema registra informações adicionais de que um determinado software foi instalado como um pacote pré-compilado ou como uma porta. Assim, uma vez que um software é instalado por qualquer uma das abordagens, as ferramentas não têm como saber como ele foi instalado.Quando você selecionou o suporte GTK2 para a
editors/vim
porta, isso foi registrado no banco de dados do pacote. Quando você executou mais tardepkg upgrade
,pkg
olhou para os dados do pacotevim
e descobriu que o suporte ao GTK2 havia sido ativado na versão instalada, enquanto não estava ativado no pacote pré-compilado.pkg upgrade
está fazendo exatamente o que deveria - encontrando todos os pacotes instalados diferentes dos pacotes pré-compilados disponíveis e tentando atualizá-los. Essas diferenças podem estar no número da versão, gráfico de dependência, opções em tempo de compilação etc.A maneira correta de impedir a
pkg
consideração de uma porta ou pacote (uma vez instalado, não há diferença, no que diz respeito às ferramentas) que você deseja proteger é usar opkg lock
comandoComo alternativa, se você mudar as opções em várias portas, considere instalar
poudriere
e manter seu próprio repositório de pacotes. É preciso um pouco de configuração e funciona melhor se o host de construção tiver um pool de armazenamento ZFS, embora funcione se você não tiver o ZFS; é uma maneira muito flexível e conveniente de gerenciar compilações de software personalizadas.fonte