C'est une question très spécifique à laquelle Google n'a pas aidé à répondre.
J'utilise Ubuntu 13.04 avec apt 0.9.7.7ubuntu4 for AMD64 compiled on Oct 3 2013 15:25:56
.
Je veux installer Erlang à partir d'un paquet .deb, mais je ne veux pas extraire toutes ses dépendances. Le paquet lui-même indique qu'il dépend des bibliothèques Java et wx, mais en réalité, elles ne sont pas nécessaires, sauf si vous souhaitez vous connecter à Java ou à wxWidgets.
Je peux installer Erlang comme ça
Sudo dpkg -i --force-depends erlang.deb
Toutefois, l'installation ultérieure de apt-get
échoue à cause de dépendances non satisfaites. Donc si je veux installer git après Erlang, je reçois ce qui suit
$ Sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
esl-erlang : Depends: default-jre-headless but it is not going to be installed or
Java2-runtime-headless or
Java1-runtime-headless or
Java2-runtime or
Java1-runtime
Depends: libwxbase2.8-0 but it is not going to be installed
Depends: libwxgtk2.8-0 but it is not going to be installed
Recommends: erlang-mode but it is not going to be installed
git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
Depends: Perl-modules but it is not going to be installed
Depends: liberror-Perl but it is not going to be installed
Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
Recommends: patch
Recommends: rsync
Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Est-il possible de fermer le paquet esl-erlang
sans exécuter apt-get install -f
?
Je veux quelque chose comme ça:
Sudo apt-get install --ignore-deps-for-package=esl-erlang git
ou comme ceci:
Sudo apt-cache shut-package-up esl-erlang
ou ca:
Sudo apt-get download git
Sudo dpkg -i --with-deps git.deb
J'ai trouvé une question similaire: https://serverfault.com/questions/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . Quelques réponses fournissent des étapes manuelles manuelles pour modifier les dépendances de certains paquets.
Je cherche toujours une méthode automatisée robuste.
Je comprends le point de vue de bjanssen, mais il semble ridicule pour un gestionnaire de paquets d'autoriser --force-depends
pour une seule installation de paquet, mais de ne pas autoriser la force-dépend-pour-toujours-et-cesse-de-m'avertir de cette dépendance.
J'ai eu un problème similaire avec un paquet qui dépendait d'une version de libcairo légèrement supérieure à celle actuellement disponible dans Debian. Pour mes besoins, cela fonctionne toujours bien. Je suis heureux de continuer à l'utiliser jusqu'à ce que la mise à jour de libcairo apparaisse dans apt. Je ne veux pas compiler depuis les sources ni créer mon propre paquet.
La solution que j'ai trouvée:
/var/lib/dpkg/status
,Depends:
pour que le paquet ne se plaint pas.Je suppose que cela sera écrasé la prochaine fois que le paquet sera mis à jour, mais c'est exactement ce que je veux.
Ce que vous essayez de faire va à l’encontre du but d’un gestionnaire de paquets, qui essaie de garder un environnement sain, i. o. w. vous utilisez le mauvais outil pour le travail. N'essayez pas de casser apt-get.
La bonne façon de résoudre votre problème est de construire votre propre paquet avec les dépendances qui vous conviennent. Il y a la manière officielle (très impliquée: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) et la méthode rapide en utilisant apt-build
, ou pour les packages qui ne sont pas dans la source de distribution, checkinstall
. Tous les paquets produits apt-get seront installés avec plaisir.
Sur une note finale, vous pouvez mettre en doute la sagesse du responsable d’esl-erlang d’inclure certaines dépendances, mais vous ne pouvez pas reprocher au gestionnaire de packages le comportement souhaité. Si vous pensez que ces dépendances sont incorrectes, vous devriez créer un bogue avec le paquet.
Vérifiez si le "proxy utilisé" dans le apt.conf
est correct (c'est-à-dire conformément à votre réseau). Cela cause également de tels problèmes, car les URL seraient inaccessibles.
Généralement, si vous utilisez un proxy, votre /etc/apt/apt.conf
ressemblera à ceci:
Acquire::ftp::proxy "ftp://<user>:<password>@<ip>:<port>/";
Acquire::http::proxy "http://<user>:<password>@<ip>:<port>/";
Acquire::https::proxy "https://<user>:<password>@<ip>:<port>/";