Як встановити файл deb, dpkg -i або apt?


600

У мене є пакет деб для встановлення.

Чи можу я встановити dpkg -i my.deb, або apt?

Чи вдасться обом впоратися із проблемою залежності від програмного забезпечення?

Як за допомогою apt, як я можу встановити з deb за apt?


Ви можете використовувати, aptitudeщо видаляє непотрібні пакунки.
Рамеш

2
Рекомендую не використовувати безпосередньо dpkg. У разі одного Деба, йти з Gdebi і в разі кілька Дебс, піти на APT локального сховища .
Пандія

5
чому ......... @Pandya
Тім

2
@Tim, тому dpkgщо не вирішує залежності.
Пандія

1
@Tim gdebi ідентифікує відсутні залежності, може завантажувати та встановлювати (використовуючи apt), може встановлювати та конфігурувати (використовуючи dpkg).
Пандія

Відповіді:


770

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

Після завершення завантаження він вимагає dpkgвстановити всі ці файли, задовольняючи всі залежності.

Тож якщо у вас є .debфайл:

  • Ви можете встановити його за допомогою:

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • Ви можете встановити його за допомогою sudo apt install ./name.deb(або sudo apt install /path/to/package/name.deb).

    Зі старими apt-getверсіями потрібно спочатку перемістити деб-файл у /var/cache/apt/archives/каталог. Для обох, виконавши цю команду, вона автоматично завантажить свої залежності.

  • Встановіть gdebiі відкрийте .deb файл за допомогою нього ( клацніть правою кнопкою миші -> Відкрити за допомогою ). Він встановить ваш .deb пакет з усіма його залежностями.

    ( Примітка : APT підтримує індекс пакетів, який є базою даних доступних пакетів, доступних у репо, визначених у /etc/apt/sources.listфайлі та в /etc/apt/sources.list.dкаталозі. Усі ці методи не зможуть задовольнити програмну залежність, якщо в індексі пакетів відсутні залежності, необхідні дебютом. .)


Навіщо використовувати 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встановлюється пакет, і залежність пакета не задовольняється, він залишає пакет у "неконфігурованому" стані, і цей пакет вважається порушеним.

sudo apt-get install -f команда намагається виправити цей зламаний пакет, встановивши відсутність залежності.


2
@Tim, apt-get призначений для встановлення пакетів із сховища. Він підтримує список пакетів, а також їх відповідну адресу сховища. Тому просто переміщення файлу .dev, який не присутній у списку програм apt, у каталозі / var / cache / apt / archives не працюватиме. Тому що, коли ви намагаєтесь встановити цей пакет за допомогою apt-get, він шукає його сховище, якого немає. Для цього вам потрібно створити локальне сховище, яке я вважаю марним.
g_p

1
@g_p дякую! я трохи розгублений у вашій відповіді вище. ви пишете: "(це спрацює, якщо пакет .deb присутній у списку програм apt)" - я не розумію, що тут мається на увазі. Як можна забезпечити присутність пакету .deb у списку підходящих пакетів?
BKSpurgeon

1
@BKSpurgeon, я додав у свою відповідь трохи інформації. Щоб дізнатися, чи присутній пакет в індексі чи не запускається apt-cache search <package name>. Ви також можете використовувати apt-cache policy <package name>, що також дасть додаткову інформацію.
g_p

1
Чи все-таки ці методи перевірятимуть підпис, як правило, виконується apt? Або можливо встановити підроблений .deb файл таким чином?
Боан

8
Сучасний apt-get може бути корисним для установки пакета просто за допомогою apt-get install /path/to/package/name.deb. Було б охайно, якби автор цієї відповіді вирішив це інтегрувати. Якщо ні, я піду додати цю відповідь коли-небудь, коли у мене буде достатньо репрезентації
Сем Хартман,

91

Встановіть foo.debфайл за допомогою dpkg -i foo.deb. Якщо є деякі помилки з невирішеними залежностями, запустіть apt-get install -fпотім.


Я Unable to locate packageнамагався таким чином і спантеличив. Я використовував, як в Windows, лише ім'я пакета після переходу в папку архіву. Має бути ./<file name>для Unix, якщо у поточній папці або повній контуру. Тобто, якщо debв папці немає папки PATH.
Олексій Мартьянов

60

Ось найкращий спосіб встановити .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'

(Ось , до речі, є вирішення цього конкретного питання .)


працював чудово THX! btw, може бути, що спроба видалити стосувалася тих перехідних / тимчасових пакетів? чи ти думаєш, що це дійсно би зламало систему?
Сила Водолія

Чувак, я зіткнувся з проблемою з вашим рішенням. Я намагався встановити Rstudio. Він автоматично знайшов для мене стару версію R. Під час використання рішення від @g_p я зміг встановити лише Rstudio.
Dr_Hope

39

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

sudo apt install ./foo.deb

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


2
Це слід позначити як правильну відповідь.
Раель Гугельмін Кунья

@RaelGugelminCunha не на 100% правильний. sudo apt встановити libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt: помилка під час завантаження спільних бібліотек: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: недійсний заголовок ELF
mvladk

2
@mvladk Будь ласка, зверніть увагу на синтаксис: у вас пропущено файл ./перед debфайлом.
Раель Гугельмін Кунья

Абсолютно найкраща / найпростіша відповідь.
gerardw

15

Попередньо перевірте залежності dpkg -I my.debта apt-get installзалежності dpkg -i my.deb.

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


Дякую. у першому сенсі, ви маєте apt-get install my.debна увазі під apt-get install? Це встановити з файлу deb? Навіщо нам це потрібно dpkg -i my.debпісля цього?
Тім

Я завжди встановлював локальний .debs dpkg -i, моє розуміння, що aptнемає можливості їх встановити, окрім каталогу, /var/cache/...куди завантажуються (я можу помилятися)
Alex

Здається, що apt-get install ./my.debщось зробить, адже це виводить багато речей. Що це робить?
Тім

Це робить занадто багато :-) не працює, дивіться @Igor_Dvoretskyi відповідь просто ідеальна, я забув про це-f
Олексій

5

Найпростішою відповіддю було б використовувати 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.


5

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

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


З цим не вийшлоapt 1.0.9.8.4 for amd64 compiled on Dec 11 2016 09:48:19
Бруно Броноскі,

-3

Це дуже просто, якщо я хочу встановити 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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.