当前位置: 首页 > news >正文

nix-alien安装指南:从零开始在NixOS和Home-Manager中配置

nix-alien安装指南:从零开始在NixOS和Home-Manager中配置

【免费下载链接】nix-alienRun unpatched binaries on Nix/NixOS项目地址: https://gitcode.com/gh_mirrors/ni/nix-alien

nix-alien是一款强大的工具,能够帮助用户在Nix/NixOS系统上运行未经过补丁处理的二进制文件,轻松解决“bash: ./myapp: No such file or directory”这类常见问题。通过自动下载必要的依赖项,它让在NixOS环境中运行各种二进制程序变得简单高效。

🌟 为什么选择nix-alien?

在NixOS系统中,由于其独特的文件系统结构,直接运行外部二进制文件常常会遇到依赖缺失的问题。nix-alien通过以下核心功能解决这一痛点:

  • 自动依赖解析:自动识别二进制文件所需的共享库依赖
  • FHS环境模拟:创建兼容FHS标准的运行环境
  • 灵活的运行模式:支持直接运行、生成nix-ld配置或仅列出所需库文件

主要命令包括:

$ nix-alien myapp # 在FHS环境中运行二进制文件 $ nix-alien-ld myapp # 使用nix-ld运行二进制文件 $ nix-alien-find-libs myapp # 列出二进制文件所需的所有库

🚀 快速开始:无需安装即可体验

如果你只是想快速尝试nix-alien的功能,无需完整安装,可直接通过nix命令运行:

$ nix --extra-experimental-features "nix-command flakes" run github:thiagokokada/nix-alien -- ~/myapp

对于需要OpenGL支持的程序(如Blender),可以配合nixGL使用:

$ nix --extra-experimental-features "nix-command flakes" run --impure github:guibou/nixGL --override-input nixpkgs nixpkgs/nixos-unstable -- nix run github:thiagokokada/nix-alien -- blender

📥 NixOS系统安装方法

