Apa itu "build-essential" & "build-dep"?

66

Saya sedang meneliti bagaimana cara menginstal Ruby 1.9.1 di Xubuntu 10.04 dan saya menemukan perintah build-essential dan build-dep beberapa kali. Kadang-kadang diikuti oleh paket dan kadang-kadang baik didahului dan pasca-ceded oleh paket.

2 contoh yang saya lihat adalah:

sudo apt-get install build-essential zlib1g zlib1g-dev zlibc libruby1.9 libxml2 libxml2-dev libxslt-dev

sudo apt-get build-dep ruby1.9

dan

sudo apt-get install ruby ​​irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libcurses-ruby libcurses-ruby libruby-libruby-extras libfcgi-ruby1.8 build-essential libopens-lib-ruby libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev

classer
sumber
3
Perhatikan bahwa ini bukan perintah, tetapi paket di sistem paket Debian (APT). Anda juga bisa mendapatkan paket menggunakan alat GUI.
Terima kasih. Bagaimana hubungannya dengan Ruby? Saya menganggap Ruby membutuhkannya untuk dijalankan tetapi mungkin saya salah.
classer

Jawaban:

48

The build-essentialpaket adalah referensi untuk semua paket yang diperlukan untuk mengkompilasi paket Debian. Biasanya termasuk kompiler dan pustaka GCC / g ++ dan beberapa utilitas lainnya.

Lihat dokumentasi di sini .

Ismael
sumber
2
Ok tapi itu masih belum menjawab pertanyaan saya sepenuhnya. Saya mengerti bahwa 'build-essential' berisi daftar informasi paket yang penting untuk membuat paket Debian. Tapi apa yang dianggap paket Debian? Rubi? kompiler gcc / g ++? Dan bagaimana paket Debian dan 'build-essential "berhubungan dengan Ruby? Apakah Ruby dibangun di atas paket Debian? Dengan kata lain, apakah Ruby memerlukan paket build-essential untuk dijalankan? Saya benar-benar ingin melihat representasi visual dari hubungan antara semua bagian ini
classer
3
Sederhananya, jika Anda (atau paket lain yang ingin Anda instal) membutuhkan kompiler C / C ++, Anda perlu menginstal build-essential. Biasanya ini adalah hal pertama yang saya instal di instalasi Ubuntu baru :-)
4
@ Adam Karena Ruby adalah bahasa yang ditafsirkan, juru bahasa memerlukan kompiler C atau C ++ untuk membangun dirinya agar dapat berjalan di mesin Anda. build-essentialadalah metapackage (paket yang menginstal banyak paket lain, seperti g ++ dan gcc: kompiler GNU C & C ++). Diperlukan jika Anda ingin mengkompilasi sesuatu dari sumber, dan jika Anda ingin bekerja dengan hampir semua bahasa pemrograman. HTH!
Tupai
7
Jawaban ini salah. Jawaban di bawah ini adalah yang benar. build-depadalah perintah apt-get dan build-essentialmerupakan sebuah paket.
David
2
Ini bukan jawaban yang benar. Tautan yang diberikan tidak memberikan wawasan atau penjelasan tentang apa yang ada dalam paket build-essential.
andDevW
55

Perintah itu sudo apt-get build-dep packagenameberarti "Sebagai root, instal semua dependensi untuk 'nama paket' sehingga saya dapat membangunnya". Jadi build-dep adalah perintah apt-get seperti menginstal, menghapus, memperbarui, dll.

build-essential adalah paket yang berisi referensi ke berbagai paket yang dibutuhkan untuk membangun perangkat lunak secara umum.

Kleist
sumber
1
Terima kasih telah menjelaskan perintah 'build-dep'. Jadi seperti yang saya pahami, dalam hal ini Ruby1.9 memiliki daftar ketergantungan yang melekat padanya yang oleh Linux dipandang sebagai 'To Do / Build List' dan satu per satu membangun masing-masing item tersebut. Infrastruktur akhir yang dibangun memungkinkan Ruby1.9 berfungsi dengan baik. Yang tidak saya mengerti adalah mengapa 'build-essential', atau semua paket lain di baris atas (zlib1g zlib1g-dev zlibc libruby1.9 dll. Dll.), Tidak akan dimasukkan dalam 'To Do / Build List 'terlampir pada Ruby1.9. Bukankah lebih sederhana jika hanya ada satu perintah?
classer
5

build-essentialmemiliki satu properti magis: tidak perlu dicantumkan sebagai dependensi build di bawah Build-Dependsbidang kontrol ( debian-packages) paket sumber seperti yang didokumentasikan di https://www.debian.org/doc/debian-policy/ch-source.html# s-pkg-relations

Anda bisa mendapatkan daftar paket build-essential di:

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

Anda juga dapat menentukan apakah suatu paket merupakan bagian dari build-essential:

apt-get show gcc

yang mengatakan:

Build-Essential: yes
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
4

"build-essential" berisi alat-alat (seperti kompiler gcc, make tool, dll) untuk mengkompilasi / membangun perangkat lunak dari sumber. Jadi Anda mulai dengan (biasanya C) file sumber dan membuat file executable dari mereka.

Jika Anda hanya mencoba untuk menginstal Ruby, saya akan sangat menyarankan hanya menggunakan RVM (Ruby Version Manager) :

Ikuti instruksi di bawah "Github Repository (disarankan)"

Perhatikan bahwa Anda perlu menginstal perangkat lunak kontrol versi Git terlebih dahulu. Gunakan apt-get install git-corejika Anda belum memilikinya.

Doug
sumber