在 Ubuntu 等非 Nix 操作系統(tǒng)上安裝和使用 Nix 包管理器
人們喜歡使用不可變的 NixOS 的原因之一是它的 Nix 包管理器。
它有超過(guò) 80,000 個(gè)軟件包,這可能與 Debian 軟件包的數(shù)量相差比較大,但仍然令人印象深刻。
好處是你不必僅僅為了包管理器而 安裝 NixOS。與 Homebrew 和 Rust 的 Cargo 包管理器 一樣,你可以在當(dāng)前發(fā)行版中使用 Nix 包管理器。
為什么要這么做?因?yàn)橛袝r(shí),你可能會(huì)發(fā)現(xiàn)僅以 Nix 打包格式提供的新應(yīng)用。這種情況很少見(jiàn),但有可能。
在本教程中,我將引導(dǎo)你完成以下內(nèi)容:
- 安裝 Nix 包管理器
- 搜索并安裝包
- 嘗試/測(cè)試軟件包而不安裝它們
- 更新包
- 刪除包
在其他 Linux 發(fā)行版上安裝 Nix 包管理器
Nix 包管理器有兩種安裝方式:全局安裝和本地安裝。
?? 全局安裝意味著系統(tǒng)上的每個(gè)可用用戶(hù)都可以訪(fǎng)問(wèn) nix 包管理器,而本地安裝僅適用于當(dāng)前用戶(hù)。Nix 官方文檔 建議你使用全局安裝。
全局安裝
如果你想全局安裝 Nix 包管理器,那么,你需要執(zhí)行以下命令:
sh <(curl -L https://nixos.org/nix/install) --daemon
執(zhí)行上述命令后,需要輸入 y
鍵并按回車(chē)鍵:
完成后,關(guān)閉當(dāng)前終端,因?yàn)樗粫?huì)在當(dāng)前終端會(huì)話(huà)上運(yùn)行。
本地安裝
如果你更喜歡本地安裝并且不想每次都使用 sudo
,則執(zhí)行以下命令:
sh <(curl -L https://nixos.org/nix/install) --no-daemon
輸入 y
并在要求確認(rèn)時(shí)按回車(chē)鍵。
完成后,關(guān)閉當(dāng)前終端會(huì)話(huà)并啟動(dòng)一個(gè)新終端會(huì)話(huà)以使用 Nix 包管理器。
搜索并安裝包
安裝 Nix 包管理器后,下一步是搜索包。
首先,訪(fǎng)問(wèn) Nix 搜索的官方頁(yè)面 并輸入你要安裝的軟件包的名稱(chēng)。
從給定的描述中,你可以找到所需的軟件包,然后選擇 nix-env
進(jìn)行永久安裝。
在這里,你可以添加一些額外的關(guān)鍵字以獲得更好的搜索結(jié)果。例如,在這里,我搜索 “Firefox browser”:
我上面提到的最后一步(“復(fù)制命令”)什么也不做,只是為你提供了一個(gè)用于安裝的命令。
現(xiàn)在,你所要做的就是在終端中執(zhí)行該命令。
就我而言,它給了我以下命令來(lái)安裝 Firefox:
nix-env -iA nixpkgs.firefox
完成后,你可以使用以下命令列出已安裝的軟件包:
nix-env -q
使用包而不安裝它們
到目前為止,這是 Nix 包管理器的最佳功能,因?yàn)槟憧梢允褂?測(cè)試包甚至不用安裝它!
為此,你可以使用 Nix Shell,它允許你將交互式 Shell 與指定的包一起使用,關(guān)閉后,你將無(wú)法再訪(fǎng)問(wèn)該包。
很酷,對(duì)吧?
要使用 nix-shell 訪(fǎng)問(wèn)你喜歡的軟件包,請(qǐng)使用以下命令語(yǔ)法:
nix-shell -p <package_name>
例如,我想使用一次 neofetch
,所以我使用了以下命令:
nix-shell -p neofetch
要退出 Shell,你所要做的就是執(zhí)行 exit
命令:
exit
使用 Nix 包管理器更新包
使用 Nix 包管理器更新包非常簡(jiǎn)單。
要更新軟件包,首先,你需要使用以下命令更新頻道:
nix-channel --update
接下來(lái),你可以通過(guò)試運(yùn)行更新命令來(lái)列出過(guò)時(shí)的軟件包:
nix-env --upgrade --dry-run
就我而言,F(xiàn)irefox 瀏覽器已經(jīng)過(guò)時(shí),需要更新!
要更新單個(gè)包,請(qǐng)使用以下命令:
nix-env -u <Package_name>
如果你想一次更新所有軟件包,請(qǐng)使用以下命令:
nix-env -u
使用 Nix 包管理器刪除包
要?jiǎng)h除軟件包,你只需按以下方式執(zhí)行 nix-env
命令即可:
nix-env --uninstall [package_name]
例如,如果我想刪除 Firefox 瀏覽器,那么,我將使用以下命令:
nix-env --uninstall firefox
通過(guò) NixOS 釋放其全部潛力
如果你喜歡 Nix 包管理器背后的想法,請(qǐng)相信我,你一定會(huì)喜歡 NixOS。
僅使用一個(gè)配置文件來(lái)復(fù)制整個(gè)系統(tǒng)就足以說(shuō)服我切換到 NixOS,但還有更多原因:
我喜歡 NixOS。以至于我寫(xiě)了整個(gè)系列,這樣你就不必閱讀文檔(基礎(chǔ)知識(shí)):
我希望你能像我一樣喜歡使用它。