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.