Memahami format yang dapat dieksekusi Linux dan paket distribusi perangkat lunak

8

Saya mengalami kesulitan memahami format yang dapat dieksekusi Linux dan paket distribusi perangkat lunak. Ada begitu banyak distribusi Linux itu sendiri, dan sepertinya setiap paket perangkat lunak telah dikompilasi secara terpisah untuk setiap distro. Kenapa ini? Saya mengerti bahwa beberapa "paket" dibuat untuk diinstal pada distro yang berbeda, tetapi apakah format yang dapat dieksekusi untuk perangkat lunak berbeda?

Juga, mengapa banyak pengguna Linux lebih suka versi aplikasi prompt versi vs GUI? Saya dapat memahami perlunya jejak kaki kecil, tetapi bahkan aplikasi GUI dapat memiliki jejak kaki kecil jika diberi kode dengan benar.

Tagihan
sumber

Jawaban:

13

Manajer Paket & Ketergantungan

Sebagian besar distribusi Linux menggunakan manajer paket untuk instalasi dan penghapusan perangkat lunak. Manajer paket memberikan beberapa manfaat seperti kemungkinan menggunakan repositori pusat dari mana (hampir) perangkat lunak apa pun dapat diunduh, pengaturan potongan perangkat lunak ke dalam bundel yang dapat diinstal sebagai satu kelompok yang kohesif, dan manfaat utama: otomatis penanganan ketergantungan dan pelacakan perubahan apa yang dilakukan paket sehingga mereka dapat dihapus instalasinya.

Perangkat lunak tertentu mungkin memerlukan pustaka atau program lain untuk melakukan tugas yang akan berlebihan jika diterapkan kembali di bagian perangkat lunak itu. Paket memungkinkan untuk ekspresi dependensi ini.

Perbedaan: format dan strategi paket

Ada beberapa manajer paket yang berbeda. Masing-masing diciptakan karena yang sudah ada tidak memenuhi kebutuhan sebagian orang. Setiap manajer paket membutuhkan paket dalam formatnya sendiri.

Selain itu, distribusi yang berbeda memiliki persyaratan perangkat lunak yang berbeda pula. Ada sejumlah perangkat lunak yang dapat memiliki kemampuan berbeda tergantung pada opsi yang diberikan ketika dikompilasi dari kode sumber ke dalam mesin yang dapat dieksekusi. Beberapa distribusi ingin menyediakan set fitur lengkap dan pengalaman yang kaya sementara yang lain ingin memberikan pengalaman sesederhana dan sesederhana mungkin, dan ada segalanya di antaranya. Juga, distribusi dapat memutuskan untuk memformat struktur direktori secara berbeda atau menggunakan sistem init yang berbeda. Mereka mungkin memutuskan untuk menggabungkan perangkat lunak secara berbeda: mungkin ada paket yang disebut "dev-utils" dalam dua distribusi yang berbeda, tetapi satu versi yang mencakupyaccsementara yang lain tidak. Karena kebutuhan yang berbeda ini, distribusi memilih untuk mengkompilasi perangkat lunak dengan cara yang berbeda.

Inilah sebabnya mengapa bahkan jika Anda memiliki paket dalam format yang benar untuk manajer paket Anda, itu mungkin tidak berfungsi jika paket itu ditujukan untuk distribusi yang berbeda. Sebagai contoh, paket itu mungkin bergantung pada yaccyang diinstal, dan itu menyatakan ketergantungan itu melalui memerlukan paket "dev-utils", tetapi "dev-utils" Anda tidak termasuk yacc. Sekarang ada paket yang diinstal dengan ketergantungan yang tidak terpenuhi.

Itu tidak benar-benar masalah.

Bagian besar dari menjadi distribusi Linux adalah mempertahankan repositori perangkat lunak pusat. Distribusi mengurus menjaga semua ini untuk Anda. Ini sebenarnya membuatnya sangat mudah untuk menginstal perangkat lunak. Anda biasanya menggunakan manajer paket untuk mencari dan memilih beberapa paket, kemudian memintanya untuk menginstalnya; itu mengurus sisanya untukmu. Proses instalasi perangkat lunak Windows mencakup pencarian perangkat lunak di situs web pihak ketiga, mencoba menemukan tautan unduhan yang sesuai, mengunduh, memeriksa virus, dan menjalankan program pemasangan yang kemudian menanyakan banyak pertanyaan yang tidak relevan. Seluruh kekacauan itu bukan standar di Linux.

