Je souhaite exclure certains packages de l'installation avec apt-get
, c'est-à-dire installer un métapaquet sans la liste des packages spécifiques, de préférence avec un seul appel de apt-get
.
Par exemple, dans Ubuntu 14.04 LTS en ligne de commande, j'installe MATE environnement de bureau. Dans 14.04 LTS MATE n'est pas une saveur officielle, j'ajoute donc un PPA:
Sudo apt-get install software-properties-common # need them for 'apt-add-repository'
Sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
Sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
Sudo apt-get update
puis installer:
Sudo apt-get install xorg mate-core --no-install-recommends
Même sans les extras recommandés, mate-core
installe 3 émulateurs de terminal: xterm
, uxterm
et mate-terminal
, ce dernier n’ayant pas les polices appropriées lorsqu’il est installé dans cette configuration minimale.
Supposons que je décide que 3 programmes de terminal seraient trop nombreux et que je voudrais installer xorg
et mate-core
withoutxterm
et mate-terminal
. je pourrais faire
Sudo apt-get install xorg mate-core --no-install-recommends
Sudo apt-get purge xterm mate-terminal
mais est-il possible de faire cela en une fois? Y a-t-il une syntaxe comme
Sudo apt-get install xorg mate-core --without xterm mate-terminal
Donc, mate-core dépend de mate-desktop-environment-core
qui à son tour dépend sur mate-terminal
. A dépend ne peut pas être cassé facilement. Ni apt-get
ni aptitude
ne prend en charge une option --without
ou --exclude
et le fait de "conserver" les packages ne vous aidera pas:
$ echo "mate-terminal hold" | Sudo dpkg --set-selections $ Sudo apt-get install mate-core [...] Certains paquets n'ont pas pu être installés ... Les paquetages suivants ont des dépendances non satisfaites:
Bien sûr, on peut utiliser dpkg --force-depends
pour installer un paquet, mais ce n'est peut-être pas ce que vous voulez.
Une possibilité serait de remplir l'indicateur Depends:
avec un package factice:
$ Sudo apt-get install equivs $ Equivs-control mate-terminal $ Vi mate-terminal Section: misc Priorité: optionnel Normes - Version: 3.9.2 Colis: terminal compagnon Version: 1.8.0 Description: Paquet factice pour terminal maté . : x $ équivs-build mate-terminal $ Sudo dpkg -i mate-terminal_1.8.0_all.deb
mate-core
devrait maintenant pouvoir installer wso mate-terminal
. Répétez la même chose pour les autres paquets à exclure.
Certes, c’est tout un effort et une option --without
serait Nice. Peut-être qu'un bug de la liste de souhaits peut être ouvert pour fournir une telle fonctionnalité dans le futur, mais je doute que cela soit mis en œuvre.
Cependant, une option plus réaliste consisterait à demander au propriétaire de PPA de fournir un autre méta-paquetage pour MATE avec des paquets inférieurs à Depends
.
Si vous utilisez aptitude
ou un gestionnaire de packages graphique (Synaptic, etc.), vous pouvez alors désélectionner les packages à installer tant que cela ne pose pas de problème de dépendance.
Dans le cas de aptitude
name__, avant d'installer un package (dans la vue graphique), il vous montrera pourquoi un package dépendant est en cours d'installation. Dans mon cas, j'utilise KDE et je n'ai donc aucun paquet MATE. Si je lui dis d'installer mate-core
, j'obtiens ce qui suit:
Notez que mate-core
est marqué comme étant installé manuellement et de nombreux autres packages sont en cours d'installation. Pour le paquet mate-terminal
, en bas, il est écrit "mate-desktop-environment-core
[univers] dépend de mate-terminal
(> = 1.0.0)". Passer à l'entrée pour mate-desktop-environment-core
,
"mate-core
[univers] dépend de mate-desktop-environment-core
(> = 1.8.0 + 9)". C'est pourquoi mate-terminal
est en cours d'installation.
Si, au lieu de cela, un paquet recommandé est en cours d'installation (plutôt que quelque chose qui dépend d'un autre paquet), aptitude
vous le dira et vous pouvez lui dire de ne pas installer ce paquet sans aucune dépendance cassée. Par exemple:
Une autre méthode
Téléchargez le package principal qui dépend de l'autre. Extrayez le paquet, supprimez les dépendances indésirables, remballez-le. Ouvrez maintenant le nouveau package avec gdebi l'installateur du package. Il installera de nouvelles dépendances pour vous.
Il existe une syntaxe spéciale apt
pour des scénarios tels que: ajouter un trait d'union (signe moins) à un paquetage supprimera/ne l'installera pas, ainsi le plus proche de votre Sudo apt-get install xorg mate-core --without xterm mate-terminal
est Sudo apt-get install xorg mate-core xterm- mate-terminal-
(repéré sur https://askubuntu.com/a/1011439/182923 )
Dans ce cas, cela n’aidera pas, car vous rencontrerez
The following packages have unmet dependencies:
mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
mais cela semble être la réponse à votre question précise. Donc, pour référence, ce cross-post.