Что такое «build-essential» и «build-dep»?

66

Я изучаю, как установить Ruby 1.9.1 в Xubuntu 10.04, и несколько раз сталкивался с командой build-essential и build-dep . Иногда за ним следуют пакеты, а иногда и перед, и после передачи пакетов.

Вот 2 примера, на которые я смотрю:

sudo apt-get установить build-essential zlib1g zlib1g-dev zlibc libruby1.9 libxml2 libxml2-dev libxslt-dev

sudo apt-get build-dep ruby1.9

а также

sudo apt-get установить ruby ​​irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libdbm-ruby libdbi libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev

классерским
источник
3
Обратите внимание, что это не команда, а пакет в системе пакетов Debian (APT). Вы также можете приобрести пакет, используя инструменты с графическим интерфейсом.
Благодарю. Как это относится к Ruby? Полагаю, Руби нужен для запуска, но, возможно, я ошибаюсь.
Класс

Ответы:

48

build-essentialПакет является ориентиром для всех пакетов , необходимых для компиляции пакета Debian. Обычно он включает в себя компиляторы и библиотеки GCC / g ++ и некоторые другие утилиты.

Ознакомьтесь с документацией здесь .

Исмаэль
источник
2
Хорошо, но это все еще не отвечает на мой вопрос полностью. Я понимаю, что «build-essential» содержит информационный список пакетов, которые необходимы для создания пакетов Debian. Но что считать пакетом Debian? Рубин? компиляторы gcc / g ++? И как пакеты Debian и build-essential связаны с Ruby? Ruby построен поверх пакета Debian? Иными словами, нужен ли Ruby пакет build-essential для запуска? Я действительно хочу увидеть визуальное представление отношения между всеми этими частями.
Класс
3
Проще говоря, если вам (или другому пакету, который вы хотите установить) нужен компилятор C / C ++, вам необходимо установить build-essential. Обычно это первое, что я устанавливаю в новой установке Ubuntu :-)
4
@Adam Поскольку Ruby является интерпретируемым языком, интерпретатору необходим компилятор C или C ++, чтобы он мог работать на вашем компьютере. build-essentialэто метапакет (пакет, который устанавливает много других пакетов, таких как g ++ и gcc: компиляторы GNU C & C ++). Это необходимо, если вы хотите скомпилировать что-либо из исходного кода, и если вы хотите работать практически с любым языком программирования. НТН!
Squircle
7
Этот ответ неверен. Ответ ниже является правильным. build-depявляется командой apt-get и build-essentialявляется пакетом
Дэвид
2
Это не правильный ответ. Предоставленная ссылка не дает понимания или объяснения относительно того, что находится в пакете build-essential.
andDevW
55

Команда sudo apt-get build-dep packagenameозначает «Как пользователь root, установите все зависимости для« packagename », чтобы я мог его собрать». Так что build-dep - это команда apt-get, такая же как установка, удаление, обновление и т. Д.

build-essential это пакет, который содержит ссылки на многочисленные пакеты, необходимые для создания программного обеспечения в целом.

Клейст
источник
1
Спасибо за объяснение команды build-dep. Насколько я понимаю, в этом случае к Ruby1.9 прикреплен список зависимостей, который Linux выглядит как «Список дел / сборка», и каждый из этих элементов строится один за другим. Последняя созданная инфраструктура позволяет Ruby1.9 нормально функционировать. Я не понимаю, почему «build-essential» или все другие пакеты в верхней строке (zlib1g zlib1g-dev zlibc libruby1.9 и т. Д. И т. Д.) Не будут включены в список «To Do / Build List» прикреплен к Ruby1.9. Разве не было бы проще, если бы была только одна команда?
Класс
5

build-essentialимеет одно магическое свойство: его не нужно указывать в качестве зависимости сборки в Build-Dependsполе управления ( debian-packages) пакетов с исходным кодом, как описано на https://www.debian.org/doc/debian-policy/ch-source.html#. S-PKG-отношения

Вы можете получить список необходимых для сборки пакетов по адресу:

cat /usr/share/doc/build-essential/list

Вы также можете определить, является ли пакет частью build-essential:

apt-get show gcc

который говорит:

Build-Essential: yes
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
4

«build-essential» содержит инструменты (такие как компилятор gcc, инструмент make и т. д.) для компиляции / сборки программного обеспечения из исходного кода. Итак, вы начинаете с (обычно C) исходных файлов и создаете из них исполняемые файлы.

Если вы просто пытаетесь установить Ruby, я настоятельно рекомендую использовать RVM (Ruby Version Manager) :

Следуйте инструкциям в разделе «Репозиторий Github (рекомендуется)»

Обратите внимание, что сначала вам потребуется установить программное обеспечение для контроля версий Git. Используйте, apt-get install git-coreесли у вас его еще нет.

Doug
источник