NixOS是一种不可变的Linux发行版,吸引人的一个原因是它的Nix包管理器。Nix包管理器拥有超过80,000个软件包,虽然可能不及Debian软件包的数量,但仍然令人印象深刻。
好消息是,你不必为了使用Nix包管理器而安装NixOS。就像Homebrew和Rust的Cargo包管理器一样,你可以在当前的Linux发行版中使用Nix包管理器。
为什么要这么做呢?因为有时你可能会发现某个新应用程序只有以Nix包格式提供。虽然这种情况不常见,但确实可能发生。
在本教程中,我将为你介绍以下内容:
- 安装Nix包管理器
- 搜索和安装软件包
- 在不安装软件包的情况下尝试/测试软件包
- 更新软件包
- 移除软件包
- 在其他Linux发行版上安装Nix包管理器
安装Nix包管理器
有两种方式安装Nix包管理器:全局安装和本地安装。
?
全局安装意味着Nix包管理器将对系统上的每个用户可用,而本地安装只针对当前用户。官方Nix文档建议使用全局安装。
全局安装
如果你想要全局安装Nix包管理器,那么需要执行以下命令:
sh <(curl -L https://nixos.org/nix/install) --daemon
执行上述命令后,你需要输入y
并按下Enter
键:
安装Nix包管理器全局安装
完成后,关闭当前终端,因为它不会在当前终端会话中工作。
本地安装
如果你喜欢本地安装并且不想每次都使用sudo,那么执行以下命令:
sh <(curl -L https://nixos.org/nix/install) --no-daemon
在被要求确认时输入y
并按下Enter
键。
安装Nix包管理器本地安装
完成后,关闭当前终端会话,并启动一个新的终端以使用Nix包管理器。
搜索和安装软件包
安装了Nix包管理器之后,下一步是搜索软件包。
首先,访问Nix搜索的官方页面,然后输入你想安装的软件包名称。
从给定的描述中,你可以找到你要找的软件包,然后选择nix-env
以进行永久安装。
例如,如果我搜索“Firefox浏览器”,则会得到以下结果:
搜索要安装的软件包使用Nix包管理器
我上面提到的最后一步(复制命令)只是提供了一个命令,你需要在终端中执行它以进行安装。
在我的情况下,它为我提供了以下安装Firefox的命令:
nix-env -iA nixpkgs.firefox
安装完成后,你可以使用以下命令列出已安装的软件包:
nix-env -q
使用Nix包管理器列出已安装的软件包
在不安装软件包的情况下尝试/测试软件包
到目前为止,这是Nix包管理器最棒的功能,因为你可以使用/测试甚至未安装的软件包!
为此,你可以使用nix shell
,它允许你使用指定的软件包进入交互式shell,并在关闭后无法再访问该软件包。
很酷,对吧?
要使用nix shell
来访问你喜欢的软件包,使用以下命令语法:
nix-shell -p <软件包名称>
例如,我曾经想要使用neofetch
,所以我使用了以下命令:
nix-shell -p neofetch
使用Nix包管理器在不安装软件包的情况下使用软件包
要退出shell,只需执行exit
命令:
exit
使用Nix包管理器更新软件包
使用Nix包管理器更新软件包非常简单。
要更新软件包,首先需要使用以下命令来更新通道:
nix-channel --update
接下来,你可以通过执行以下命令以干扰方式运行更新命令来列出过时的软件包:
nix-env --upgrade --dry-run
在我的情况下,Firefox浏览器已过时需要更新!
要更新单个软件包,使用以下命令:
nix-env -u <软件包名称>
如果你想一次更新所有软件包,使用以下命令:
nix-env -u
使用Nix包管理器删除软件包
要删除软件包,只需执行以下命令:
nix-env --uninstall [软件包名称]
例如,如果我想删除Firefox浏览器,我将使用以下命令:
nix-env --uninstall firefox
这就是使用Nix包管理器管理Linux软件包的方法。
在其他Linux发行版上安装Nix包管理器
如果你使用的不是NixOS,而是其他Linux发行版,也可以安装Nix包管理器。
要在其他发行版上安装Nix,请参考Nix官方文档以获取详细的安装说明。