Nix-ld-rs:在NixOS上无缝运行未修补的动态二进制文件

Nix-ld-rs:在NixOS上无缝运行未修补的动态二进制文件

nix-ld-rs Run unpatched dynamic binaries on NixOS [maintainer=@zhaofengli @Mic92] nix-ld-rs 项目地址: https://gitcode.com/gh_mirrors/ni/nix-ld-rs

项目介绍

Nix-ld-rs 是一个用 Rust 重写的 nix-ld 工具,旨在为 NixOS 用户提供一种更稳健的方式去运行未经特殊修改的动态二进制文件。它保留了环境变量的支持,如 NIX_LD, NIX_LD_LIBRARY_PATH 等,并且引入了额外的功能性,特别是解决了LD_LIBRARY_PATH对子进程影响的问题(仅限x86_64-linux和aarch64-linux)。此工具的目标是最终合并到原 nix-ld 中,以减少由于 LD_LIBRARY_PATH 设置导致的应用程序中断。

项目快速启动

要迅速体验 nix-ld-rs,你需要先更新你的 Nixpkgs 到包含该工具的版本。然后,在你的 NixOS 配置中启用或指定使用 nix-ld-rs

{ config, pkgs, ... }:

let
  # 假设 nix-ld-rs 已经被添加到 nixpkgs。
  customNixLdRs = pkgs.nix-ld-rs;
in

{
  programs.nix-ld.package = customNixLdRs;
}

保存配置后,通过执行 nixos-rebuild switch 来应用更改。之后,nix-ld-rs 就可以作为一个 drop-in 替代品来使用,无需改变现有调用方式。

对于命令行直接使用,你可以尝试运行:

nix-ld-rs

这将会列出可用的选项和环境变量说明。

应用案例和最佳实践

减少应用程序中断

Nix-ld-rs 的主要优势在于当启动未打补丁的二进制文件时,不再设置 LD_LIBRARY_PATH,这极大地减少了因错误的库路径引起的崩溃,尤其是对于那些依赖正确环境变量配置的远程开发场景,比如通过 Visual Studio Code 进行的远程调试。

在脚本中的应用

在自动化脚本或者服务管理中,可以利用 nix-ld-rs 确保启动的服务不受不当的 LD_LIBRARY_PATH 影响,保证软件的稳定运行。

典型生态项目

虽然 Nix-ld-rs 直接服务于 NixOS 生态,它的存在优化了整个生态系统对动态二进制的兼容性和稳定性,特别适用于那些跨平台开发和部署的场景。通过与 Nix 环境的紧密结合,它可以与任何依赖于 Nix 包管理系统构建和运行的项目结合使用,包括但不仅限于服务端应用、桌面应用程序以及嵌入式开发环境。

为了进一步集成和利用 nix-ld-rs,开发者可能会将其技术栈中的构建流程与之对接,确保二进制的环境配置更加精确与可控,特别是在复杂的多库依赖环境中。


通过上述步骤和理解,开发者可以有效地将 nix-ld-rs 引入其 NixOS 项目之中,提升软件部署的健壮性和可维护性。

nix-ld-rs Run unpatched dynamic binaries on NixOS [maintainer=@zhaofengli @Mic92] nix-ld-rs 项目地址: https://gitcode.com/gh_mirrors/ni/nix-ld-rs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝轩驰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值