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

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

Можно ли установить с помощью dpkg -i my.deb или с помощью apt?

Хорошо ли справятся с проблемой зависимости программного обеспечения?

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

384 голоса | спросил Tim 3 +04002014-10-03T19:52:46+04:00312014bEurope/MoscowFri, 03 Oct 2014 19:52:46 +0400 2014, 19:52:46

8 ответов


489

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

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

Итак, если у вас есть файл .deb:

  • Вы можете установить его с помощью sudo dpkg -i /path/to/deb/file, за которым следует sudo apt-get install -f.

  • Вы можете установить его с помощью sudo apt install ./name.deb (или /path/to/package/name.deb).
    С помощью старых версий apt-get вы должны перенести свой файл deb в каталог /var/cache/apt/archives/. Для обоих после выполнения этой команды он автоматически загрузит свои зависимости.

  • Установите 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 (упоминается в первом методе) ,

Из man apt-get

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

Если dpkg установить пакет и зависимость пакета не выполняется, он оставляет пакет в состоянии unconfigured, и этот пакет считается сломанным.

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

ответил g_p 3 +04002014-10-03T20:59:22+04:00312014bEurope/MoscowFri, 03 Oct 2014 20:59:22 +0400 2014, 20:59:22
77

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

ответил idvoretskyi 3 +04002014-10-03T20:15:52+04:00312014bEurope/MoscowFri, 03 Oct 2014 20:15:52 +0400 2014, 20:15:52
43

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

sudo gdebi skype.deb

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

Почему gdebi?

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'

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

ответил Flimm 27 TueEurope/Moscow2016-12-27T12:15:44+03:00Europe/Moscow12bEurope/MoscowTue, 27 Dec 2016 12:15:44 +0300 2016, 12:15:44
12

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

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

ответил Alex 3 +04002014-10-03T19:59:49+04:00312014bEurope/MoscowFri, 03 Oct 2014 19:59:49 +0400 2014, 19:59:49
9

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

sudo apt install ./foo.deb

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

ответил wisbucky 28 J0000006Europe/Moscow 2017, 04:26:57
3

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

ответил Interesting... 2 MaramMon, 02 Mar 2015 05:53:42 +03002015-03-02T05:53:42+03:0005 2015, 05:53:42
3

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

(должно быть сделано как изменение верхнего ответа, но оно было отклонено - см. https://unix.stackexchange.com /сообщений /159114 /редактировать )

ответил Mateusz Konieczny 17 J000000Monday17 2017, 12:01:15
-2

Это очень просто, если я хочу установить Chrome.

Установите файл Chrome как:

dpkg -i googlechrome.deb.

Иногда возникает вероятность получить некоторые ошибки зависимостей, например:

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

Итак, чтобы решить вышеуказанные проблемы, вам нужно добавить зависимости; введите следующую команду:

apt-get install -f

После предоставления указанной команды на ваш компьютер будут добавлены зависимости, а ваш пакет Debian (.deb) будет установлен.

ответил Pavan vadrevu 14 ThuEurope/Moscow2017-12-14T12:22:00+03:00Europe/Moscow12bEurope/MoscowThu, 14 Dec 2017 12:22:00 +0300 2017, 12:22:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132