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


Dis, j'ai foo-1.2.3.deb qui dépend de perl et python, cependant, commande en cours d'exécution:

dpkg -i ./foo-1.2.3.deb

ne va pas installer ces dépendances. Donc je dois apt-get install perl python par la main.

Comment faire dpkg -i installer ces dépendances pour moi automatiquement?


260
2018-05-04 13:11


origine


Duplicata possible de Comment récupérer automatiquement les dépendances manquantes lors de l'installation du logiciel à partir de .deb? - pd12
@ pd12: Hourra pour les références circulaires! :-RÉ - David Foerster
heh, j'ai décidé de lier les deux et voir lequel les mods choisiraient. - pd12
C'est incroyable qu'en 2016, un L'installation graphique de .deb échoue toujours sans rien dire à l'utilisateur sur les dépendances manquantes. - Dan Dascalescu


Réponses:


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...

Remarquer la ligne à propos de Setting up package_with_unsatisfied_dependencies. Ce des corrections (et complète) l'installation de package_with_unsatisfied_dependencies.deb.


348
2018-05-04 15:38



Devrais-je courir sudo dpkg -i mypackage.deb encore ? - Muhammad Gelbana
Après la course sudo apt-get -f install mon paquet et ses dépendances ont tous été installés. Fonctionnement sudo dpkg -i my_package.deb est inutile et installera simplement le paquet à nouveau. - Gus E
Travaux suivants sur Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. La première dpkg -i les dépendances d'exécution, apt-get -f install installe les dépendances requises et la seconde dpkg -iinstalle correctement le package. Notez que apt-get install -f est une commande totalement différente. - Mikko Rantalainen
@ysth non, ne fais pas dpkg -i --force; cela va forcer à installer un paquet cassé! Fonctionnement dpkg /sans pour autant/ --force fera l'entrée nécessaire dans la base de données de paquets afin que apt-get -f install fera la bonne chose. - Brian A. Henning
@Lotharyx: Je ne peux pas l'essayer maintenant, mais je ne pensais pas que le dpkg sans force (qui échoue à cause de dépendances manquantes) ferait une entrée dans la base de données de paquets - ysth


Vous pouvez installer gdebi-core, qui est la version en ligne de commande du programme d'installation du package GDebi de 10.04 et des versions antérieures. Dans les nouvelles versions d'Ubuntu, le Software Center est utilisé pour installer debs, qui n'a pas d'équivalent de ligne de commande.

Pour installer un paquet deb en utilisant gdebi, exécutez simplement:

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





Gdebi

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

sudo gdebi package.deb

Dans les nouvelles versions 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 la ligne de commande équivalente à l'outil graphique du même nom qui était inclus par défaut dans Ubuntu. La commande de l'outil graphique est gdebi-gtk et a des fonctionnalités similaires:

gdebi-gtk


35
2018-05-04 16:56



gdebi-gtk ne montrera pas les deps requis (la version que j'ai ici au moins, et ça ressemble à un bogue), mais la ligne de commande le fera! Si nous avons une autre machine avec les paquets que nous pouvons utiliser dpkg-repack sur la base de telle liste deps :) - Aquarius Power


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 annonce de sortie


27
2017-07-05 09:23



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 ne fonctionnait pas pour vous, mais sans la version de distribution que vous utilisez et les erreurs que vous avez eues, cela n’est pas du tout possible. - textshell
La commande n'a pas fonctionné pour moi mais apt ./install foo-1.2.3.deb travaillé. - Cenk Alti
Corrigé la commande, les commentaires ci-dessus renvoyaient à la version précédente de la réponse qui manquait le nécessaire ./ ou chemin - Zanna


fonctionnement

sudo apt-get install -f

après l'installation du paquet avec dpkg peut résoudre des dépendances cassées (au moins man apt-get le dire ...). Mis à jour quand je vais vérifier.


18
2018-05-04 13:17



Devrais-je courir sudo dpkg -i mypackage.deb encore ? - Muhammad Gelbana
apt-get -f install fonctionne, mais apt-get install -f ce n'est pas la même chose. - 200_success


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

Doit-il être en ligne de commande? (installation du serveur?) Si oui, regardez aussi apt-get -f mais faites attention: résoudre des dépendances après l'installation pourrait vous amener à vous retrouver avec un système cassé.

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 sont la gestion des fichiers .deb téléchargés à partir d’un site Web: ils sont ouverts dans USC, ce qui permet de résoudre les dépendances.

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


9
2018-05-04 13:32



gdebi peut encore être utilisé pour cela. Software Center est désormais 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 aussi être utilisé en ligne de commande, semble-t-il. - Rinzwind
Cela devrait être la réponse acceptée. - prosti


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

Double-cliquez sur le package et un bouton d’installation doit être disponible.


3
2018-05-10 07:55





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 le déplacer à /usr/local/bin avec sudo cp dpkg-dep-inst /usr/local/bin.

Maintenant, vous pouvez installer le paquet Debian avec des dépendances automatiquement avec:

sudo dpkg-dep-inst foo-1.2.3.deb

3
2018-01-28 16:01



Utilisation apt-get --yes --fix-broken install et rendre la fixation automatique. - Lucas
@ysth Non, pas en général. - BuZZ-dEE


Je viens de rencontrer ce problème. Appel apt-get install -f volonté ne pas installer conseillédépendances cependant! La seule solution pour cela serait alors 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
2018-02-10 15:19





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

Je dirais que le même cas est pour le rpm gestionnaire de paquets sur l'autre hémisphère Linux. rmp n'est pas destiné à effectuer des installations basées sur des dépendances. Il peut installer des packages uniques et installer les dépendances que vous utilisez yum, urpmi, up2date ceux-ci sont tous basés sur RPM.

Comme indiqué, il y a un léger danger pour installer des paquets avec dpkg directement, car la résolution ultérieure de la résolution des dépendances peut aboutir à un système cassé tel que décrit dans @Rinzwind.


0
2017-08-16 19:05