web-dev-qa-db-fra.com

Comment installer un fichier deb, par dpkg -i ou par apt?

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?

728
Tim

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.

Donc, si vous avez un fichier .deb, Vous pouvez l'installer en:

  1. En utilisant:

    Sudo dpkg -i /path/to/deb/file
    Sudo apt-get install -f
    
  2. 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.

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


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

939
g_p

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.

95
ihor_dvoretskyi

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.

Pourquoi gdebi?

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

66
Flimm

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.

60
wisbucky

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 my.deb dans /var/cache/apt/archives et installez-le directement avec apt-get mais je n'ai jamais essayé. Ne fonctionne pas, apt-get et dpkg recherchent les packages répertoriés dans les archives.

15
Alex

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.

6
Interesting...

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 )

5
reducing activity