0.1.0 |
|
---|
#15 in #darling
16KB
230 行
darling
Declarative And Reproducible LINux Generalized
Linux的一个可扩展和声明式的包管理系统。
Darling允许管理几乎所有形式的现有包管理器,例如
- 操作系统包管理器,如
pacman
,apt
,dnf
等。 - NodeJS全局包
- Visual Studio Code 扩展
... 更多。
安装
手动
每次你向 darling
中添加新的模块时,都必须从源代码重新构建代码。这意味着你必须在你的机器上保留源代码。默认位置是 ~/.local/share/daring/source
。你可以在这里找到它,如下所示
git clone https://github.com/darling-package-manager/darling.git
mkdir -p ~/.local/share/darling
mv darling ~/.local/share/darling/source
在 .bashrc
(或编辑你的 .bashrc
) 中添加
export $PATH="$PATH:~/.local/share/darling/source/target/release
确保至少构建项目一次,通过进入 source
目录并运行 cargo
来构建项目。之后,每当添加新的模块时,darling
将会重建自己。
实现Darling
Darling被设计为特别可扩展的,以便在 不改变Darling本身的情况下。这意味着新的包相关工具可以为Darling添加自己的支持。Darling使用一个非常特定的协议来创建模块。过程如下
- 创建一个Rust (库) 项目。 它必须以
darling
开头。例如,cargo new darling-example
- 使用
cargo add darling-api
将darling-api
添加到依赖项中。 - 创建一个空的struct,该struct实现了
darling::PackageManager
- 确保函数
get_name()
在所有调用中返回一致的值,并且 不要返回 "module"。module
是 darling 用来管理自身的内置保留名称。它应该对其他 darling 模块是唯一的,否则它们将不兼容。通常将其作为你的 crate 名称,不包括darling-
前缀。例如,`darling
- 确保函数
- 使用名称
PACKAGE_MANAGER
声明你的结构体的pub static
变量,使其可以从 crate 根目录访问。 - 使用
cargo publish
在crates.io
上发布你的 crate。
依赖关系
~5–16MB
~163K SLoC