Nix - Manajer Paket yang Murni Fungsional untuk Linux


Nix adalah sistem manajemen paket yang kuat dan berfungsi murni yang dirancang untuk manajemen paket yang andal dan dapat direproduksi, dirilis berdasarkan ketentuan GNU LGPLv2.1. Ini adalah sistem manajemen paket utama di NixOS, distribusi Linux yang kurang dikenal.

Nix menawarkan pemutakhiran dan pengembalian atom, beberapa versi instalasi paket, manajemen paket multi-pengguna, dan pengaturan lingkungan build yang mudah untuk sebuah paket, apa pun bahasa pemrograman dan alat yang digunakan pengembang.

Di bawah Nix, paket dibuat dari bahasa paket fungsional yang disebut “Ekspresi Nix ”. Pendekatan fungsional terhadap manajemen paket ini menjamin bahwa instalasi atau peningkatan satu paket tidak dapat merusak paket lainnya.

Nix juga memiliki dukungan multi-pengguna, yang menyiratkan bahwa pengguna sistem normal (atau yang tidak memiliki hak istimewa) dapat menginstal paket dengan aman dan setiap pengguna diidentifikasi oleh profil (kumpulan paket di penyimpanan Nix yang muncul di PATH pengguna).

Jika satu pengguna telah menginstal sebuah paket, jika pengguna lain mencoba menginstal paket yang sama, paket tersebut tidak akan dibuat atau diunduh untuk kedua kalinya.

Saat ini mendukung Linux (i686, x86_64) dan Mac OS X (x86_64). Namun, ini cukup portabel, Anda dapat mencobanya di sebagian besar platform yang mendukung thread POSIX dan memiliki kompiler C++11.

Pada artikel ini, kami akan menunjukkan cara menginstal (dalam mode multi-pengguna) dan menggunakan manajer paket Nix di Linux. Kami akan membahas beberapa tugas dasar manajemen paket sehubungan dengan alat yang umum digunakan.

Cara Menginstal Manajer Paket Nix di Linux

Kami akan menginstal versi terbaru Nix (v2.1.3 pada saat penulisan ini) dalam mode multi-pengguna. Untungnya, ada skrip instalasi siap pakai yang dapat Anda jalankan dari shell Anda sebagai pengguna biasa menggunakan perintah curl berikut di sistem Anda.

