#包管理器 #包管理 #声明式 #Linux # Darling #可扩展 #Node.js

应用 darling-binary

声明式且可扩展的包管理器

2 个版本

0.1.1 2024年4月9日
0.1.0 2024年4月8日

167操作系统

MIT 许可证

17KB
231

Darling

Declarative And Reproducible LINux Generalized

Linux 的一个可扩展且声明式的包管理系统。

Darling 允许管理几乎所有形式的现有包管理器,例如

  • 操作系统包管理器如 pacmanaptdnf 等。
  • NodeJS 全局包
  • Visual Studio Code 扩展

... 以及更多。

安装

手动

每次将新模块添加到 darling 时,都必须从源代码重新构建代码以包含新的 Rust 库。因此,darling 的源代码必须始终存储在您的机器上。默认位置无需更改配置,是将源代码放在 ~/.local/share/daring/soure。您可以在那里找到它如下

git clone https://github.com/darling-package-manager/darling.git
mkdir -p ~/.local/share/darling
mv darling ~/.local/share/darling/source

在您的 .bashrc (或您编辑 $PATH 的任何地方)添加

export $PATH="$PATH:~/.local/share/darling/source/target/release

此外,请确保至少构建项目一次,通过在 source 目录中运行 cargo build --release 进入 source 目录。之后,当添加新模块时,darling 将重新构建自身。

实现 Darling

Darling 被特别设计为可扩展的 而无需修改 Darling 本身。这意味着新的包相关工具可以为 Darling 添加自己的支持。 darling 使用非常具体的协议来创建模块。过程如下

  • 创建一个 Rust(库)项目。 它必须以 darling- 开头。例如,cargo new darling-example --lib。确保您的名称在 crates.io 上未被占用。
  • 使用 cargo add darling-apidarling-api 添加到您的依赖项中。
  • 创建一个实现darling::PackageManager的空结构体。
    • 确保get_name()函数在所有调用中返回一致值,并且它不返回"module"module是darling用来管理自身的内置保留名称。它应该与其他darling模块唯一,否则它们将不兼容。通常,将其作为你的crate名称,不包含darling-前缀。例如,

  • 在你的结构体中声明一个pub static变量,命名为PACKAGE_MANAGER,使其可以从crate根目录访问。
  • 使用cargo publishcrates.io上发布你的crate

依赖关系

~5–16MB
~162K SLoC