Яка різниця між apt-get install та apt-get build-dep?


33

На сторінці влучного чоловіка можна знайти таке:

встановити pkg (s) Після
цієї опції слід дотримуватися одного або декількох пакетів, необхідних для встановлення. Кожен пакет - це ім'я пакету, а не повністю кваліфіковане ім'я файлу (наприклад, в системі Fedora Core glibc буде наданим аргументом, а не glibc-2.4.8.i686.rpm).
Усі пакунки, необхідні пакетам, зазначеним для встановлення, також будуть вилучені та встановлені .
[...]

build-dep source_pkg
Викликає apt-get для встановлення / видалення пакунків, намагаючись задовольнити залежності збірки для вихідного пакету.

Здається, що обидва намагаються задовольнити залежності, але я мав різні результати, встановлюючиmatplotlib кожен із них: apt-get intallне працював з моїм наступним pip install matplotlibв моєму virtualenv, в той час як apt-get build-dep*.

*Так, мені потрібно було встановити matplotlibв venv, але pip не міг вирішити деякі залежності, тому я ліниво використовував apt для того, щоб вирішити це

Відповіді:


39

Коротка версія.

apt-get install

встановлює новий пакет, автоматично розв’язуючи та завантажуючи залежні пакети. Якщо пакет встановлений, то спробуйте оновити його до останньої версії.

apt-get build-dep

Викликає apt-get для встановлення / видалення пакунків, намагаючись задовольнити залежності збірки для вихідного пакету.

Команда sudo apt-get build-dep packagenameозначає встановити всі залежності для 'ім'я пакета', щоб я міг його побудувати ". Отже, build-dep - це команда apt-get, як і встановити, видалити, оновити тощо.

build-depКоманда шукає локальні репозиторії в системі і встановити залежності збирання для пакета. Якщо пакет не існує в локальному сховищі, він поверне код помилки.

Щоб встановити matplotlib, див. Установка matplotlib на Ubuntu

Джерело: ManPage & Ravi Saive


19

Різниця полягає в тому, чи потрібні залежності під час виконання , на відміну від часу нарощування .

Наприклад, можливо, я будую двійковий файл, який використовує openssl. На час збирання мені знадобляться файли заголовків openssl, які знаходяться в libssl-dev. Потім я б перерахував це як Build-Depends.

Однак отриманий бінарний і пакувальний пакет не потребують заголовка та інших файлів розробки, тому в час установки мені це не потрібно libssl-dev. Тоді б його не було Depends. Але libssl, бібліотека часу виконання, з якою я пов’язаний бінарним файлом, повинна мати місце Depends.

Чоловічі розділи, які ви цитували, вказують на це (мова йде про "задоволення залежностей побудови " пакету), але без попереднього знання про те, коли використовуються Build-залежні, це може бути заплутаним.

Перегляньте посібник з політики Debian щодо визначення полів файлів управління:

http://www.debian.org/doc/debian-policy/ch-controlfields.html

ось розділ про побудову залежно. Зверніть увагу, що це під заголовком "залежності для вихідних пакетів":

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps

І це говорить про залежно. Відзначте його "під заголовком Бінарних пакунків :

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps


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