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

325

Dites, j'ai foo-1.2.3.debqui dépend de, perlet pythoncependant, la commande en cours d'exécution:

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 dpkg -iinstaller ces dépendances pour moi automatiquement?

Xiè Jìléi
la source
5
@ pd12: Hourra pour les références circulaires! :-D
David Foerster
hé, j'ai décidé de relier les deux et voir lequel les mods choisiraient.
pd12

Réponses:

417

Après utilisation 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...

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

Arindom
la source
8
Devrais-je courir à sudo dpkg -i mypackage.debnouveau?
Muhammad Gelbana
23
Après avoir exécuté sudo apt-get -f installmon paquet, toutes les dépendances ont été installées. Courir sudo dpkg -i my_package.debn’est pas nécessaire et ne fera que réinstaller le paquet.
Gus E
5
À la suite de travaux sur Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. La première dpkg -iexécution marque les dépendances, apt-get -f installinstalle les dépendances requises et la seconde dpkg -iinstalle avec succès le paquet. Notez que apt-get install -fc'est une commande totalement différente.
Mikko Rantalainen
1
@ysth non, ne pas faire dpkg -i --force; cela forcera-installer un paquet cassé! Courir dpkg/ sans / --forcefera l’entrée nécessaire dans la base de données de paquets pour que apt-get -f installcela fasse la bonne chose.
Brian A. Henning
@Lotharyx: Je ne peux pas l' essayer en ce moment, mais je ne pensais pas que la force sans dpkg (qui échoue en raison de dépendances manquantes) pourrait faire une entrée dans la base de données de package
ysth
111

Vous pouvez installer gdebi-core, qui est 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
Andrew Gunnerson
la source
65

à partir de apt 1.1 (disponible dans Xenial (16.04), stretch) apt installautorise également les fichiers locaux:

sudo apt install ./foo-1.2.3.deb

Tellement plus simple et plus propre.

Voir l' annonce de sortie

SMS
la source
4
Il est temps que ce soit disponible
Mike
Cette solution n'a pas fonctionné. Tout ce qui s'est passé était une liste d'erreurs.
Billy S
@BillyS désolé d'apprendre que cela n'a pas fonctionné pour vous, mais sans la version de la distribution que vous utilisez et les erreurs que vous avez commises, celle-ci ne peut pas être traitée du tout.
Textes
La commande n'a pas fonctionné pour moi mais a apt ./install foo-1.2.3.debfonctionné.
Cenk Alti
1
Correction de la commande, les commentaires ci-dessus renvoyaient à la version précédente de la réponse qui manquait le ./chemin ou le chemin nécessaire
Zanna
38

Gdebi

gdebiinstalle 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 gdebipour une liste complète des options.

gdebiest l'équivalent en ligne de commande de l'outil graphique du même nom qui était inclus par défaut dans Ubuntu. La commande de l'outil graphique est gdebi-gtket a une fonctionnalité similaire:

gdebi-gtk

dv3500ea
la source
gdebi-gtk ne montrera pas les dépôts requis (la version que j'ai ici au moins, et cela ressemble à un bogue), mais la ligne de commande le fera! Si nous avons une autre machine avec les paquets que nous pouvons utiliser dpkg-repackdessus en nous basant sur cette liste de dépots :)
Aquarius Power
21

fonctionnement

sudo apt-get install -f

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

Denwerko
la source
Devrais-je courir à sudo dpkg -i mypackage.debnouveau?
Muhammad Gelbana
3
apt-get -f installfonctionne, mais apt-get install -fn'est pas la même chose.
200_success
9

dpkg ne prend pas en charge les dépendances. Il existe un moyen de contourner le problème, mais cela nécessiterait de créer une base de données locale (et donc de connaître déjà les dépendances), ce qui 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'oeil, apt-get -fmais soyez prudent: si vous résolvez des dépendances après l'installation, votre système risque d'être endommagé.

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 sont résolues par l’installateur.

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

Rinzwind
la source
gdebi peut toujours être utilisé pour cela. Centre de logiciels est maintenant juste l'application par défaut. En outre, comme le note Chen Xiao-Long, gdebi peut également être utilisé sur la ligne de commande.
andrewsomething
cool! alors la question a une réponse car gdebi peut être utilisé en ligne de commande aussi, semble-t-il.
Rinzwind
Cela devrait être la réponse acceptée.
prosti
3

À la place, gdebi-gtkvous pouvez utiliser Ubuntu Software Center.

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

Henrique
la source
3

Vous pouvez créer un fichier dpkg-dep-instavec 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. Faites - exécutable chmod +x dpkg-dep-instet le déplacer vers /usr/local/binavec sudo cp dpkg-dep-inst /usr/local/bin.

Vous pouvez maintenant installer le paquet Debian avec ses dépendances automatiquement avec:

sudo dpkg-dep-inst foo-1.2.3.deb
BuZZ-dEE
la source
1
Utiliser apt-get --yes --fix-broken installet rendre la fixation automatique.
Lucas
@ysth Non, pas en général.
BuZZ-dEE
1

Je viens de rencontrer ce problème. Appel apt-get install -fsera pas installer recommandées dépendances, bien! 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
Alex Kläser
la source
0

En réalité, la réponse est que le dpkggestionnaire de paquets ne peut pas installer de dépendances prêtes à l'emploi. Vous cam man dpkget découvert que. Vous avez donc besoin d'utiliser des outils comme apt, apt-get, aptitude, ..., sur la base dpkg.

Je dirais que le même cas rpms’applique au gestionnaire de paquets de l’autre hémisphère Linux. rmpn'est pas destiné à faire des installations basées sur la dépendance. Il peut installer des paquets simples, et pour installer les dépendances que vous utilisez yum, urpmi, up2dateceux - ci sont tous basés sur RPM.

Comme indiqué dpkgprécédemment, il existe un léger danger lors de l’installation directe de packages , car la résolution ultérieure de la dépendance peut aboutir à un système défectueux, comme indiqué par @Rinzwind.

prosti
la source