Apa perbedaan antara membangun dari sumber dan menggunakan paket instal?

46

Saya bertanya-tanya: ketika menginstal sesuatu, ada cara mudah mengklik ganda file instal yang dapat dieksekusi, dan di sisi lain, ada cara membangunnya dari sumber.

Yang terakhir, mengunduh bundel sumber, benar-benar rumit.

Tetapi apa perbedaan mendasar antara kedua metode ini?

kwagjj
sumber

Jawaban:

44

Semua perangkat lunak adalah program , yang juga disebut paket sumber . Jadi semua paket sumber perlu dibangun terlebih dahulu, agar dapat berjalan di sistem Anda.

Paket biner adalah paket yang sudah dibangun dari sumber oleh seseorang dengan fitur dan parameter umum yang disediakan dalam perangkat lunak sehingga sejumlah besar pengguna dapat menginstal dan menggunakannya.

Paket biner mudah dipasang .
Tetapi mungkin tidak memiliki semua opsi dari paket hulu.

Jadi untuk menginstal dari sumber, Anda perlu membuat kode sumber sendiri. Itu berarti Anda harus mengurus dependensi sendiri. Anda juga harus mengetahui semua fitur paket sehingga Anda dapat membangunnya sesuai kebutuhan.

Keuntungan memasang dari sumber:

  • Anda dapat menginstal versi terbaru dan selalu dapat tetap diperbarui, apakah itu patch keamanan atau fitur baru.
  • Memungkinkan Anda memangkas fitur-fitur saat memasang agar sesuai dengan kebutuhan Anda.
  • Demikian pula Anda dapat menambahkan beberapa fitur yang mungkin tidak disediakan dalam biner.
  • Instal di lokasi yang Anda inginkan.
  • Dalam hal beberapa perangkat lunak Anda dapat memberikan informasi spesifik perangkat keras Anda untuk instalasi yang sesuai.

Singkatnya, menginstal dari sumber memberi Anda opsi penyesuaian berat sekaligus membutuhkan banyak upaya, sementara instalasi dari biner lebih mudah tetapi Anda mungkin tidak dapat menyesuaikan sesuai keinginan.

Pembaruan : Menambahkan argumen yang terkait dengan keamanan di komentar di bawah. Ya memang benar bahwa ketika menginstal dari biner Anda tidak memiliki integritas kode sumber. Tapi kemudian itu tergantung dari mana Anda mendapatkan biner. Ada banyak sumber tepercaya dari mana Anda bisa mendapatkan biner dari setiap proyek baru, satu-satunya negatif adalah waktu . Butuh beberapa saat agar biner pembaruan atau bahkan proyek baru muncul di repositori tepercaya kami.

Dan di atas segalanya, tentang keamanan perangkat lunak, saya ingin menyorot halaman lucu ini di bell-labs yang disediakan oleh Joe dalam komentar di bawah ini.

pemula
sumber
4
source juga dapat dikompilasi dengan cara yang dioptimalkan untuk sistem Anda (yang .. mungkin bukan ide yang baik, karena hal-hal yang dikompilasi adalah "spesifik" untuk sistem dan mungkin tidak bekerja pada cadangan ... tetapi Anda memiliki sumber, Anda dapat mengkompilasi ulang (jika Anda punya waktu untuk itu))
Olivier Dulac
Ini tergantung pada apakah Anda memiliki "sistem cadangan" itu sama sekali. Jika Anda hanya melakukan riset, biasanya tidak.
h22
1
Untuk hyperparanoid, salah satu keuntungan menginstal dari sumber adalah keamanan dan kemampuan untuk meninjau kode jika Anda dapat dan atau ingin: ketika Anda menginstal dari sumber, Anda tahu bahwa Anda memiliki biner dari kode sumber itu dan tidak biner dengan modifikasi yang tidak diketahui (dengan asumsi Anda mempercayai sumbernya di tempat pertama).
LawrenceC
6
@ultrasawblade - Anda jelas tidak cukup paranoid! <G> - lihat cm.bell-labs.com/who/ken/trust.html untuk monty lengkap.
Joe
32

File sumber berisi kode asli yang ditulis oleh pengembang dalam bahasa apa pun yang ia pilih (C, C ++, Python dll), dan bersifat generik. Ini tidak spesifik untuk distro apa pun dan dalam banyak kasus untuk sistem operasi apa pun.

Paket (RPM atau DEB misalnya) adalah biner yang dapat dieksekusi (atau skrip yang diinterpretasikan dll) yang telah disiapkan untuk distro khusus Anda. Tugas mempersiapkan sumber untuk mengkompilasi (menambahkan tambalan yang diperlukan dll), kompilasi yang sebenarnya, membuat file konfigurasi khusus distro, membuat skrip instalasi pra dan pasca, dll, semuanya dilakukan untuk Anda oleh pengelola paket.

Dengan kata lain, semua pekerjaan keledai telah dilakukan untuk Anda dalam sebuah paket, sedangkan Anda harus melakukannya sendiri jika Anda memilih untuk menginstal dari sumber.

Lebih mudah menggunakan paket di hampir semua kasus seperti:

  • Mereka lebih mudah dipasang
  • Mereka secara khusus dirancang untuk bekerja dengan distro Anda
  • Terkadang ditambal oleh pengelola paket untuk memperbaiki bug khusus distro
  • Pengelola paket akan menghapus instalannya
  • Manajer paket akan mengelola semua dependensi untuk Anda
  • Manajer paket akan menangani pembaruan
  • Anda tidak perlu menginstal alat pengembang di sistem Anda (kompiler, buat dll)

