Comment mettre à jour un mélange de packages et de ports sur FreeBSD

18

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 vimpackage, qui ne comprend pas de graphique gvim.

Aucun problème. Je peux installer le port à la place, en utilisant portmaster editors/vimet en sélectionnant l' GTK2option. Cela fonctionne bien.

Cependant, lorsque je cours pkg upgradeaprè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 upgradefaire 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?

Ricardo Buring
la source
Utilise pkg lockla solution recommandée? Cela fonctionne, mais j'espère que quelque chose d'aussi simple que cela pourrait être géré automatiquement.
Ricardo Buring
Oui, pkg lockla 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.".
Dereckson
ce poste est vieux. Mais j'aime dire que j'ai jusqu'à présent le même problème. J'avais demandé au Forum FreeBSD "Utiliser les packages et les ports en même temps?" Et un membre m'a conseillé d'utiliser un script pour les mises à jour d'installation, comme il l'a fait. Vous pouvez le trouver là dans sa réponse.
HL1234

Réponses:

15

Vous devez vous en souvenir pkget 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/vimport, celui-ci a été enregistré dans la base de données du package. Lorsque vous avez ensuite exécuté pkg upgrade, pkgexaminé les données du package vimet 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 upgradefait 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 pkgde 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 la pkg lockcommande.

Alternativement, si vous vous trouvez à changer les options sur un certain nombre de ports, vous pourriez envisager d'installer poudriereet 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.

D_Bye
la source