mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
301 lines
9.2 KiB
Markdown
301 lines
9.2 KiB
Markdown
|
[#]: subject: "NixOS Series #3: Install and Remove Packages in NixOS"
|
|||
|
[#]: via: "https://itsfoss.com/nixos-package-management/"
|
|||
|
[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/"
|
|||
|
[#]: collector: "lkxed"
|
|||
|
[#]: translator: "wxy"
|
|||
|
[#]: reviewer: "wxy"
|
|||
|
[#]: publisher: "wxy"
|
|||
|
[#]: url: "https://linux.cn/article-15645-1.html"
|
|||
|
|
|||
|
NixOS 系列 #3:在 NixOS 中安装和删除软件包
|
|||
|
======
|
|||
|
|
|||
|
NixOS 中的打包系统是它最强大的地方。Nix 软件包管理器使用的语法与 `apt`、`dnf` 和其他软件包管理器大不相同。
|
|||
|
|
|||
|
这也是 [人们应该尝试使用 NixOS 的原因之一][1]。
|
|||
|
|
|||
|
在本指南中,我将分享两种在 NixOS 上安装和删除软件包的方法:
|
|||
|
|
|||
|
- 使用 Nix 软件包管理器
|
|||
|
- 使用 `configuration.nix` 配置文件
|
|||
|
|
|||
|
> ⚠️ 使用 Nix 软件包管理器,你只能安装软件包,而不能安装 OpenSSH 或 Plex 服务器等服务。对于服务的安装,你必须使用 Nix 配置文件。
|
|||
|
|
|||
|
要安装任何软件包,必须知道它的确切名称,为此,我将从如何在 NixOS 中搜索软件包开始。
|
|||
|
|
|||
|
### 搜索软件包
|
|||
|
|
|||
|
要寻找软件包,你可以使用它的 [网页搜索][2]。
|
|||
|
|
|||
|
你可以使用如下步骤:
|
|||
|
|
|||
|
- 在搜索栏中输入软件包的名称
|
|||
|
- 选择适当的软件包(从给出的描述中决定)
|
|||
|
- 点击 “nix-env” 标签页
|
|||
|
- 复制 NixOS 命令(第一条)
|
|||
|
|
|||
|
例如,如果我想要 `librewolf` 包,我将执行以下操作:
|
|||
|
|
|||
|
![使用 Nix 软件包管理器的网络搜索寻找软件包][3]
|
|||
|
|
|||
|
你也可以通过终端做同样的事情。
|
|||
|
|
|||
|
要使用终端搜索软件包,你可以按照给定的命令语法进行:
|
|||
|
|
|||
|
```
|
|||
|
nix-env -qaP --description [软件包名称]
|
|||
|
```
|
|||
|
|
|||
|
例如,在这里,我搜索了 `librewolf`:
|
|||
|
|
|||
|
![使用终端搜索 NixOS 中的软件包][4]
|
|||
|
|
|||
|
你必须复制输出的第一行,因为那是你需要安装的软件包的名称。
|
|||
|
|
|||
|
在这里它是 `nixos.librewolf`。
|
|||
|
|
|||
|
是的,它听起来可能没有像使用 [APT][5] 或 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][6] 等服务。
|
|||
|
|
|||
|
从搜索服务到安装过程,都与你上面看到的不同。
|
|||
|
|
|||
|
所以让我先说说如何 **搜索服务**。
|
|||
|
|
|||
|
- 要搜索服务,请前往 Nix 软件包搜索 [网页][2]
|
|||
|
- 选择 “<ruby>NixOS 选项<rt>NixOS options</rt></ruby>”(页面顶部菜单行的第三个选项)
|
|||
|
- 输入你要找的服务的名称
|
|||
|
- 复制服务的名称
|
|||
|
|
|||
|
例如,在这里,我正在搜索 OpenSSH 服务。
|
|||
|
|
|||
|
![搜索 NixOS 中的 OpenSSH 服务][7]
|
|||
|
|
|||
|
一旦你找到了这个名字,用下面的命令打开 `configuration.nix` 文件:
|
|||
|
|
|||
|
```
|
|||
|
sudo nano /etc/nixos/configuration.nix
|
|||
|
```
|
|||
|
|
|||
|
并在行末添加服务的名称(在 `}` 之前),如下:
|
|||
|
|
|||
|
```
|
|||
|
[service_name] = true;
|
|||
|
```
|
|||
|
|
|||
|
由于 **我想启用 OpenSSH**,我将添加以下内容:
|
|||
|
|
|||
|
```
|
|||
|
services.openssh.enable = true;
|
|||
|
```
|
|||
|
|
|||
|
![在 NixOS 上启用 OpenSSH][8]
|
|||
|
|
|||
|
一旦你在配置文件中添加了服务,[保存修改并退出 Nano][9] 文本编辑器。
|
|||
|
|
|||
|
要启用该服务,请重建配置文件,并使用以下命令切换到所做的更改:
|
|||
|
|
|||
|
```
|
|||
|
sudo nixos-rebuild switch
|
|||
|
```
|
|||
|
|
|||
|
这就行了,你已经启用了该服务。
|
|||
|
|
|||
|
### 从 NixOS 卸载服务
|
|||
|
|
|||
|
要卸载一个服务,你所要做的就是在 `configuration.nix` 文件中删除或注释该服务的一行。
|
|||
|
|
|||
|
因此,首先,用以下命令打开配置文件:
|
|||
|
|
|||
|
```
|
|||
|
sudo nano /etc/nixos/configuration.nix
|
|||
|
```
|
|||
|
|
|||
|
寻找服务,并删除这一行或用 `#` 注释掉:
|
|||
|
|
|||
|
![从 NixOS 删除服务][10]
|
|||
|
|
|||
|
通过添加注释 `#`,我忽略了 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`,那么我将添加它的名字,如下所示:
|
|||
|
|
|||
|
![使用 Nix 配置文件在 NixOS 中安装一个包][11]
|
|||
|
|
|||
|
你必须在方括号内添加所有的软件包名称,不要用逗号。它必须像截图中描述的那样一个软件一个新的行。
|
|||
|
|
|||
|
但是如果你想在整个系统中安装这个包,那么你必须在 `environment.systemPackages` 下添加包的名字,比如:
|
|||
|
|
|||
|
```
|
|||
|
environment.systemPackages = with pkgs; [
|
|||
|
软件包名称
|
|||
|
];
|
|||
|
```
|
|||
|
|
|||
|
![使用 Nix 配置文件在 NixOS 中全系统安装软件包][12]
|
|||
|
|
|||
|
一旦你完成了在系统配置文件或用户配置文件,甚至两者中添加所需软件包的名称,你将需要按照同样的命令来完成安装:
|
|||
|
|
|||
|
```
|
|||
|
sudo nixos-rebuild switch
|
|||
|
```
|
|||
|
|
|||
|
这样就可以了!
|
|||
|
|
|||
|
### 使用 Nix 配置文件删除软件包
|
|||
|
|
|||
|
要删除软件包,你所要做的就是按照给定的简单步骤进行:
|
|||
|
|
|||
|
- 打开 Nix 配置文件
|
|||
|
- 删除或注释掉软件包的名称
|
|||
|
- 重新构建配置并进行切换
|
|||
|
|
|||
|
所以,让我们从第一步开始(打开配置文件):
|
|||
|
|
|||
|
```
|
|||
|
sudo nano /etc/nixos/configuration.nix
|
|||
|
```
|
|||
|
|
|||
|
接下来,注释掉用户配置文件或系统配置文件中的包的名称:
|
|||
|
|
|||
|
![在 NixOS 上使用 Nix 配置文件删除包][13]
|
|||
|
|
|||
|
保存更改并退出配置文件。
|
|||
|
|
|||
|
最后,重建配置文件,并做一个切换来删除包:
|
|||
|
|
|||
|
```
|
|||
|
sudo nixos-rebuild switch
|
|||
|
```
|
|||
|
|
|||
|
这是这样!
|
|||
|
|
|||
|
> 📋 目前,还没有官方的 GUI 工具来帮助你安装/删除软件包。你可能会发现一些由社区开发的项目,如 [nix-gui][14] 和 [nix42b][15],但它们不再被维护或仅仅处于早期开发阶段。
|
|||
|
|
|||
|
### 接下来...
|
|||
|
|
|||
|
我希望你喜欢阅读 NixOS 系列,就像我写它一样。
|
|||
|
|
|||
|
在下一篇中,我将强调一些在你安装 NixOS 后需要马上做的重要事情。
|
|||
|
|
|||
|
如果你认为我遗漏了什么或有其他建议,请在评论中告诉我。
|
|||
|
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
|
|||
|
via: https://itsfoss.com/nixos-package-management/
|
|||
|
|
|||
|
作者:[Sagar Sharma][a]
|
|||
|
选题:[lkxed][b]
|
|||
|
译者:[wxy](https://github.com/wxy)
|
|||
|
校对:[wxy](https://github.com/wxy)
|
|||
|
|
|||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|||
|
|
|||
|
[a]: https://itsfoss.com/author/sagar/
|
|||
|
[b]: https://github.com/lkxed/
|
|||
|
[1]: https://linux.cn/article-15606-1.html
|
|||
|
[2]: https://search.nixos.org/packages?ref=its-foss
|
|||
|
[3]: https://itsfoss.com/content/images/2023/02/search-packages-for-nixos-1.png
|
|||
|
[4]: https://itsfoss.com/content/images/2023/02/search-packages-in-nixos.png
|
|||
|
[5]: https://itsfoss.com/apt-command-guide/
|
|||
|
[6]: https://itsfoss.com/what-is-flatpak/
|
|||
|
[7]: https://itsfoss.com/content/images/2023/02/Search-the-service-for-nixos-1.png
|
|||
|
[8]: https://itsfoss.com/content/images/2023/02/enable-openssh-on-NixOS.png
|
|||
|
[9]: https://linuxhandbook.com/nano-save-exit/?ref=its-foss
|
|||
|
[10]: https://itsfoss.com/content/images/2023/02/remove-service-from-NixOS.png
|
|||
|
[11]: https://itsfoss.com/content/images/2023/02/install-a-package-in-NixOS-using-the-Nix-config-file.png
|
|||
|
[12]: https://itsfoss.com/content/images/2023/02/install-package-systemwide-in-NixOS-using-Nix-configuration-file-1.png
|
|||
|
[13]: https://itsfoss.com/content/images/2023/02/remove-package-using-nix-config-file-on-NixOS.png
|
|||
|
[14]: https://github.com/nix-gui/nix-gui?ref=its-foss
|
|||
|
[15]: https://gitlab.com/juliendehos/nix42b?ref=its-foss
|
|||
|
[0]: https://img.linux.net.cn/data/attachment/album/202303/21/090913cnq91ob2hn9b2qbh.jpg
|