5 votes

Y a-t-il une commande pour mettre à niveau un package et toutes ses dépendances sans mettre à niveau tous les packages?

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?

3voto

Schof Points 952

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

0voto

Suhaib Points 3978

Vous pouvez utiliser la commande wajig qui peut être utilisée pour mettre certains paquets en attente lors de la mise à jour

il suffit de taper :

sudo wajig hold SomePackage

sudo wajig unhold 

consultez la page de manuel pour plus d'informations

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X