491 votes

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

Dites, j'ai foo-1.2.3.deb qui dépend de perl y python Cependant, la commande en cours d'exécution :

dpkg -i ./foo-1.2.3.deb

n'installera pas ces dépendances. Je dois donc apt-get install perl python à la main.

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

9 votes

@pd12 : Hourra pour les références circulaires ! :-D

0 votes

Heh, j'ai décidé de lier les deux et de voir lequel les mods allaient choisir.

15voto

karel Points 97032

Si vous avez besoin d'exécuter une commande qui résout automatiquement toutes les dépendances d'un fichier .deb et installe le fichier .deb et ses dépendances manquantes avec la même commande, vous devrez mettre à jour vos logiciels installés à l'aide de la commande sudo apt update . Ensuite, ouvrez le terminal, changez les répertoires en utilisant cd dans le répertoire contenant le paquet-nom.deb, et tapez :

apt install --simulate ./_package-name.deb_ # This command does not require sudo.

_package-name.deb_ doit être remplacé par le nom d'un fichier .deb situé dans le répertoire actuel que vous essayez d'installer.

La commande ci-dessus n'installera rien, mais elle affichera un message listant toutes les dépendances de package-name.deb qui n'existent pas dans les dépôts Ubuntu par défaut. Vous devrez télécharger et installer manuellement les fichiers .deb de ces paquets de dépendance manquants afin d'installer le paquet-nom.deb. Exécutez apt install --simulate ./_manually-downloaded-package.deb_ avant d'installer l'un de ces paquets de dépendances téléchargés manuellement, afin de vérifier si ces paquets ont eux-mêmes des dépendances non satisfaites.

Si la commande simulée se termine avec succès, exécutez la commande suivante pour installer package-name.deb.

sudo apt install ./package-name.deb

Il peut y avoir plusieurs fichiers .deb dans la même commande si les fichiers .deb sont tous situés dans le répertoire actuel.

sudo apt install ./package-name-1.deb ./package-name-2.deb

11voto

Rinzwind Points 270388

Dpkg ne prend pas en charge les dépendances. Il existe un moyen de le contourner mais cela nécessiterait que vous fassiez une base de données locale (et donc que vous connaissiez déjà les dépendances) et il est considéré comme obsolète (...).

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

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

Comment avez-vous téléchargé le .deb ? L'une des nouvelles fonctionnalités de 11.04 est la gestion des .deb téléchargés à partir d'un site web : ils sont ouverts 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 !

0 votes

Gdebi peut toujours être utilisé pour cela. Le centre logiciel est maintenant juste l'application par défaut. En outre, comme le note Chen Xiao-Long, gdebi peut également être utilisé en ligne de commande.

0 votes

Cool ! alors la question a une réponse parce que gdebi peut être utilisé sur la ligne de commande aussi il semble.

0 votes

Cela devrait être la réponse acceptée.

3voto

Evert Points 190

Comme alternative à gdebi-gtk vous pouvez utiliser le Centre logiciel Ubuntu.

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

3voto

BuZZ-dEE Points 13314

Vous pourriez 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 vers /usr/local/bin avec sudo cp dpkg-dep-inst /usr/local/bin .

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

sudo dpkg-dep-inst foo-1.2.3.deb

2 votes

Utilisez apt-get --yes --fix-broken install et rendre la fixation automatique.

0 votes

@ysth Non, pas en général.

2voto

Alex Kläser Points 21

Je viens de rencontrer ce problème. Appeler apt-get install -f sera no installer recommandé cependant ! La seule solution de contournement serait alors de créer un dépôt 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X