Namun, terkadang versi paket adalah versi lama atau bahkan lebih buruk, tidak ada versi paket; dalam hal ini satu-satunya pilihan Anda adalah mengkompilasi sendiri. Jika ya, Anda perlu mempertimbangkan yang berikut:

  • Anda harus menginstal semua alat pengembang di sistem Anda
  • Anda akan bertanggung jawab untuk memeriksa pembaruan dan kompilasi ulang
  • Anda harus memastikan semua dependensi diinstal, termasuk devpaket - mungkin ada banyak dependensi .
  • Anda mungkin perlu men-debug masalah jika tidak berfungsi seperti yang diharapkan pada distro Anda

Jika Anda bersedia melakukan upaya ekstra, maka kompilasi dari sumber dapat memberi Anda manfaat dari:

  • Akses ke versi terbaru yang tersedia
  • Pilihan untuk mengoptimalkan proses kompilasi untuk kinerja / stabilitas
  • Kenikmatan!

Perhatikan bahwa walaupun beberapa paket pre-built distro menyediakan file biner yang siap diinstal dan dijalankan (RPM dan DEB adalah contoh), distro lain menyediakan paket yang hanya mengotomatiskan proses kompilasi.

Gentoo's ebuildsadalah contohnya - paket ini pada dasarnya adalah instruksi untuk manajer paket yang menjelaskan cara mengkompilasi dan menginstal yang dapat dieksekusi. Ini memiliki banyak keuntungan dari manajer paket tradisional (pembaruan otomatis, mencopot pemasangan dll) sambil tetap memungkinkan pengguna untuk mengoptimalkan proses kompilasi sesuai selera mereka.

Arch Linux memiliki sistem pengemasan di mana paket-paket utama bersifat biner sementara banyak paket tambahan dikompilasi pada sistem menggunakan PKGBUILDfile.

garethTheRed
sumber
19

Terlepas dari jawaban lain, saya ingin menambahkan sesuatu:

Jika Anda memutuskan untuk menyusun program sendiri, Anda perlu berpikir bahwa kompilasi bukan sesuatu yang Anda lakukan hanya sekali. Anda mungkin perlu berlangganan milis pengembangan aplikasi yang Anda putuskan untuk dikompilasi dan tetap mendapatkan versi terbaru dan, terutama, pembaruan keamanan.

Setiap kali aplikasi diperbarui, Anda harus mengkompilasi ulang versi baru, jadi ingatlah bahwa Anda harus meluangkan waktu Anda setiap minggu.

Jika Anda tidak mampu membayarnya, lebih baik membiarkan pengelola paket melakukan pekerjaan itu untuk Anda.

Daniel
sumber
6

Bangunan dari sumber memungkinkan untuk menentukan arsitektur dari mesin Anda. CPU baru memiliki instruksi tambahan yang dimengerti kompiler, memeras sedikit kinerja. Paket pra-bangun biasanya mengandalkan CPU paling kuno yang masih umum digunakan.

Ini sebagian besar penting untuk aplikasi proyek-kritis yang menggunakan CPU sangat banyak, seperti alat pipa bioinformatika, misalnya, atau alat pemodelan geofisika. Perangkat lunak semacam itu berjalan dalam lingkungan yang sangat terkontrol, tidak memiliki fitur kontrol akses sendiri, sehingga jarang ada bug keamanan yang begitu mendesak sehingga harus ditambal dalam hitungan hari atau jam. Hampir tidak pernah perlu dijalankan pada mesin yang berbeda dengan arsitektur yang awalnya tidak dikenal.

Ya, saya tahu, komputer sangat sangat sangat cepat sekarang dan segala upaya atau tindakan yang Anda lakukan sangat sangat sangat mahal, tetapi pada hari ketiga duduk dan menunggu program Anda selesai (ini adalah situasi yang saya bicarakan) kebenaran seperti itu mulai tampak dipertanyakan.

Secara berbeda, aplikasi seperti browser dan sejenisnya harus lebih baik digunakan dari repositori maintainer (dan bukan dari beberapa paket pre-built yang diunduh), karena sangat penting untuk selalu memperbaruinya.

h22
sumber
Di mana tweak seperti itu untuk mengeksploitasi CPU Anda sepenuhnya membuat perbedaan (ini hanya relevan dalam beberapa kode yang sangat khusus; yang mengatakan bahwa 95% dari waktu dihabiskan untuk 5% dari kode, sehingga mengoptimalkan yang lain 95% membuat perbedaan yang nyata, dan sebagian besar program saat ini adalah 99% dari waktu menunggu pengguna memutuskan), program menawarkan kode yang berbeda untuk diaktifkan tergantung pada CPU saat startup.
vonbrand
0

Salah satu cara untuk mendapatkan yang terbaik dari kedua dunia (perangkat lunak terbaru, instal / uninstall sederhana, memasukkan sebagian besar tweak distribusi dan adaptasi, dapat mengoptimalkan untuk persyaratan lokal), sedangkan biaya (harus tetap up to date sendiri, hati-hati terhadap bug dan tambalan menit terakhir, ikuti pengembangan, Anda sendiri sehubungan dengan perbaikan bug dan ketidaksesuaian antar versi) tidak dapat dimitigasi (banyak), adalah dengan membangun paket Anda sendiri, dimulai dengan paket sumber dari distribusi Anda. Ya, ini lebih dari sekadar membangun dan memasang.

vonbrand
sumber
1
Sepertinya jawaban yang menarik ("terbaik dari kedua dunia"), tapi saya tidak bisa mengerti apa yang Anda maksud di sini: "adalah membangun paket Anda sendiri, dimulai dengan paket sumber dari distribusi Anda". Maukah Anda menulis ulang / menjelaskan?
Jan Żankowski