web-dev-qa-db-fra.com

Comment laisser `dpkg -i` installer des dépendances pour moi?

Dites, j'ai foo-1.2.3.deb qui dépend de Perl et python, cependant, en exécutant la commande:

dpkg -i ./foo-1.2.3.deb

ne pas installer ces dépendances. Je dois donc apt-get install Perl python à la main.

Comment faire pour que dpkg -i installe ces dépendances automatiquement?

300
Xiè Jìléi

Après avoir utilisé dpkg, l'exécution de la commande suivante m'a aidé à installer les dépendances requises:

Sudo apt-get -f install

En tout, votre terminal devrait ressembler à ceci:

$ Sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ Sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

Notez la ligne à propos de Setting up package_with_unsatisfied_dependencies. Ceci corrige (et termine) l'installation de package_with_unsatisfied_dependencies.deb.

393
Arindom

Vous pouvez installer gdebi-core, qui correspond à la version en ligne de commande du programme d'installation du package GDebi à partir de 10.04 et antérieure. Dans les versions plus récentes d'Ubuntu, le Centre de logiciel est utilisé pour installer debs, qui n'a pas d'équivalent en ligne de commande.

Pour installer un paquet deb en utilisant gdebi, lancez simplement:

Sudo gdebi my_package_1.0.deb
111

en commençant par apt 1.1 (disponible dans Xenial (16.04), stretch) apt install autorise également les fichiers locaux:

Sudo apt install ./foo-1.2.3.deb

Tellement plus simple et plus propre.

Voir le communiqué de presse

48
textshell

Gdebi

gdebi installe un paquet deb et ses dépendances. Pour l'utiliser, lancez:

Sudo gdebi package.deb

Dans les versions plus récentes d'Ubuntu, ce n'est pas installé par défaut, vous devrez donc l'installer à partir des référentiels.

Voir man gdebi pour une liste complète des options.

gdebi est l'équivalent en ligne de commande de l'outil graphique du même nom qui était inclus par défaut dans Ubuntu. La commande pour l'outil graphique est gdebi-gtk et présente des fonctionnalités similaires:

gdebi-gtk

38
dv3500ea

fonctionnement

Sudo apt-get install -f

après l’installation du paquet avec dpkg peut résoudre les dépendances brisées (au moins man apt-get say so ...). Ill mise à jour quand je vais le vérifier.

20
Denwerko

dpkg ne prend pas en charge les dépendances. Il y a un moyen de le contourner, mais cela nécessiterait de créer une base de données locale (et donc de connaître déjà les dépendances) et cela est considéré comme obsolète (...).

Doit-il être en ligne de commande? (installation du serveur?) Si tel est le cas, jetez également un coup d'œil à apt-get -f mais soyez prudent: si vous résolvez des dépendances après une installation, vous risquez de vous retrouver avec un système en panne.

gdebi (interface graphique) était capable de le faire, mais a été remplacé par USC.

Comment avez-vous téléchargé le .deb. Certaines des nouvelles fonctionnalités de la version 11.04 concernent le traitement du fichier .deb téléchargé depuis un site Web: il est ouvert dans USC et les dépendances seront résolues par le programme d’installation.

EDIT basé sur le commentaire de andrew: Sudo gdebi foo-1.2.3.deb ferait l'affaire!

9
Rinzwind

Vous pouvez créer un fichier dpkg-dep-inst avec le contenu suivant.

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

Je suppose que vous avez créé le fichier dans votre dossier personnel. Rendez-le exécutable avec chmod +x dpkg-dep-inst et déplacez-le vers /usr/local/bin avec Sudo cp dpkg-dep-inst /usr/local/bin.

Maintenant, vous pouvez installer automatiquement le paquet debian avec ses dépendances avec:

Sudo dpkg-dep-inst foo-1.2.3.deb
3
BuZZ-dEE

Au lieu de gdebi-gtk, vous pouvez utiliser Ubuntu Software Center.

Double-cliquez sur le paquet et un bouton d'installation devrait être disponible.

3
Henrique

Je viens de rencontrer ce problème. L'appel de apt-get install -f aura pas installer des dépendances recommandées , cependant! La seule solution possible serait de créer un référentiel local et d’ajouter à /etc/apt/sources.list, c’est-à-dire:

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
Sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
Sudo apt-get update
1
Alex Kläser

En réalité, la réponse est que le gestionnaire de paquets dpkg ne peut pas installer les dépendances prêtes à l'emploi. Vous avez cam man dpkg et découvert cela. Vous devez donc utiliser des outils tels que apt, apt-get, aptitude, ..., basé sur dpkg.

Je dirais que le même cas s’applique au gestionnaire de paquets rpm de l’autre hémisphère Linux. rmp n'est pas destiné à effectuer des installations basées sur la dépendance. Il peut installer des packages individuels et pour installer les dépendances, utilisez yum, urpmi, up2date, toutes basées sur RPM.

Comme indiqué précédemment, l'installation de packages avec dpkg présente un léger danger, car la résolution ultérieure de la dépendance peut aboutir à un système défectueux, comme indiqué par @Rinzwind.

0
prosti