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?



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.


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

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


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


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.


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!


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.


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

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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.