it-swarm-ru.tech

Как установить файл deb, с помощью dpkg -i или apt?

У меня есть пакет deb для установки.

Должен ли я установить dpkg -i my.deb или по методу?

Будут ли оба хорошо решать проблему зависимости от программного обеспечения?

Если по apt, как я могу установить с deb по apt?

728
Tim

Когда вы используете apt для установки пакета, под капотом он использует dpkg. Когда вы устанавливаете пакет с помощью apt, он сначала создает список всех зависимостей и загружает его из репозитория.

После завершения загрузки он вызывает dpkg для установки всех этих файлов, удовлетворяющих всем зависимостям.

Так что если у вас есть .deb файл, вы можете установить его:

  1. С помощью:

    Sudo dpkg -i /path/to/deb/file
    Sudo apt-get install -f
    
  2. С помощью:

    Sudo apt install ./name.deb
    

    Или

    Sudo apt install /path/to/package/name.deb
    

    Со старым apt-get версии, вы должны сначала переместить файл deb в /var/cache/apt/archives/ каталог. Для обоих, после выполнения этой команды, она автоматически загрузит свои зависимости.

  3. Сначала установите gdebi, а затем откройте файл .deb, используя его ( щелкните правой кнопкой мыши -> Откройте с помощью). Он установит ваш пакет .deb со всеми его зависимостями.

    Примечание : APT поддерживает индекс пакетов, который представляет собой базу данных доступных пакетов, доступных в репозитории, определенном в /etc/apt/sources.list файл и в /etc/apt/sources.list.d каталог. Все эти методы не смогут удовлетворить программную зависимость, если зависимости, требуемые deb, отсутствуют в индексе пакета.


Зачем использовать Sudo apt-get install -f после Sudo dpkg -i /path/to/deb/file (как указано в методе 1)?

От man apt-get:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

Когда dpkg устанавливает пакет и зависимость пакета не удовлетворяется, он оставляет пакет в "ненастроенном" состоянии, и этот пакет считается поврежденным.

Sudo apt-get install -f команда пытается исправить этот поврежденный пакет, установив отсутствующую зависимость.

939
g_p

Установите свой foo.deb файл с dpkg -i foo.deb. Если есть ошибки с неразрешенными зависимостями, запустите apt-get install -f потом.

95
ihor_dvoretskyi

Вот лучший способ установить .deb файл в Ubuntu из командной строки:

Sudo gdebi skype.deb

Если у вас еще не установлено gdebi, установите его с помощью Sudo apt install gdebi-core.

Почему гдеби?

gdebi будет искать все зависимости .deb и ​​установит их перед попыткой установить .deb файл. Я считаю, что это гораздо предпочтительнее, чем Sudo dpkg -i skype.deb && Sudo apt install -f. Последний слишком стремится удалить зависимости в определенных ситуациях. Например, когда я пытался установить Skype, он попытался удалить 96 (!) Пакетов, включая такие пакеты, как compiz и ​​unity! gdebi дал гораздо более четкое сообщение об ошибке:

 $ Sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(Вот решение этой конкретной проблемы , кстати.)

66
Flimm

Вы можете установить локальный пакет .deb:

Sudo apt install ./foo.deb

Обязательно укажите локальный относительный или абсолютный путь (./ если в текущем каталоге), иначе он будет искать foo.deb в удаленных репозиториях и сбой.

60
wisbucky

Проверьте зависимости с помощью dpkg -I my.deb а также apt-get install зависимости до dpkg -i my.deb.

Может быть, вы можете скопировать my.deb в /var/cache/apt/archives и ​​установите его непосредственно с помощью apt-get но я никогда не пробовал. Не работает, apt-get и ​​dpkg ищут пакеты, перечисленные в архивах.

15
Alex

Самый простой ответ - использовать dpkg, запустив dpkg -i packagename.deb. Затем вы можете удалить его, запустив dpkg -r packagename.deb.
apt-get - установщик более высокого уровня, основанный на dpkg, и поэтому вы можете apt-get install packagename.deb.
Было бы полезно добавить его в каталог архивов apt-get (/var/cache/apt/archives) чтобы вы могли ссылаться на него как на пакет с зависимостями, а не на отдельный архив .deb.
Кроме того, добавив его в свой каталог архивов apt-get, вы сможете использовать зависимости с apt-get install packagename. Это позволит вам установить его с любыми добавленными зависимостями вместо автономной системы на основе архива dpkg.

6
Interesting...

Современный apt-get можно использовать для установки пакета просто с помощью apt-get install /path/to/package/name.deb.

(должно быть сделано как правка для верхнего ответа, но оно было отклонено - см. https://unix.stackexchange.com/posts/159114/edit )

5
reducing activity