141 votes

Comment faire pour qu'apt-get ignore certaines dépendances ?

Comment faire pour qu'apt-get ignore certaines dépendances ? Par exemple, je voulais installer mailx afin que je puisse l'utiliser pour envoyer des e-mails à partir de cron scripts/outils de génération de rapports. Cependant, l'installation de mailx installe également exim4 et tout un tas de dépendances (j'ai déjà Postfix installé) dont je n'ai pas vraiment besoin et dont je suppose que mailx peut aussi se passer.

Comment puis-je ignorer certaines dépendances tout en utilisant apt-get, qui est un bon outil ?

98voto

Jealie Points 986

Une solution simple et facile : il suffit de spécifier les paquets non désirés avec un - après chacun d'eux.

Exemple sans le - interrupteur :

root@debian:~# apt-get install bsd-mailx 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
[...]

Exemple d'utilisation du commutateur pour éviter d'installer exim4-base . Remarquez le - à la fin :

root@debian:~# apt-get install bsd-mailx exim4-base-
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'exim4-base' is not installed, so not removed
The following extra packages will be installed:
  liblockfile-bin liblockfile1 ssmtp
[...]

Comme vous pouvez le voir, apt-get n'essaie plus d'installer le exim4-base et il n'essaie pas d'installer ses diverses dépendances ( exim4-config etc).

Et si tu avais tort et que tu avais besoin de ça exim4-base dépendance après tout, vous pouvez juste apt-get install plus tard !

83voto

Janus Troelsen Points 964

Vous pouvez modifier les dépendances d'un paquet deb de la manière suivante :

  1. Déballez la deb : ar x golden-linux.deb (cela créera par exemple trois fichiers : debian-binary control.tar.gz data.tar.gz)
  2. Décompressez l'archive de contrôle : tar xzf control.tar.gz (va créer : postinst postrm preinst prerm md5sums control)
  3. Correction des dépendances dans control (utilisez un éditeur de texte)
  4. Repack control.tar.gz : tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
  5. Repack deb : ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz (commande importante ! Voir [Note] )

[Note] : dpkg ne serait pas capable de lire rapidement les métadonnées d'un paquet s'il devait chercher où se termine la section des données !

52voto

Manolis Points 487

Après avoir installé le paquet avec le --ignore-depends allez et modifiez l'option /var/lib/dpkg/status et supprimez toutes les dépendances que vous jugez inutiles. Soyez très prudent. Pour qu'une dépendance soit requise, il est plus que probable qu'elle soit BE requerido

31voto

Bart De Vos Points 17611

Vous pouvez essayer le --nodeps drapeau avec apt-get .
Ou téléchargez le paquet et installez-le en utilisant dpkg avec l'option --ignore-depends .

Par exemple, si vous voulez installer le paquet foo sans dépendance bar :

dpkg --ignore-depends=bar -i foo_1.2.3_amd64.deb

24voto

AndrewHarvey Points 251

Une autre façon d'ajuster manuellement les dépendances est :

apt-get download yourpackage
dpkg-deb -x yourpackage.deb PackageFolder
dpkg-deb --control yourpackage.deb PackageFolder/DEBIAN
vim PackageFolder/DEBIAN/control
dpkg -b PackageFolder yourpackage2.deb
apt-get install ./yourpackage2.deb

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