Debian dan Fedora mencoba mengatasi masalah dependensi

Distribusi Linux menghadapi masalah ketergantungan yang meningkat proyek, meskipun jumlah dependensi untuk kode Python, Perl dan Ruby disimpan Dalam batas yang wajar, proyek JavaScript berlatih membagi menjadi perpustakaan yang sangat kecil, sering kali melakukan fungsi sederhana.

Repositori NPM sudah memiliki lebih dari satu juta paket dan aplikasi tipikal link ke ratusan dependensi, yang pada gilirannya memiliki ketergantungannya sendiri, sehingga sulit untuk memelihara dan mendistribusikan paket tradisional dengan aplikasi JavaScript di distribusi Linux.

Karena terjalin eratnya dependensi library JavaScript, memperbarui paket apa pun dengan library tersebut dalam sebuah distribusi itu dapat merusak paket lain.

Binding versi memperburuk masalah: satu library mungkin memerlukan satu versi dependensi agar berjalan stabil, dan library lainnya mungkin memerlukan versi lain.

Banyak proyek membutuhkan versi terbaru dari perpustakaan untuk bekerja, yang tidak selalu memenuhi persyaratan stabilitas distribusi (pengembangan berkelanjutan dipraktikkan di ekosistem Node.js menggunakan kerangka kerja versi terbaru, dan distribusinya memerlukan dukungan selama beberapa tahun).

Mencoba memperbaiki versi paket di distribusi saja menyebabkan peningkatan versi lama di repositori yang belum diperbarui selama bertahun-tahun. Gangguan pemeliharaan untuk satu paket berdampak buruk pada banyak paket lainnya dan bahkan menciptakan lebih banyak masalah.

Selanjutnya llintas ketergantungan mengarah pada fakta bahwa banyak perpustakaan Node.js menjadi tidak mungkin untuk dihapus dari sistem, yang, pada gilirannya, mencegah Anda menghapus program Node.js lainnya.

Untuk mengatasi situasi ini, proyek Fedora baru-baru ini menyetujui rencana untuk menghentikan pembentukan default paket terpisah dengan pustaka yang digunakan dalam proyek berbasis Node.js.

Dia memutuskan, dimulai dengan Fedora 34, untuk hanya menyediakan paket dasar untuk Node.js dengan interpreter, header, perpustakaan utama, binari, dan alat manajemen paket dasar (NPM, benang).

Di aplikasi repositori Fedora yang menggunakan Node.js, itu diizinkan untuk menyematkan semua dependensi yang ada dalam sebuah paket, tanpa membagi dan memisahkan pustaka yang digunakan dalam paket terpisah.

Memasukkan pustaka akan menghilangkan kekacauan paket kecil, menyederhanakan pemeliharaan paket (sebelumnya pengelola menghabiskan lebih banyak waktu untuk meninjau dan menguji ratusan paket dengan pustaka daripada di paket utama dengan program), menghemat infrastruktur dari konflik dari pustaka dan menyelesaikan masalah dengan menautkan ke versi pustaka (pengelola akan menyertakan versi yang diuji dan versi yang diuji produksi dalam paket).

Sisi negatif dari integrasi adalah kerumitan dari proses perbaikan kerentanan di pustaka, yang akan memerlukan kerja terkoordinasi dari pengelola semua paket yang menyertakan pustaka yang rentan. Ada bahaya bahwa sebuah paket akan lupa memperbarui pustaka built-in yang rentan dan paket tersebut tidak akan diketahui.

Pengembang dari Debian juga membahas peralihan ke model integrasi ketergantungan paket yang serupa. Selain Node.js, pembahasan menyentuh tentang pembuatan paket untuk platform Kubernetes dan proyek dalam bahasa PHP dan Go, yang cenderung terbagi menjadi beberapa dependensi kecil. Belum ada keputusan yang diambil, namun diharapkan seiring berjalannya waktu masalahnya hanya akan semakin parah dan cepat atau lambat proyek akan terpaksa melakukan sesuatu.

Antarmuka web gsa (Greenbone Security Assistant) untuk pemindai keamanan gvm (Greenbone Vulnerability Management) dikutip sebagai contoh masalah yang dimiliki pengelola paket.

Versi gsa yang dikirim Debian ternyata tidak kompatibel dengan versi gvm yang lebih baru, tetapi tidak mungkin memperbarui gsa ke versi saat ini karena berisi perubahan yang signifikan dan menggunakan npm untuk mengunduh pustaka Node.js yang diperlukan.

Pustaka yang diminta terlalu banyak dan memerlukan pembuatan paket baru di Debian agar seseorang dapat memeliharanya, karena aturan Debian melarang memuat komponen eksternal selama proses pembuatan.

sumber: https://lwn.net/


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   qtkk dijo

    Fragmentasi framework dan library di ECMAscript ini sudah tidak terkendali.
    artikel yang baik.