当前位置: 首页 > 科技观察

Nix-ApurelyfunctionalLinuxpackagemanager_0

时间:2023-03-13 17:27:33 科技观察

【.com速译】Nix是一个强大的纯功能包管理系统,专为可靠和可重复的包管理而设计,根据GNULGPLv2.1的条款发布。它是NixOS(一个鲜为人知的Linux发行版)中的主要包管理系统。Nix提供原子升级和回滚、多版本包安装、多用户包管理和构建环境,以便轻松安装包,无论开发人员使用何种编程语言和工具。在Nix下,包是使用功能包语言“Nix表达式”构建的。这种包管理的功能性方法确保安装或升级一个包不会破坏其他包。Nix还具有多用户支持,这意味着普通(或非特权)系统用户可以安全地安装软件包,每个用户都由一个配置文件(Nix商店中出现在用户路径中的软件包集合)标识。如果一个用户安装了一个包,而另一个用户试图安装同一个包,则不会再次构建或下载该包。它目前支持Linux(i686,x86_64)和MacOSX(x86_64)。但是,它相当便携,您可以在大多数支持POSIX线程并具有C++11编译器的平台上试用它。在本文中,我们将描述如何在Linux中安装(在多用户模式下)和使用Nix包管理器。我们将讨论一些与常用工具相关的基本包管理任务。如何在Linux中安装Nix包管理器?我们将在多用户模式下安装最新版本的Nix(v2.1.3)。幸运的是,有一个现成的安装脚本,您可以使用以下curl命令以系统上的普通用户身份从shell运行它。$sh<(curlhttps://nixos.org/nix/install)--daemon运行上述命令会下载***nix二进制包文件,进入多用户nix安装界面,如图屏幕截图:图1:在Linux中安装Nix包管理器要查看安装过程中发生的详细信息,请键入y并按Enter。当您对结果感到满意并准备好继续时,键入y并按Enter。图2:Nix安装摘要脚本将根据需要多次调用sudo命令。您需要回答y并按enter以允许它使用sudo。图3:Nix安装继续安装程序随后运行多项测试,生成Nix配置报告,创建用户ID为30001和30032的构建用户,以及一个组ID为30000的组。在提示继续时输入y。它将为不同的构建用户设置构建组并创建基本的Nix目录结构。如果这些文件存在,它会修改文件/etc/bashrc(和/etc/zshrcforzsh)。请注意,它首先使用.backup-before-nix扩展名备份上述文件,安装程序还会创建文件/etc/profile.d/nix.sh。安装程序还将设置nix-daemon服务和nix-daemon套接字服务,为nix-daemon加载systemd单元,并启动上述两个服务。安装完成后,您需要打开一个新的终端窗口才能开始使用Nix。或者,关闭并重新打开shell以使最近的更改生效。然后获取文件/etc/profile.d/nix.sh(因为它不是shell启动文件,打开一个新的shell不会得到它)。$source/etc/profile.d/nix.sh接下来运行如下命令,从项目官网下载一些Nix运行需要的路径。下载所有路径并将其复制到正确位置后,您将看到系统和Nix安装类型的摘要,如屏幕截图所示:$nix-shell-pnix-info--run"nix-info-m"图4:Nix安装和系统总结如何在Linux中使用Nix包管理器?在Nix下,包管理由nix-env实用程序完成。它用于安装、升级和删除/擦除包,以及查询已安装或可供安装的包。所有包都在Nix频道中,这是一个指向存储库的URL,其中包含一组Nix表达式和指向二进制缓存的指针。默认频道是Nixpkgs,订阅的频道列表存储在~/.nix-channels中,您可以使用以下命令列出它们(没有输出表示没有频道)。$nix-channel--list要添加Nix频道,请使用以下命令:$nix-channel--addhttps://nixos.org/channels/nixpkgs-unstable在安装任何软件包之前,更新Nix频道;这类似于在APT包管理器下运行apt更新。$nix-channel--update图5:更新Nix频道您可以使用以下命令查询可用于安装的包。$nix-env-qa图6:查询可用的安装包在此示例中,我们将使用前面的命令安装ApacheTomcat服务器,并使用grep查找可用的安装包,如下所示:$nix-env-qa|grep"apache-tomcat”图7:查找可供安装的包要安装包,请指定包版本,例如apache-tomcat-9.0.2,使用以下命令:$nix-env-iapache-tomcat-9.0.2图8:使用Nix安装包在本地系统上,Nix将包存储在Nix商店中,默认情况下在/nix/store目录中,其中每个包都有自己独特的子目录。比如apache-tomcat包存放在:/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2这个路径下,随机字符95gmgnxlrcpkhlm00fa5ax8kvd6189py是包的唯一标识,考虑了所有的依赖关系。您可以使用以下命令列出已安装的软件包。$nix-env–q图9:列出已安装的包要升级apache-tomcat包,可以使用-u升级参数选项,如图:$nix-env-uapache-tomcat如果要删除/要擦除apache-tomcat,请使用-e标志。在这里,包不会立即从系统中删除,只是闲置不用。这很有用,因为您可能想要执行回滚,或者它可能在另一个用户的配置文件中。删除$nix-env-eapache-tomcat包后,您可以使用nix-collect-garbage实用程序进行一些垃圾收集。$nix-collect-garbage如何在Linux中删除Nix包管理器?要卸载Nix,请立即删除所有与Nix相关的文件。$sudorm-rf/etc/profile/nix.sh/etc/nix/nix~root/.nix-profile~root/.nix-defexpr~root/.nix-channels~/.nix-profile~/.nix-defexpr~/.nix-channels在具有systemd的系统上,运行以下命令以停止所有与Nix相关的服务并禁用它们。$sudosystemctlstopnix-daemon.socket$sudosystemctlstopnix-daemon.service$sudosystemctldisablenix-daemon.socket$sudosystemctldisablenix-daemon.service$sudosystemctldaemon-reload另外需要删除/etc/profile、/etc/bashrc和/etc/zshrc这些文件任何引用Nix的条目。有关详细信息,请参阅我们介绍的上述实用程序的参考手册页。$mannix-channel$mannix-env您可以在项目网站https://nixos.org/nix/上找到Nix包管理器的文档。结论Nix是一个纯功能包管理器,专为可靠和可重复的包管理而设计。它提供了一个有趣的包管理概念,这与Linux中的YUM和APT等常见工具有很大不同。在本文中,我们介绍了如何在多用户模式下安装Nix,并讨论了如何使用Nix管理软件包。欢迎留言。原标题:Nix–ThePurelyFunctionalPackageManagerforLinux,作者:AaronKili