J'utilise principalement des packages sur FreeBSD, car la plupart d'entre eux me conviennent très bien. Certains ne me conviennent pas, cependant, comme le vim
package, qui ne comprend pas de graphique gvim
.
Aucun problème. Je peux installer le port à la place, en utilisant portmaster editors/vim
et en sélectionnant l' GTK2
option. Cela fonctionne bien.
Cependant, lorsque je cours pkg upgrade
après un certain temps, on me présente les éléments suivants:
Reinstalling vim-7.4.110_3 (options changed)
Ce qui donne? Je n'ai changé aucune option, et il n'y a pas de nouvelle version (pas dans les ports non plus). Est-ce que cela compare mon port installé à la version distante sans GTK2
?
Bien sûr, je peux laisser pkg upgrade
faire son travail et réinstaller le port par la suite, mais c'est stupide. Quelle est la méthode recommandée pour mettre à jour un mélange de packages et de ports?
la source
pkg lock
la solution recommandée? Cela fonctionne, mais j'espère que quelque chose d'aussi simple que cela pourrait être géré automatiquement.pkg lock
la solution est-elle conçue pour cela: à partir de la page de manuel: "pkg lock est utilisé pour verrouiller les packages contre la réinstallation, la modification ou la suppression.".Réponses:
Vous devez vous en souvenir
pkg
et les ports enregistrent les logiciels installés au même endroit (une base de données SQLite/var/db/pkg
). Aucun des deux systèmes n'enregistre d'informations supplémentaires indiquant qu'un logiciel particulier a été installé en tant que package précompilé ou en tant que port. Ainsi, une fois qu'un logiciel est installé par l'une ou l'autre approche, les outils n'ont aucun moyen de savoir comment il a été installé.Lorsque vous avez sélectionné la prise en charge GTK2 pour le
editors/vim
port, celui-ci a été enregistré dans la base de données du package. Lorsque vous avez ensuite exécutépkg upgrade
,pkg
examiné les données du packagevim
et constaté que la prise en charge de GTK2 avait été activée dans la version installée, alors qu'elle n'est pas activée dans le package précompilé.pkg upgrade
fait exactement ce qu'il doit faire: trouver tous les packages installés qui sont différents des packages précompilés disponibles et tenter de les mettre à niveau. Ces différences peuvent concerner le numéro de version, le graphique des dépendances, les options de compilation, etc.La bonne façon d'éviter
pkg
de considérer un port ou un package (une fois installé, il n'y a aucune différence, en ce qui concerne les outils) que vous souhaitez protéger est d'utiliser lapkg lock
commande.Alternativement, si vous vous trouvez à changer les options sur un certain nombre de ports, vous pourriez envisager d'installer
poudriere
et de maintenir votre propre référentiel de packages. Cela prend un peu de configuration et fonctionne mieux si votre hôte de build a un pool de stockage ZFS, bien que cela fonctionnera si vous n'avez pas ZFS; c'est un moyen très flexible et pratique de gérer les versions logicielles personnalisées.la source