Nous avons un méta-paquet, similaire à ubuntu-desktop, qui nécessite un tas de dépendances pour exécuter du code interne, pas encore empaqueté. Actuellement, nous mettons à jour le méta-paquet de sorte qu'il nécessite >= la version actuelle à chaque fois que nous le reconditionnons pour que ses dépendances soient mises à niveau lors de son installation. Cependant, s'il existait un moyen de mettre à jour un paquet et toutes ses dépendances sans mettre à jour tous les paquets, cela serait beaucoup plus simple. Est-ce possible?
Réponses
Trop de publicités?Pas directement, autant que je sache. Vous pouvez utiliser un petit extrait de shell pour générer la liste des dépendances du paquet et les mettre à jour (en supposant que vous n'êtes pas intéressé par les dépendances récursives) :
apt-get install our-metapackage $(dpkg-query -Wf '${Depends}' our-metapackage | sed 's/ *\(([^()]*)\)\? *[,|] */\n/g')
Une approche alternative serait de fournir vos paquets via un dépôt avec une origine unique. Écrivez un fichier de préférences APT qui spécifie que seul votre dépôt a une priorité normale et que tout le reste a une priorité trop basse pour être installé automatiquement. (Voir l'épinglage APT dans le manuel APT pour des explications.) Je ne rentrerai pas dans les détails sur la création du dépôt (cela serait matière à une question séparée, qui existe peut-être déjà). Pour spécifier que les paquets de votre dépôt sont mis à jour et que les autres ne le sont pas, écrivez le fichier suivant en tant que /etc/apt/preferences.nnutter
:
Package: *
Pin: release o=nnutter
Pin-Priority: 500
Package: *
Pin-Prority: 100
500 est la priorité normale. 100 empêche les paquets d'être mis à jour, bien que le paquet sera installé s'il est requis par des dépendances. Exécutez apt-get upgrade
ou apt-get dist-upgrade
avec ce fichier de préférences APT lorsque vous voulez seulement mettre à jour les paquets du dépôt nnutter :
apt-get -o Dir::Etc::Preferences=/etc/apt/preferences.nnutter -o Dir::Etc::PreferencesParts=/etc/apt/preferences.nnutter.d upgrade