传统配置方式

  1. 创建/etc/nixos/nix-alien.nix文件,添加以下内容:
{ ... }: let nix-alien-pkgs = import ( builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master" ) { }; in { environment.systemPackages = with nix-alien-pkgs; [ nix-alien ]; # 可选:启用nix-ld支持(nix-alien-ld命令需要) programs.nix-ld.enable = true; }
  1. 将该文件添加到/etc/nixos/configuration.niximports部分:
imports = [ ./nix-alien.nix # 其他配置文件... ];
  1. 应用配置:
$ sudo nixos-rebuild switch

Flakes配置方式

如果你使用Flakes,可以将以下配置添加到你的flake.nix文件中:

{ description = "nix-alien-on-nixos"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, nix-alien }: { nixosConfigurations.nix-alien-desktop = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; # 或 aarch64-linux specialArgs = { inherit self system; }; modules = [ ({ self, system, ... }: { environment.systemPackages = with self.inputs.nix-alien.packages.${system}; [ nix-alien ]; # 可选:启用nix-ld支持 programs.nix-ld.enable = true; }) ]; }; }; }

或者使用overlay方式(可能减少/nix/store大小,但兼容性可能受影响):

{ description = "nix-alien-on-nixos"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, nix-alien }: { nixosConfigurations.nix-alien-desktop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; # 或 aarch64-linux specialArgs = { inherit self; }; modules = [ ({ self, ... }: { nixpkgs.overlays = [ self.inputs.nix-alien.overlays.default ]; environment.systemPackages = with pkgs; [ nix-alien ]; # 可选:启用nix-ld支持 programs.nix-ld.enable = true; }) ]; }; }; }

🏠 Home-Manager安装方法

传统配置方式

在你的Home-Manager配置文件中添加:

{ ... }: let nix-alien-pkgs = import ( builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master" ) { }; in { # ...其他配置 home.packages = with nix-alien-pkgs; [ nix-alien ]; }

Flakes配置方式

如果你使用Home-Manager with Flakes,可以这样配置:

{ description = "nix-alien-on-home-manager"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.home-manager.url = "github:nix-community/home-manager"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, home-manager, nix-alien }: let system = "x86_64-linux"; # 或 aarch64-linux pkgs = import nixpkgs { inherit system; }; in { homeConfigurations.nix-alien-home = home-manager.lib.homeManagerConfiguration rec { inherit pkgs; extraSpecialArgs = { inherit self system; }; modules = [ ({ self, system, ... }: { home.packages = with self.inputs.nix-alien.packages.${system}; [ nix-alien ]; }) ]; }; }; }

💡 基本使用方法

安装完成后,使用nix-alien非常简单:

  1. 基本运行方式:
$ nix-alien ~/myapp
  1. 传递参数给应用程序:
$ nix-alien ~/myapp -- --foo bar
  1. 使用nix-ld模式(需提前启用nix-ld):
$ nix-alien-ld ~/myapp
  1. 仅列出所需库文件:
$ nix-alien-find-libs ~/myapp
  1. 强制重新创建配置文件:
$ nix-alien --recreate ~/myapp

⚠️ 注意事项与限制

  • 动态加载库问题:使用dlopen动态加载的库可能无法自动检测,可通过-l-p参数手动添加:

    $ nix-alien -l libGL.so.1 -l libz.so.1 ~/myapp # 添加特定库 $ nix-alien -p libGL -p zlib ~/myapp # 添加特定包
  • 缓存机制:配置文件会缓存在$XDG_CACHE_HOME/nix-alien/<path-uuid>/目录下,基于二进制文件的绝对路径

  • Flakes支持:可使用--flake标志创建和使用flake.nix文件(实验性功能)

  • 命令帮助:所有命令都支持--help参数查看详细用法:

    $ nix-alien --help

通过本指南,你应该已经掌握了在NixOS和Home-Manager中安装和配置nix-alien的全部方法。无论你是NixOS新手还是有经验的用户,nix-alien都能极大简化在NixOS上运行外部二进制文件的过程,让你的NixOS体验更加顺畅!

【免费下载链接】nix-alienRun unpatched binaries on Nix/NixOS项目地址: https://gitcode.com/gh_mirrors/ni/nix-alien

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1136223/

相关文章:

  • 异步编程必备:minitrace-rust异步追踪最佳实践与Future集成技巧
  • 机器人自动导航ROS开发之-IMU(惯性测量单元)驱动----激光雷达-3D视觉-IMU-GPS融合机器人SLAM导航--老毛
  • 【3分钟解锁】Vital波表合成器:你的声音设计实验室
  • 从0到1理解Gin Web架构:轻松掌握Go语言RBAC权限系统设计
  • nix-alien开发者指南:如何贡献代码和扩展功能
  • sbc-bench与热管理:如何优化单板计算机散热性能
  • 10分钟入门filetype.py:新手必备的文件类型识别工具使用教程
  • 从零开始:EhViewer安卓漫画阅读器的终极使用手册
  • 兰州大学2021创新实践课程:创新实践课程设计与实施完整指南 [特殊字符]
  • 终极Go工具库:gh_mirrors/co/com让你的代码效率提升30%的秘密
  • SillyTavern终极指南:打造个性化AI角色聊天室
  • Hermes Studio 技能与内存系统:自定义智能体能力的完整教程
  • text-encoding vs 原生API:何时该使用这个强大的Polyfill库?
  • Go语言运行时动态结构体:突破静态类型限制的架构创新
  • GeoQ团队协作实战:如何管理多用户地理特征收集工作流
  • Revoke-Obfuscation路线图:未来发展方向和社区贡献指南
  • auto-save.nvim:让NeoVim自动保存成为现实,告别手动保存烦恼
  • GoHBase批量操作指南:如何优化SendBatch提升性能
  • Rive渲染器终极指南:5步掌握高性能跨平台动画渲染
  • TypeScript类型推断最佳实践:何时显式声明,何时依赖自动推断?
  • Encog支持向量机教程:SVM在Java中的完整实现
  • text-encoding性能优化指南:减小596KB索引文件体积的6个实用技巧
  • CZSC缠论插件:3分钟快速掌握通达信智能缠论分析终极指南
  • Go语言效率工具:gh_mirrors/co/com的时间处理与数学函数完全指南
  • 3个核心技巧让Android漫画阅读体验焕然一新:EhViewer完全指南
  • 高效解决网页资源下载难题:Resources Saver Chrome扩展的完整指南
  • nix-alien与Flakes集成:现代Nix工作流的最佳实践
  • npx版本管理:理解@version语法和语义化版本控制
  • 如何将mssql-scripter集成到现有CI/CD流水线:7个实战案例分享
  • 如何快速免费下载全网音乐:MusicDownload开源工具完整指南