Como atualizar uma mistura de pacotes e portas no FreeBSD

17

Eu uso principalmente pacotes no FreeBSD, porque a maioria deles me serve muito bem. Alguns não me servem, no entanto, como o pacote vim , que não inclui um gráfico gvim .

Não tem problema. Eu posso instalar a porta, usando portmaster editors/vim e selecionando a opção GTK2 . Isso funciona bem.

No entanto, quando executo pkg upgrade depois de um tempo, sou apresentado ao seguinte:

        Reinstalling vim-7.4.110_3 (options changed)

O que dá? Não alterei nenhuma opção e não há nova versão (nem nas portas). Está comparando minha porta instalada com a versão remota sem GTK2 ?

É claro que posso deixar pkg upgrade fazer o seu trabalho e instalar a porta novamente depois, mas isso é estúpido. Qual é a maneira recomendada de atualizar uma combinação de pacotes e portas?

    
por Ricardo Buring 20.01.2014 / 21:14

1 resposta

15

Você precisa lembrar que pkg e portas registram o software instalado no mesmo local (um banco de dados SQLite em /var/db/pkg ). Nenhum sistema registra qualquer informação adicional de que um determinado software foi instalado como um pacote pré-compilado ou como uma porta. Assim, uma vez que uma parte do software é instalada por qualquer abordagem, as ferramentas não têm como saber como ela foi instalada.

Quando você selecionou o suporte do GTK2 para a editors/vim port, isso foi registrado no banco de dados do pacote. Mais tarde, quando você executou pkg upgrade , pkg consultou os dados do pacote para vim e descobriu que o suporte GTK2 tinha sido habilitado na versão instalada, enquanto não está habilitado no pacote pré-compilado. pkg upgrade está fazendo exatamente o que deveria - encontrar quaisquer pacotes instalados que sejam diferentes dos pacotes pré-compilados disponíveis e tentar atualizá-los. Essas diferenças podem estar no número de versão, no gráfico de dependência, nas opções de tempo de compilação, etc.

A maneira correta de evitar que pkg considere uma porta ou pacote (uma vez instalado, não há diferença, no que diz respeito às ferramentas) que você deseja proteger é usar o comando pkg lock .

Como alternativa, se você estiver alterando as opções em várias portas, considere instalar poudriere e manter seu próprio repositório de pacotes. Demora um pouco de configuração e funciona melhor se o seu host de compilação tiver um pool de armazenamento do ZFS, embora funcione se você não tiver o ZFS; é uma maneira muito flexível e conveniente de gerenciar construções de software personalizadas.

    
por 22.01.2014 / 18:57