Tutorial ini menjelaskan bagaimana melakukan operasi manajemen paket seperti menginstal, menghapus, memperbarui, dan meningkatkan paket menggunakan manajer paket Nix. Jika Anda belum menginstal manajer paket Nix, lihat panduan kami sebelumnya "Nix – Manajer Paket yang Kuat untuk Linux dan Unix" . Seperti yang mungkin sudah Anda ketahui, Anda tidak perlu menjadi pengguna root atau sudo untuk melakukan semua operasi manajemen paket menggunakan Nix.
Memulai Pengelola Paket Nix
Nix memiliki banyak perintah. Perintah utama untuk manajemen paket adalah nix-env . Perintah ini digunakan untuk mendaftar, menginstal, memperbarui, mengembalikan, menghapus, paket kueri. Mari kita lihat beberapa perintah dengan contoh.
Memperbarui saluran Nix
Saluran Nix hanyalah URL yang menunjuk ke tempat yang berisi sekumpulan ekspresi Nix dan manifes. Secara default, Nixpkgs saluran secara otomatis ditambahkan ke daftar saluran "berlangganan" Anda saat Anda menginstal Nix.
Untuk tetap up to date dengan saluran Nix, jalankan perintah berikut:
$ nix-channel --update
Contoh keluaran:
downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s] unpacking channels...
Anda juga dapat menambahkan saluran secara manual ke sistem Anda seperti yang ditunjukkan di bawah ini.
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
Setelah berlangganan (menambahkan) saluran, jangan lupa untuk memperbarui saluran untuk mendapatkan ekspresi Nix terbaru yang tersedia menggunakan perintah:
$ nix-channel --update
Untuk menghapus saluran, jalankan saja:
$ nix-channel --remove nixpkgs
Telusuri/kueri paket yang tersedia
Untuk melihat daftar paket yang tersedia di saluran berlangganan, jalankan:
$ nix-env -qa
Contoh output dari perintah di atas adalah:
2048-in-terminal-2015-01-15 2bwm-0.2 389-ds-base-1.3.5.15 3dpong-0.5 4store-1.1.6 8086tiny-1.25 90secondportraits-1.01b 915resolution-0.5.3 9pfs a2jmidid-8 a2ps-4.14 a52dec-0.7.4p4 aacgain-1.9.0 aacskeys-0.4.0e aalib-1.4rc5 abc-verifier-20160818 abcde-2.7.2 abcl-1.4.0 [...]
Di sini, "-q" menunjukkan operasi kueri. "-a" menunjukkan semua paket yang tersedia (yaitu, dapat diinstal).
Anda dapat menanyakan paket tertentu, seperti yang ditunjukkan di bawah ini.
$ nix-env -qa chromium
Keluaran:
chromium-58.0.3029.110
Anda juga dapat menggunakan perintah berikut untuk mencari paket tertentu.
$ nix-env -qaP | grep python3-3
Contoh keluaran:
nixpkgs.python33 python3-3.3.6 nixpkgs.python33Full python3-3.3.6 nixpkgs.python34 python3-3.4.6 nixpkgs.python34Full python3-3.4.6 nixpkgs.python35 python3-3.5.3 nixpkgs.python35Full python3-3.5.3 nixpkgs.python3Full python3-3.6.1 nixpkgs.python36Full python3-3.6.1 nixpkgs.python3 python3-3.6.1
Untuk membuat daftar semua paket yang diinstal, cukup jalankan:
$ nix-env -q
Dimungkinkan juga untuk melihat status paket yang tersedia. Lihat contoh di bawah ini.
$ nix-env -qas gcc
Contoh keluaran:
IPS gcc-5.4.0
Di sini, "I" menunjukkan bahwa paket yang ditentukan telah diinstal, "P" menunjukkan paket tersebut ada di sistem kami, dan "S" menunjukkan apakah ada yang disebut pengganti untuk paketnya.
Anda dapat membuat kueri/daftar paket menggunakan ekspresi reguler. Berikut adalah beberapa contoh ekspresi reguler.
kromium
Cocok dengan nama paket chromium dan versi apa pun.
kromium-58.0
Cocok dengan nama paket chromium dan versi 58.0.
Contoh:
$ nix-env -qa chromium-58.0
gtk\\+
Cocok dengan nama paket gtk+ . Karakter + harus diloloskan menggunakan garis miring terbalik agar tidak ditafsirkan sebagai pengukur, dan garis miring terbalik harus diloloskan dengan garis miring terbalik lainnya untuk memastikan bahwa shell meneruskannya.
.\*
Cocok dengan nama paket apa pun. Ini adalah default untuk sebagian besar perintah.
'.*zip.*'
Cocok dengan nama paket apa pun yang berisi string zip . Perhatikan titik-titik:'*zip*' tidak berfungsi, karena dalam ekspresi reguler, karakter * ditafsirkan sebagai quantifier.
'.*(firefox|chromium).*'
Cocok dengan nama paket apa pun yang berisi string firefox atau kromium .
Menginstal paket
Seperti yang saya sebutkan di tutorial sebelumnya, semua paket akan disimpan di Nix Store , biasanya direktori /nix/store .
Untuk menginstal sebuah paket, jalankan saja:
$ nix-env --install gcc
Atau,
$ nix-env -i gcc
Perintah di atas akan menginstal paket gcc terbaru yang tersedia.
Contoh output dari perintah di atas adalah:
installing ‘gcc-5.4.0’ download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds... these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked): /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’... [...] fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... *** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’ created 78 symlinks in user environment
Mari kita periksa apakah gcc diinstal atau tidak menggunakan perintah:
$ gcc -v
Contoh keluaran:
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: Thread model: posix gcc version 5.4.0 (GCC)
Seperti yang Anda perhatikan pada output di atas, gcc telah berada di sub-direktori bernama "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" di bawah /nix/store . Di sini, kami memanggil dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 sebagai pengenal unik. Subdirektori ini menampung semua dependensi dan pustaka yang diperlukan dari paket gcc.
Menguji paket tanpa menginstal
Fitur penting lainnya dari manajer paket Nix adalah Anda dapat menguji sebuah paket tanpa menginstalnya di sistem Anda. Lihat panduan berikut untuk mengetahui cara menguji paket tanpa menginstalnya.
- Cara Menguji Paket Tanpa Menginstalnya di Linux
Mengupgrade paket
Untuk memutakhirkan paket ke versi berikutnya yang tersedia, jalankan saja:
$ nix-env --upgrade vim
Atau, cukup:
$ nix-env -u vim
Perintah di atas hanya akan meningkatkan vim paket jika ada versi "lebih baru".
Selain itu, Anda dapat meningkatkan semua paket yang diinstal sekaligus dengan menjalankan perintah berikut:
$ nix-env -u
Paket rollback
Anda menginstal sebuah paket, tetapi paket tersebut tidak berguna atau tidak berfungsi dengan baik. Anda memerlukan versi yang lebih rendah dari paket yang sama. Apa yang akan kamu lakukan? Sederhana. Kembalikan saja ke versi kerja sebelumnya menggunakan perintah berikut:
$ nix-env --rollback
Mencopot pemasangan paket
Untuk mencopot pemasangan paket, jalankan:
$ nix-env -e gcc
Perintah di atas akan menghapus paket yang disebut gcc dari sistem Anda.
Anda dapat menghapus beberapa paket seperti yang ditunjukkan di bawah ini.
$ nix-env -e gcc vim
Contoh keluaran:
uninstalling ‘vim-8.0.0442’ uninstalling ‘gcc-5.4.0’ building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’ created 6 symlinks in user environment
Menghapus paket yang tidak digunakan
Ketika sebuah paket dicopot, paket tersebut tidak dihapus dari Nix Store (yaitu direktori /nix/store/). Hanya saja, symlink akan dihapus dari profil Anda.
Untuk benar-benar menghapus paket yang dihapus, jalankan:
$ nix-collect-garbage -d
Contoh keluaran:
finding garbage collector roots... deleting garbage... deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’ deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’ deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’ [...] deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’ deleting ‘/nix/store/trash’ deleting unused links... note: currently hard linking saves -0.00 MiB 1447 store paths deleted, 12.65 MiB freed
Anda harus menjalankan perintah ini secara berkala untuk menghapus paket yang tidak digunakan dari sistem Anda.
Dan, itu saja untuk saat ini. Saya harap Anda memiliki ide tentang penggunaan dasar manajer paket Nix. Apa yang baru saja saya bahas di sini sudah cukup untuk memulai dengan manajer paket Nix. Tentu saja, ada banyak perintah. Untuk mempelajari lebih lanjut perintah Nix, lihat manual resmi Nix yang diberikan di akhir panduan ini.
Jika Anda merasa panduan ini bermanfaat, silakan bagikan di jejaring sosial, profesional, dan dukung OSTechNix Anda. Lebih banyak barang bagus akan datang. Tetap disini!
Semangat!