NixOS 系列 #3:在 NixOS 中安裝和刪除軟體包
NixOS 中的打包系統是它最強大的地方。Nix 軟體包管理器使用的語法與 apt
、dnf
和其他軟體包管理器大不相同。
這也是 人們應該嘗試使用 NixOS 的原因之一。
在本指南中,我將分享兩種在 NixOS 上安裝和刪除軟體包的方法:
- 使用 Nix 軟體包管理器
- 使用
configuration.nix
配置文件
⚠️ 使用 Nix 軟體包管理器,你只能安裝軟體包,而不能安裝 OpenSSH 或 Plex 伺服器等服務。對於服務的安裝,你必須使用 Nix 配置文件。
要安裝任何軟體包,必須知道它的確切名稱,為此,我將從如何在 NixOS 中搜索軟體包開始。
搜索軟體包
要尋找軟體包,你可以使用它的 網頁搜索。
你可以使用如下步驟:
- 在搜索欄中輸入軟體包的名稱
- 選擇適當的軟體包(從給出的描述中決定)
- 點擊 「nix-env」 標籤頁
- 複製 NixOS 命令(第一條)
例如,如果我想要 librewolf
包,我將執行以下操作:
你也可以通過終端做同樣的事情。
要使用終端搜索軟體包,你可以按照給定的命令語法進行:
nix-env -qaP --description [軟體包名稱]
例如,在這裡,我搜索了 librewolf
:
你必須複製輸出的第一行,因為那是你需要安裝的軟體包的名稱。
在這裡它是 nixos.librewolf
。
是的,它聽起來可能沒有像使用 APT 或 DNF 時軟體包名字那麼方便。但是,我認為這並不是大問題。
一些妥協或許會換來一些好處?
在 NixOS 中安裝一個軟體包
要安裝一個軟體包,你所要做的就是使用以下命令語法:
nix-env -iA [軟體包名稱]
而且,如果你使用網路搜索來尋找軟體包,你就已經有了安裝所需的確切命令。
所以,假設我想安裝 `librewolf',我將使用以下命令:
nix-env -iA nixos.librewolf
如果你想進行全系統的安裝(讓每個用戶都能使用這個包),用 sudo
執行安裝命令:
sudo nix-env -iA nixos.librewolf
就是這樣!你將很快安裝好你喜歡的軟體包。
在 NixOS 中卸載一個軟體包
要刪除一個軟體包,你可以參考下面的命令語法:
nix-env --uninstall [軟體包名稱]
因此,如果我必須刪除 librewolf
包,我必須使用以下命令:
nix-env --uninstall librewolf
如果你仔細注意,我使用了 librewolf
而不是 nixos.librewolf
來安裝。
這意味著你在刪除軟體包時要跳過 nixos
部分,這使事情變得簡單而快速。
在 NixOS 中安裝服務
正如我前面提到的,你不能使用 Nix 軟體包管理器來安裝像 OpenSSH、Plex 伺服器、Flatpak 等服務。
從搜索服務到安裝過程,都與你上面看到的不同。
所以讓我先說說如何 搜索服務。
- 要搜索服務,請前往 Nix 軟體包搜索 網頁
- 選擇 「 NixOS 選項 」(頁面頂部菜單行的第三個選項)
- 輸入你要找的服務的名稱
- 複製服務的名稱
例如,在這裡,我正在搜索 OpenSSH 服務。
一旦你找到了這個名字,用下面的命令打開 configuration.nix
文件:
sudo nano /etc/nixos/configuration.nix
並在行末添加服務的名稱(在 }
之前),如下:
[service_name] = true;
由於 我想啟用 OpenSSH,我將添加以下內容:
services.openssh.enable = true;
一旦你在配置文件中添加了服務,保存修改並退出 Nano 文本編輯器。
要啟用該服務,請重建配置文件,並使用以下命令切換到所做的更改:
sudo nixos-rebuild switch
這就行了,你已經啟用了該服務。
從 NixOS 卸載服務
要卸載一個服務,你所要做的就是在 configuration.nix
文件中刪除或注釋該服務的一行。
因此,首先,用以下命令打開配置文件:
sudo nano /etc/nixos/configuration.nix
尋找服務,並刪除這一行或用 #
注釋掉:
通過添加註釋 #
,我忽略了 OpenSSH 服務的載入,因為我不再需要它在我的系統上。
保存修改並退出文本編輯器。
最後,重建配置文件並進行切換:
sudo nixos-rebuild switch
使用 Nix 配置文件安裝軟體包
配置文件可以讓你 方便地一次性管理軟體包。
要使用 Nix 配置文件安裝軟體包,你必須在配置文件中輸入軟體包的名稱、重建,然後切換到配置文件,就可以了。
首先,打開 configuration.nix
文件。
sudo nano /etc/nixos/configuration.nix
如果你想 為一個特定的登錄用戶安裝軟體包,將軟體包的名稱添加到用戶的配置文件中。
用戶配置文件看起來像這樣:
users.users.sagar = {
isNormalUser = true;
description = "Sagar";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
firefox
];
};
當然,它將顯示你的用戶名而不是 sagar
。
你應該使用如下語法來添加軟體包的名稱:
packages = with pkgs; [
軟體包名稱
];
所以我們假設我也想安裝 Thunderbird
,那麼我將添加它的名字,如下所示:
你必須在方括弧內添加所有的軟體包名稱,不要用逗號。它必須像截圖中描述的那樣一個軟體一個新的行。
但是如果你想在整個系統中安裝這個包,那麼你必須在 environment.systemPackages
下添加包的名字,比如:
environment.systemPackages = with pkgs; [
軟體包名稱
];
一旦你完成了在系統配置文件或用戶配置文件,甚至兩者中添加所需軟體包的名稱,你將需要按照同樣的命令來完成安裝:
sudo nixos-rebuild switch
這樣就可以了!
使用 Nix 配置文件刪除軟體包
要刪除軟體包,你所要做的就是按照給定的簡單步驟進行:
- 打開 Nix 配置文件
- 刪除或注釋掉軟體包的名稱
- 重新構建配置並進行切換
所以,讓我們從第一步開始(打開配置文件):
sudo nano /etc/nixos/configuration.nix
接下來,注釋掉用戶配置文件或系統配置文件中的包的名稱:
保存更改並退出配置文件。
最後,重建配置文件,並做一個切換來刪除包:
sudo nixos-rebuild switch
這是這樣!
? 目前,還沒有官方的 GUI 工具來幫助你安裝/刪除軟體包。你可能會發現一些由社區開發的項目,如 nix-gui 和 nix42b,但它們不再被維護或僅僅處於早期開發階段。
接下來...
我希望你喜歡閱讀 NixOS 系列,就像我寫它一樣。
在下一篇中,我將強調一些在你安裝 NixOS 後需要馬上做的重要事情。
如果你認為我遺漏了什麼或有其他建議,請在評論中告訴我。
via: https://itsfoss.com/nixos-package-management/
作者:Sagar Sharma 選題:lkxed 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive