Bisakah Anda membantu saya dengan masalah ketergantungan perangkat lunak saya?

12

Ini adalah Pertanyaan Canonical tentang Kompilasi Ketergantungan dan Manajemen Paket.

Saya punya pertanyaan tentang kompilasi port / perangkat lunak atau menginstal RPM di server * nix saya. Ketika saya mencoba melakukan ini, saya menerima banyak pesan tentang dependensi yang hilang.

Apakah komunitas Server Fault dapat membantu?

dunxd
sumber

Jawaban:

10

Selamat Datang di Kesalahan Server. Secara umum jenis pertanyaan ini bukan pada topik di sini. Diharapkan bahwa sebagian besar sysadmin akan menghadapi masalah ini sebelum mereka menjadi sysadmin melalui mengutak-atik workstation mereka sendiri. Namun, sysadmin yang berasal dari latar belakang Windows mungkin tidak menghadapi ini, jadi berikut adalah beberapa hal yang perlu dipertimbangkan:

Mengapa tidak menggunakan manajer paket untuk menginstal perangkat lunak di server Anda?

Manajer paket seperti yumatau aptmenangani dependensi ini untuk Anda. Selain itu mereka juga dapat digunakan untuk mengelola pembaruan perangkat lunak di server Anda. Sebagian besar rasa * nix akan memiliki manajer paket diinstal secara default, terutama pada VPS yang datang dengan OS pra-instal. Jika Anda benar-benar baru dalam hal ini, gunakan salah satunya pada sistem produksi Anda, dan simpan petualangan dalam menyusun atau memasang RPM tepi berdarah untuk lingkungan pengujian Anda.

Tetapi saya diharuskan untuk menggunakan paket yang lebih baru daripada yang tersedia di manajer paket saya!

Sebagian besar manajer paket dapat dikonfigurasi untuk menggunakan repositori yang berbeda - Anda mungkin menemukan bahwa ada satu yang menyediakan versi paket yang Anda butuhkan, dan masih memungkinkan Anda untuk mengambil keuntungan dari fungsi-fungsi manajer paket Anda.

Paket yang saya butuhkan tidak tersedia melalui semua repo atau manajer paket

Dalam hal ini Anda mungkin lakukan perlu mencari tahu dependensi (atau menyedot itu dan menggunakan lebih stabil / versi umum dari perangkat lunak). Anda mungkin harus melakukan yang berikut di lingkungan pengujian dan mencatat dengan cermat apa yang Anda lakukan:

  • Pastikan untuk membaca dokumentasi untuk perangkat lunak Anda menginstal - ini mungkin akan daftar apa yang Anda perlu menginstal pertama, tetapi tidak apa yang diperlukan untuk itu software.
  • Gunakan manajer paket Anda untuk menginstal hal-hal yang diperlukan - dalam kebanyakan kasus ini akan tersedia.
  • Setelah Anda menyelesaikan ini, coba instal.
  • Jika Anda masih melihat pesan tentang dependensi yang hilang, catat semuanya, dan coba lagi menginstal sebanyak mungkin menggunakan manajer paket Anda.
  • Jika ketergantungan tidak ditemukan, Anda harus menganggapnya sebagai subtugas dan memperlakukannya secara rekursif (temukan tarball sumber, temukan dependensi, instal).
  • Ini merupakan proses berulang.

Saya masih mengalami masalah!

Jika Anda telah mengikuti semua langkah di atas dan masih mengalami masalah, maka Anda mungkin akan menemukan beberapa masalah aneh yang mungkin bisa dibantu oleh Server Faulters lainnya. Buat pertanyaan baru, berikan perincian tentang perangkat lunak apa yang Anda coba instal, versi mana, dan pesan kesalahan yang Anda lihat.

Saran khusus untuk sistem manajemen paket utama

RPM (RHEL / Fedora dan klon) dan manajemen paket DEB (Debian / Ubuntu dan klon)

  • yum whatprovides nama file adalah cara terbaik untuk menemukan paket yang menyediakan file atau pustaka tertentu pada sistem tipe RHEL.
  • Jangan gunakan ./configure && make && make installsecara membabi buta jika memungkinkan! Manajemen paket diciptakan untuk alasan ini untuk mencegah kekacauan yang canggung dan tidak dapat dipelihara yang disebabkan oleh instalasi yang tidak dapat dilacak dari banyak file yang saling bertentangan.
  • Banyak perpustakaan dibagi menjadi dua bagian: biner (objek bersama, misalnya) dan pengembangan (header). Dengan demikian, Anda membutuhkan keduanya libfoodan libfoo-devel(atau -dev) paket.
  • Pertimbangkan untuk menggunakan fpm( https://github.com/jordansissel/fpm ) untuk mengubah tarball menjadi RPM dan DEB yang rapi
  • Jika Anda meluncurkan paket Anda sendiri, ANDA adalah orang yang bertanggung jawab atas pembaruan, pengujian, dan pemeliharaannya. Jika Anda tidak punya infrastruktur untuk itu, Anda pasti bertujuan terlalu tinggi.

Menemukan dependensi berdasarkan nama file untuk RPM

http://rpmfind.net adalah tempat yang bagus untuk mencari nama paket jika Anda tahu nama file yang dikeluhkan oleh prosedur instalasi. Paket pencocokan dan pencampuran dari distribusi yang berbeda tidak dianjurkan.

dunxd
sumber
Saya pikir akan bermanfaat untuk menyediakan bagian yang membahas masalah dependensi perpustakaan yang dapat sedikit lebih sulit untuk dipecahkan - tetapi saya kurang berpengalaman dalam hal ini - ada yang peduli untuk berkontribusi?
dunxd
Item yang saya akan sangat menyarankan akan mencakup detail tentang src RPM dan bagaimana mempertahankan repositori lokal khusus. Membangun file deb atau rpm harus menjadi bagian dari sabuk alat siapa pun yang harus bekerja dengan persyaratan paket offbeat.
Tim Brigham
Mungkin perlu memperluas ini untuk menyentuh pada topik tumpukan aplikasi dan perangkap mereka. Pertanyaan "paket terbaru" mengingatkan saya pada paket terbaru .
Andrew B
Ini wiki komunitas, jadi jangan ragu untuk menambahkan sesuatu, atau tentu saja berikan jawaban Anda sendiri :-)
dunxd