You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在电脑全局安装stdenv而非仅在Shell临时加载

解决方案:全局获取stdenv包含的GNU工具

首先明确:stdenv不是一个可直接全局安装的独立包,它是Nix用于构建软件的底层构建环境框架,本质是一组依赖的集合(包含make、sed等工具),设计用于临时构建环境,而非用户全局环境。这也是nix-env -iA stdenv失败的原因——Nixpkgs中没有名为stdenv的可安装顶层包属性。

实现全局拥有stdenv工具集的两种方法

1. 直接安装单个所需工具

如果你只需要特定的工具,直接用nix-env安装对应的包即可,例如:

# 安装GNU make、sed、grep及基础核心工具
nix-env -iA nixpkgs.gnumake nixpkgs.gnused nixpkgs.gnugrep nixpkgs.coreutils

这种方式精准控制,只安装你需要的工具,避免冗余。

2. 批量安装stdenv核心工具集合

如果你需要完整复刻stdenv中的工具集,可以直接安装stdenv依赖的所有用户级工具。stdenv的核心工具来自nixpkgs中的这些包:

  • coreutils(基础文件操作工具)
  • gnumake(GNU Make)
  • gnused(GNU Sed)
  • gnugrep(GNU Grep)
  • bash(默认Shell)
  • gcc(若需要编译工具,可选)

将这些包一次性安装:

nix-env -iA nixpkgs.coreutils nixpkgs.gnumake nixpkgs.gnused nixpkgs.gnugrep nixpkgs.bash nixpkgs.gcc

补充说明

  • 你之前用nix-shell -p不带包名能加载stdenv,是因为nix-shell的默认行为就是创建一个包含基础构建环境的临时Shell,这个环境自动引入了stdenv的依赖,但并非安装stdenv本身。
  • 若使用NixOS或Home Manager,也可以通过配置文件将这些工具加入系统/用户全局环境,例如在Home Manager的home.nix中添加:
    home.packages = with pkgs; [
      coreutils
      gnumake
      gnused
      gnugrep
      bash
      gcc
    ];
    
    然后运行home-manager switch生效。

内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:40:27