J'ai un paquet deb pour l'installation.
Dois-je installer par dpkg -i my.deb
, ou par apt?
Les deux géreront-ils bien le problème de dépendance logicielle?
Si par apt, comment puis-je installer à partir du deb par apt?
Lorsque vous utilisez apt
pour installer un package, sous le capot il utilise dpkg
. Lorsque vous installez un package à l'aide d'apt, il crée d'abord une liste de toutes les dépendances et le télécharge à partir du référentiel.
Une fois le téléchargement terminé, il appelle dpkg
pour installer tous ces fichiers, satisfaisant toutes les dépendances.
.deb
, Vous pouvez l'installer en:En utilisant:
Sudo dpkg -i /path/to/deb/file
Sudo apt-get install -f
En utilisant:
Sudo apt install ./name.deb
Ou
Sudo apt install /path/to/package/name.deb
Avec les anciennes versions de apt-get
, Vous devez d'abord déplacer votre fichier deb vers le répertoire /var/cache/apt/archives/
. Pour les deux, après avoir exécuté cette commande, il téléchargera automatiquement ses dépendances.
Installez d'abord gdebi
puis ouvrez votre fichier .deb en l'utilisant ( Clic droit -> Ouvrez avec). Il installera votre package .deb avec toutes ses dépendances.
Remarque : APT maintient l'index des packages qui est une base de données des packages disponibles disponibles en référentiel définis dans /etc/apt/sources.list
et dans le répertoire /etc/apt/sources.list.d
. Toutes ces méthodes ne satisferont pas la dépendance logicielle si les dépendances requises par deb ne sont pas présentes dans l'index du package.
Sudo apt-get install -f
Après Sudo dpkg -i /path/to/deb/file
(Comme mentionné dans la méthode 1)?De man apt-get
:
-f, --fix-broken
Fix; attempt to correct a system with broken dependencies in place.
Lorsque dpkg
installe un package et qu'une dépendance de package n'est pas satisfaite, il laisse le package dans un état "non configuré" et ce package est considéré comme rompu.
La commande Sudo apt-get install -f
Essaie de réparer ce package cassé en installant la dépendance manquante.
Installez votre foo.deb
fichier avec dpkg -i foo.deb
. S'il y a des erreurs avec des dépendances non résolues, exécutez apt-get install -f
ensuite.
Voici la meilleure façon d'installer un .deb
fichier sur Ubuntu sur la ligne de commande:
Sudo gdebi skype.deb
Si vous n'avez pas déjà installé gdebi
, installez-le à l'aide de Sudo apt install gdebi-core
.
gdebi
recherchera toutes les dépendances du .deb
, et les installera avant d'essayer d'installer le .deb
fichier. Je trouve cela bien préférable à Sudo dpkg -i skype.deb && Sudo apt install -f
. Ce dernier est beaucoup trop désireux de supprimer les dépendances dans certaines situations. Par exemple, lorsque j'ai essayé d'installer Skype, il a tenté de supprimer 96 (!) Packages, y compris des packages comme compiz
et unity
! gdebi
a donné un message d'erreur beaucoup plus clair:
$ Sudo gdebi skype.deb
Cannot install 'libqtgui:i386'
(Voici la solution à ce problème particulier , soit dit en passant.)
Vous pouvez installer un package .deb local en:
Sudo apt install ./foo.deb
Assurez-vous de spécifier un chemin d'accès relatif ou absolu local (./
si dans le répertoire courant), sinon il cherchera foo.deb
dans les dépôts distants et échoue.
Vérifiez les dépendances avec dpkg -I my.deb
et apt-get install
les dépendances avant dpkg -i my.deb
.
Peut-être que vous pouvez copier le Ne fonctionne pas, my.deb
dans /var/cache/apt/archives
et installez-le directement avec apt-get
mais je n'ai jamais essayé.apt-get
et dpkg
recherchent les packages répertoriés dans les archives.
La réponse la plus simple serait d'utiliser dpkg en exécutant dpkg -i packagename.deb
. Vous pouvez ensuite le désinstaller en exécutant dpkg -r packagename.deb
.apt-get
est un programme d'installation de niveau supérieur basé sur dpkg, et en tant que tel, vous pourriez apt-get install packagename.deb
.
Il serait avantageux de l'ajouter à votre répertoire d'archives apt-get (/var/cache/apt/archives
) afin que vous puissiez le référencer comme un package avec des dépendances et non comme une archive .deb autonome.
De plus, en l'ajoutant à votre répertoire d'archives apt-get, vous avez la possibilité d'utiliser des dépendances avec apt-get install packagename
. Cela vous permettrait de l'installer avec toutes les dépendances ajoutées manuellement au lieu du système autonome basé sur les archives de dpkg.
L'apt-get moderne peut être utilisé pour installer un paquet simplement avec apt-get install /path/to/package/name.deb
.
(devrait être fait en tant que modification de la première réponse, mais elle a été rejetée - voir https://unix.stackexchange.com/posts/159114/edit )