Repositori tidak dapat menyertakan semuanya

Sekarang, mungkin ada kasus di mana sepotong perangkat lunak yang Anda butuhkan tidak ada dalam repositori distribusi Anda. Paket-paket yang disediakan oleh repositori perangkat lunak adalah salah satu fitur yang membedakan distribusi. Ketika Anda tidak dapat menemukan perangkat lunak yang Anda butuhkan di repositori distribusi Anda, ada tiga jalan yang mungkin (sungguh, dua ditambah cara untuk benar-benar mengacaukan segalanya).

Repositori Komunitas

Banyak distribusi memiliki repositori tidak resmi yang dikelola oleh orang-orang yang tidak terkait dengan distribusi. Ubuntu menyebutnya PPA, Fedora menyebutnya Repositori Orang Fedora. Arch Linux tidak memiliki nama spesifik untuk repositori pihak ketiga , tetapi memang memiliki AUR, yang merupakan kumpulan "resep" untuk paket (catatan: hanya ada satu AUR). Anda mungkin pertama kali mencoba menginstal paket dari salah satu sumber ini karena mudah untuk tidak menginstalnya jika tidak berfungsi.

Kompilasi dari Sumber

Jika Anda tidak dapat menemukan repositori tidak resmi dengan yang Anda butuhkan, kompilasi dari sumber tidaklah sulit. Anda perlu menginstal paket pengembangan distribusi Anda; ini termasuk hal-hal dasar seperti kompiler, tautan, pengurai, dan alat-alat lain yang biasanya diperlukan untuk menyusun perangkat lunak. Kemudian Anda menemukan kode sumber proyek (yang hampir selalu dikemas dalam .tgzatau .tbz(disebut "tarball"). Unduh ke direktori sendiri di suatu tempat, ekstrak (gunakan tar -xf filename.tgz, dan biasanya masuk ke satu direktori yang dibuat. Dalam direktori itu mungkin sebuah file bernama READMEatau INSTALL. Jika ada, silakan dan membacanya; kebanyakan dari mereka memberitahu Anda untuk melakukan hal yang sama. Beberapa langkah selanjutnya dilakukan pada baris perintah. Jalankan ls, dan cari file yang dapat dieksekusi yang disebutconfigure. Jika ada, jalankan dengan melakukan ./configure; terkadang butuh beberapa menit. Itu biasanya menjalankan beberapa tes untuk mengetahui bagaimana distribusi Anda memiliki pengaturan hal-hal, dan itu memastikan Anda memiliki alat yang diperlukan untuk mengkompilasi perangkat lunak ini. Langkah selanjutnya adalah menjalankan make. Ini sebenarnya mengkompilasi perangkat lunak, dan mungkin akan memakan waktu - di mana saja dari beberapa menit hingga berjam-jam tergantung pada ukuran perangkat lunak yang Anda kompilasi. Setelah selesai, Anda lari make install. Ini menginstal perangkat lunak, yang melibatkan menyalin produk dari kompilasi ke tempat-tempat yang sesuai di sistem file Anda. Setelah itu, perangkat lunak tersedia untuk digunakan.

Ini adalah bagian yang panjang, tetapi diringkas sebagai "README, ./configure, make, make install" . Itulah rutinitas yang harus diingat.

Instal paket dari distribusi lain (jangan lakukan ini)

Saya daftar ini hanya karena itu adalah dan alternatif, tetapi akan hampir pasti tidak berakhir dengan baik. Dimungkinkan untuk menginstal paket untuk distribusi lain, dan Anda mungkin mendapati diri Anda ingin melakukannya. Yah, jangan. Jangan lakukan itu sampai Anda memahami sistem Anda dengan sangat baik. Bahkan, saya tidak akan menempatkan perintah apa pun di sini yang menunjukkan bagaimana melakukannya meskipun itu mungkin. Jika Anda sampai pada titik di mana sepertinya ini adalah satu-satunya pilihan, jangan instal paket menggunakan manajer paket; alih-alih, tarik keluar dari paket dan letakkan di sistem Anda secara manual, bersama dengan catatan tentang apa yang telah Anda lakukan sehingga Anda dapat membatalkannya jika perlu.

Baris perintah sedikit

Beberapa orang lebih suka baris perintah untuk keuntungan yang diberikannya kepada mereka. Ini dapat diringkas menjadi tiga hal:

  • Kemudahan otomatisasi
  • Kecepatan (dibandingkan dengan mengklik di semua tempat dalam gui)
  • Ekspresi

Yang terbesar adalah ekspresif; ada hal-hal yang dapat dilakukan pada baris perintah yang tidak mungkin dalam antarmuka grafis.

Akhirnya, instruksi baris perintah sering diberikan di forum yang bermanfaat seperti ini karena lebih mudah untuk menyampaikan informasi yang benar daripada memberikan instruksi tipe "klik di sini-kemudian-kemudian-kemudian-di sana".

Shawn J. Goff
sumber
6

Maaf atas jawaban panjangnya. Jika Anda ingin yang cepat dan kotor, baca saja ringkasannya.

Ringkasan

  • Format yang dapat dieksekusi adalah sama.
  • Ada beberapa manajer paket yang tidak kompatibel, bahkan jika program yang dikemas. (Anda bisa melihat paket sebagai file penginstal seperti .msifile).
  • Pada dasarnya distribusi / versi yang berbeda memiliki versi pustaka inti yang berbeda, dan untuk alasan konsistensi dan stabilitas aplikasi perlu dibangun terhadap versi tersebut. (Versi Linux dll neraka).
  • Distribusi yang berbeda melakukan berbagai hal dengan cara yang sedikit berbeda, dan dalam beberapa kasus dapat menjadi masalah kompatibilitas.
  • Baris perintah bisa lebih cepat, dan baris perintah unix jauh lebih baik daripada baris perintah Windows.

Manajer paket

Pertama-tama, manajer paket. Tujuan utama dari manajer paket adalah untuk memelihara database paket yang diinstal dan file-file yang merupakan paket itu.

Manajer paket memungkinkan instalasi paket yang mudah, dan umumnya juga untuk memudahkan penghapusan. Mereka juga memungkinkan paket untuk menentukan berbagai skrip yang mungkin perlu dijalankan pada saat instalasi / penghapusan untuk menjaga konsistensi sistem (seperti mendaftarkan paket ke beberapa basis data terkait subsistem).

Manajer paket berbeda

Ada berbagai manajer paket yang berbeda dengan kekuatan dan kelemahan yang berbeda. Contohnya adalah rpm dan manajer paket debian (file deb), tetapi ada yang lain. Manajer paket ini jelas membutuhkan format yang berbeda dan karenanya tidak kompatibel.

Distribusi atau versi yang berbeda

Karena sebagian besar distribusi Linux adalah open source, ada lebih banyak penggunaan kembali kode daripada pada sistem Windows. Aplikasi mungkin menggunakan sejumlah perpustakaan untuk berbagai bagian fungsinya. Perpustakaan-perpustakaan itu sendiri sering juga melakukannya, kadang-kadang perpustakaan yang sama.

Sayangnya, pustaka ada dalam versi yang berbeda dan beberapa di antaranya tidak kompatibel (terutama kompatibilitas biner untuk file yang dapat dieksekusi). Beberapa versi dapat hidup berdampingan dengan baik pada sistem Unix (kurang dll dll dari perspektif itu), tetapi dalam kebanyakan kasus menggunakan dua versi perpustakaan yang berbeda dalam satu program yang sedang berjalan meminta crash.

Distribusi Biner karena itu sering memutakhirkan versinya sendiri untuk melanjutkan ke versi baru dari berbagai paket inti (dalam kasus lain Anda memerlukan pembaruan besar).

File lain yang berbeda

Distribusi juga berbeda dalam hal di mana file tertentu berada, dan bagaimana konfigurasi dikelola. Tergantung pada paket yang bisa berdampak pada paket itu.

Garis komando

Unix terutama adalah sistem operasi workstation dan server. Ini berarti dirancang dengan mempertimbangkan administrator sistem profesional. Otomatisasi adalah bagian penting dari kotak peralatan administrasi sistem dan skrip shell adalah cara untuk melakukannya. Cobalah untuk menambahkan 0 hingga 1000 nama file dalam file manager grafis.

Karena administrator sering mengatur banyak mesin, mereka perlu melakukan hal yang sama pada sejumlah sistem. Menggunakan alat seperti ssh sangat mudah untuk melakukan tugas pada sejumlah sistem dalam sekali jalan, dan hanya menunggu untuk membiarkan komputer melakukan pekerjaan.

Spesifikasi, otomatisasi, dan pengulangan yang tepat menjadikan baris perintah jauh lebih baik daripada perangkat grafis untuk tugas-tugas administrasi. Unix juga memiliki sejumlah cangkang berbeda yang tersedia dan kompetisi ini telah membuat cangkang yang sangat kuat yang hampir tidak dapat dibandingkan dengan command prompt windows.

Microsoft telah benar-benar memahami hal ini dengan baik, dan menawarkan PowerShell sebagai pengganti baris perintah, serta versi terbaru dari windows server terutama diberikan baris perintah.

Paul de Vrieze
sumber
3

Semua format yang dapat dieksekusi semua sama di seluruh distribusi, tetapi yang dapat dieksekusi mungkin memerlukan perangkat lunak dasar tambahan agar berfungsi dengan baik. Jika Anda melihat distribusi berbasis Redhat, produk instalasi adalah rpm, yang akan mencakup semua persyaratan untuk perangkat lunak tertentu, dan tidak akan menginstal perangkat lunak tersebut secara default kecuali persyaratannya dipenuhi. ( yummerupakan alternatif untukrpmdan digunakan oleh beberapa versi berbasis Redhat). Menurut definisi, GUI harus memiliki jejak yang jauh lebih besar daripada antarmuka command prompt. Filosofi yang mendasari UNIX adalah untuk menyederhanakan segala sesuatu sehingga tugas yang diberikan akan bekerja seefisien mungkin. Itulah sebabnya ada begitu banyak utilitas yang akan melakukan satu tugas dengan output tugas yang dapat berantai ke input tugas lain untuk melakukan sesuatu yang lain.

apolinsky
sumber
Agar benar, yum bukan alternatif, ia bekerja di atas rpm menyediakan antarmuka yang lebih bagus dan fitur-fitur seperti repositori.
rvs
1

Distro yang berbeda memiliki prasyarat instalasi yang berbeda. Namun, ada RPM atau DEB (atau paket lain untuk sistem manajemen paket lain), yang berfungsi untuk lebih dari satu distro. Filosofi Linux membuat kode sumber tersedia. Saat mengkompilasi perangkat lunak Anda sendiri, rutinitasnya hampir sama pada semua distro, dan selalu sama dengan .tar.gzarsip yang Anda gunakan.

RPM yang dikompilasi lebih seperti bagian dari sistem; aplikasi itu sendiri, sebagai entitas yang berdiri sendiri, dimaksudkan untuk didistribusikan dan dikompilasi pada setiap target.

Pertanyaan kedua Anda adalah sesuatu yang sangat berbeda ... Ya, "banyak pengguna Linux" lebih suka aplikasi CLI karena berbagai alasan, jejak memori kecil hanya satu alasan. Saat menggunakan SSH, aplikasi CLI lebih masuk akal, terutama saat bekerja di luar server. Lebih sering daripada tidak, server-server itu tidak memiliki lingkungan grafis yang diinstal. Saat menjalankan program yang tidak di-daemonisasi, mereka sangat mudah dibatalkan. Ctrl- c, dan programnya hilang. Juga, banyak program masuk ke konsol, jadi lebih mudah untuk debug. Saat pemrograman, Anda melakukan sebagian besar kompilasi di konsol. Itu lebih masuk akal untuk kompilasi debugging cepat. Entah itu, atau membaca file log, kadang-kadang, membaca konsol lebih cepat.

polemon
sumber
0

Lengkungan. Atau FreeBSD, yang dikembangkan secara keseluruhan. (RHEL, SLES dan sejenisnya adalah $ didukung secara keseluruhan.)

Penggunaan laptop: Mint

Retas yang dapat digunakan: Lengkungan.

Hackability sadis: Genoo.

Hackability yang menyenangkan: LFS.

Dukungan (server): RHEL, Ubuntu LTS, FreeBSD (berbeda dari Linux).

dhchdhd
sumber
Anda mungkin ingin mengedit jawaban Anda untuk membuat apa yang ingin Anda katakan, lebih jelas, dan untuk memperbaiki beberapa kesalahan ketik / tata bahasa.
haziz