sh <(curl https://nixos.org/nix/install) --daemon

Menjalankan perintah di atas akan mengunduh tarball biner nix terbaru, dan Anda akan diarahkan ke layar instalasi nix multi-pengguna seperti yang ditunjukkan pada tangkapan layar.

Untuk melihat daftar detail tentang apa yang akan terjadi selama proses instalasi, ketik y dan tekan Enter. Jika Anda puas dan siap melanjutkan, ketik y dan tekan Enter.

Script akan memanggil perintah sudo berkali-kali sesuai kebutuhan. Anda harus mengizinkannya menggunakan sudo dengan menjawab y dan menekan Enter.

Pemasang kemudian akan menjalankan beberapa pengujian dan menghasilkan laporan konfigurasi Nix, membuat pengguna build antara ID pengguna 30001 dan 30032, dan grup dengan ID grup 30000. Masukkan y untuk melanjutkan ketika diminta. Ini akan menyiapkan grup build untuk pengguna build yang berbeda, membuat struktur direktori dasar Nix.

Ini akan memodifikasi file /etc/bashrc, (dan /etc/zshrc untuk zsh) jika ada. Perhatikan bahwa ia terlebih dahulu mencadangkan file yang disebutkan dengan ekstensi .backup-before-nix dan penginstal juga membuat file /etc/profile.d/nix.sh.

Penginstal juga akan menyiapkan layanan nix-daemon dan layanan soket nix-daemon, memuat unit systemd untuk nix-daemon dan memulai dua layanan yang disebutkan di atas.

Setelah instalasi selesai, Anda perlu membuka jendela terminal baru untuk mulai menggunakan Nix. Alternatifnya, tutup dan buka kembali shell Anda untuk menerapkan perubahan terkini. Kemudian sumberkan file /etc/profile.d/nix.sh (karena ini bukan file startup shell, membuka shell baru tidak akan mengambil sumbernya).

source /etc/profile.d/nix.sh

Selanjutnya, jalankan perintah berikut untuk mengunduh beberapa jalur dari situs resmi proyek, yang diperlukan agar Nix dapat beroperasi. Setelah semua jalur diunduh dan disalin ke lokasi yang benar, Anda akan melihat ringkasan jenis instalasi sistem dan nix seperti yang ditunjukkan pada tangkapan layar.

nix-shell -p nix-info --run "nix-info -m"

Cara Menggunakan Manajer Paket Nix di Linux

Di bawah Nix, pengelolaan paket dilakukan oleh utilitas nix-env. Ini digunakan untuk menginstal, mengupgrade, dan menghapus/menghapus paket, dan untuk menanyakan paket apa yang diinstal atau tersedia untuk instalasi.

Semua paket terletak di saluran Nix, yang merupakan URL yang menunjuk ke repositori yang terdiri dari kumpulan ekspresi Nix dan penunjuk ke cache biner.

Saluran defaultnya adalah Nixpkgs dan daftar saluran langganan disimpan di ~/.nix-channels, Anda dapat mencantumkannya menggunakan perintah berikut (tidak ada keluaran berarti tidak ada saluran) .

nix-channel --list

Untuk menambahkan saluran Nix, gunakan perintah berikut.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Sebelum Anda menginstal paket apa pun, mulailah dengan memperbarui saluran Nix; ini mirip dengan menjalankan apt update pada manajer paket APT.

nix-channel --update

Anda dapat menanyakan paket apa yang tersedia untuk instalasi menggunakan perintah berikut.

nix-env -qa

Dalam contoh ini, kita akan menginstal server Apache Tomcat menggunakan perintah sebelumnya bersama dengan grep untuk menemukan paket tersedia untuk diinstal seperti yang ditunjukkan.

nix-env -qa | grep "apache-tomcat"

Untuk menginstal sebuah paket, gunakan perintah berikut dengan menentukan versi paket, misalnya Apache-Tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Pada sistem lokal, Nix menyimpan paket di Nix store, yang secara default adalah direktori /nix/store, di mana setiap paket memiliki subdirektori uniknya sendiri. Misalnya, paket Apache-Tomcat disimpan di:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

Di jalur ini, karakter acak 95gmgnxlrcpkhlm00fa5ax8kvd6189py adalah pengidentifikasi unik untuk paket yang memperhitungkan semua ketergantungannya.

Anda dapat membuat daftar paket yang diinstal dengan perintah berikut.

nix-env -q

Untuk memutakhirkan paket apache-Tomcat, Anda dapat menggunakan sakelar pemutakhiran -u seperti yang ditunjukkan.

nix-env -u apache-tomcat

Jika Anda ingin menghapus/menghapus apache-Tomcat, gunakan tanda -e. Di sini, sebuah paket tidak langsung dihapus dari sistem, hanya saja tidak digunakan. Ini berguna karena Anda ingin melakukan rollback, atau mungkin di profil pengguna lain.

nix-env -e apache-tomcat

Setelah menghapus sebuah paket, Anda dapat melakukan pengumpulan sampah dengan utilitas nix-collect-garbage.

nix-collect-garbage

Cara Menghapus Manajer Paket Nix di Linux

Untuk menghapus instalasi Nix, hapus semua file terkait nix sekaligus.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Pada sistem dengan systemd, jalankan perintah berikut untuk menghentikan semua layanan terkait nix dan menonaktifkannya.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Selain itu, Anda perlu menghapus referensi apa pun ke Nix dalam file berikut: /etc/profile, /etc/bashrc, dan /etc/zshrc .

Untuk informasi lebih lanjut, lihat halaman manual dari utilitas di atas yang telah kami lihat.

man nix-channel
man nix-env

Anda dapat menemukan dokumentasi Nix Package Manager di situs web proyek: https://nixos.org/nix/.

Ringkasan

Nix adalah pengelola paket yang sepenuhnya berfungsi dan dirancang untuk pengelolaan paket yang andal dan dapat direproduksi. Ini memberikan konsep manajemen paket yang menarik, sangat berbeda dengan alat yang umum digunakan di Linux seperti YUM, APT, dan banyak lainnya.

Pada artikel ini, kami menunjukkan cara menginstal nix dalam mode multi-pengguna dan membahas cara melakukan manajemen paket dengan Nix. Bagikan pemikiran Anda dengan kami atau ajukan pertanyaan apa pun melalui formulir komentar di bawah. Terakhir, di artikel mendatang, kami akan menjelaskan lebih banyak perintah manajemen paket Nix. Sampai saat itu tiba, tetaplah terhubung.