V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
novolunt
V2EX  ›  程序员

使用 nix 包管理器解决 glibc 兼容问题

  •  2
     
  •   novolunt · 2022-11-03 12:53:29 +08:00 · 1892 次点击
    这是一个创建于 533 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 优势
      当软件包依赖版本不一致时,nix 包管理可以兼容较新版本,且安装软件包时是无需 root 权限
      例如,安装 mongodb 时,mongodb 使用的 glibc 版本较高
      而 glibc 又是系统基础组件,不能随便升级(系统上已安装其他应用依赖旧的 glibc)

    • 安装 nix
      sh <(curl -L https://nixos.org/nix/install) --no-daemon

    • 搜索软件包

    https://search.nixos.org/

    • 更新添加包订阅
    nix-channel --add https://nixos.org/channels/nixpkgs-unstable
    nix-channel --update
    
    • 安装非官方安全包
    export NIXPKGS_ALLOW_UNFREE=1
    nix-env -iA nixpkgs.mongodb-5
    
    • 运行 mongo
      nix-shell -p mongodb-5 --run "mongo --version"
    7 条回复    2022-11-04 15:02:06 +08:00
    zachgenius
        1
    zachgenius  
       2022-11-03 13:37:26 +08:00
    nice
    JohnBull
        2
    JohnBull  
       2022-11-03 15:14:31 +08:00
    这东西很合我的口味
    ffhigh
        3
    ffhigh  
       2022-11-03 16:42:13 +08:00 via iPhone
    😀
    okampfer
        4
    okampfer  
       2022-11-03 16:55:50 +08:00
    LZ ,nix 的国内镜像源(官方源被墙了)你使用正常吗?我的 mac 上怎么都用不了镜像。
    novolunt
        5
    novolunt  
    OP
       2022-11-03 17:02:37 +08:00
    @okampfer 没用镜像源,用的是不是国内的网络。
    清华大学源试看看,注意是 nixpkgs 不是 nixos
    https://mirrors.tuna.tsinghua.edu.cn/help/nix/
    garywill
        6
    garywill  
       2022-11-03 20:55:57 +08:00   ❤️ 1
    期待有人写一篇 nix vs guix vs linuxbrew 的体验比较
    novolunt
        7
    novolunt  
    OP
       2022-11-04 15:02:06 +08:00
    @garywill 如果你不是使用 nixpkgs 而是 nixos ,那么你甚至可以把配置文件导出也就几百 kb ,从而来起同样配置的 vm 运行环境。nix 已有网站直接支持,比如 replit.com, 可以在非 root 环境配置需要的依赖包。https://github.com/Snawoot/ss-replit/blob/master/replit.nix
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5340 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:54 · PVG 16:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.