#包管理器 #应用程序 #跨平台 #最新版本 #安装 #系统 #项目

程序+库 clyde

预构建应用程序的跨平台包管理器

11 个版本 (7 个重大更新)

0.8.0 2024年6月16日
0.6.0 2023年12月28日
0.5.0 2023年3月20日
0.4.1 2022年11月30日
0.2.1 2022年7月28日

#823 in 命令行工具

Download history 190/week @ 2024-06-16 4/week @ 2024-06-23 11/week @ 2024-06-30 130/week @ 2024-07-28 4/week @ 2024-08-04

每月134 次下载

GPL-3.0-or-later

240KB
6K SLoC

Rust 5K SLoC // 0.1% comments BASH 383 SLoC Python 308 SLoC // 0.3% comments PowerShell 138 SLoC Elvish 115 SLoC Shell 47 SLoC // 0.2% comments SQL 9 SLoC

Clyde

Clyde 是预构建应用程序的包管理器。

它在 Linux、macOS 和 Windows 上运行。

Clyde demo

动机

您想安装 ripgrep、fd 或 fzf 等工具的最新版本,但

  • 它们在您的发行版中不可用,或者可用的版本太旧,您不想破坏您的系统。
  • 您不想考虑在哪里安装它们,添加到 $PATH 或使它们的 man 页面可用。
  • 当需要更新它们时,您不想记得如何安装它们。

您没有在需要这些工具的机器上拥有 root 权限,因此安装系统包不是一个选择。

您想将工具版本固定以创建可重复的平台。

您担心供应链攻击(请参阅安全部分)。

入门

安装 Clyde

要开始,您需要自己下载 Clyde 二进制文件。Clyde 可以更新自身,但首先需要手动安装。您可以

  • 发布页面 下载预构建的存档。

  • https://builds.agateau.com/clyde 下载 main 分支的预构建存档。

  • 自行构建。Clyde是用 Rust 编写的,所以如果您已安装 Rust 工具链,则可以使用 cargo install clyde 安装它。

接下来,确保已安装 git:Clyde 使用 git 下载和更新 Clyde 商店(此要求可能在将来取消)。

设置您的 Clyde 主目录

Clyde 在“Clyde 主目录”中安装所有应用程序:在您的家目录默认缓存目录中创建的目录。

假设您已下载了 Clyde 存档,解压缩并切换到其目录。

运行 ./clyde setup。这将在其中创建 Clyde 主目录,并克隆 Clyde Store

$ ./clyde setup
[I] Setting up Clyde in "/home/demo/.cache/clyde"
Cloning into '/home/demo/.cache/clyde/store'...
remote: Enumerating objects: 1790, done.
remote: Counting objects: 100% (1790/1790), done.
remote: Compressing objects: 100% (653/653), done.
remote: Total 1790 (delta 1132), reused 1745 (delta 1113), pack-reused 0
Receiving objects: 100% (1790/1790), 499.73 KiB | 123.00 KiB/s, done.
Resolving deltas: 100% (1132/1132), done.
[I] Creating Clyde database
[I] Creating activation script

All set! To activate your Clyde installation, add this line to your shell startup script:

. /home/demo/.cache/clyde/scripts/activate.sh

将创建的激活脚本添加到您的 shell 启动脚本中,并重新启动您的 shell。

您现在可以开始使用Clyde了。让我们安装ripgrep。

clyde install ripgrep

检查它是否运行正常。

rg --help

检查您是否能阅读它的man页。

man rg

检查自动补全是否工作正常。

$ rg --regex<tab>
--regexp            -- specify pattern
--regex-size-limit  -- specify upper size limit of compiled regex

命令

clyde setup

设置Clyde:设置Clyde存储库,并创建一个激活脚本。所有更改都在“Clyde前缀”中完成(请参阅“文件夹层次结构”部分)。

Clyde存储库包含Clyde可以安装的所有包的列表。

clyde search foobar

在Clyde存储库中搜索名称或描述中包含“foobar”的包。

clyde install foobar[@版本]

安装foobar包,如果设置了@version限制,则遵循该限制。

@version语法遵循Cargo对语义版本的解释

这使得语法有点令人惊讶:clyde install foobar@1.2.3可以安装1.2.4版本,甚至1.3.0版本,因为Cargo认为它们是兼容的。

要真正固定版本,您必须使用foobar@=1.2.3。要安装最新的1.2版本,使用'foobar@1.2.*'foobar@~1.2

这种语法可能会在未来发生变化。

clyde uninstall foobar

卸载foobar包。也可以称为clyde remove foobar

clyde show foobar

显示有关foobar包的详细信息。

clyde update

更新Clyde存储库,以便Clyde了解新包或现有包的新版本的可用性。

clyde upgrade

将所有包升级到最新版本。如果包使用@version限制安装,则强制执行该限制。

clyde doc foobar

显示foobar包提供的文档文件列表。让您选择一个,并用合适的应用程序阅读它。

clyde doc会查找一个分页器来显示文本文件。您可以在$CLYDE_PAGER$PAGER中设置一个。如果没有设置这些变量,它将回退到一个硬编码的分页器程序列表。

常见问题解答

Clyde是否比curl <url> | bash更安全?

是的,但您仍然需要小心。

它更安全,因为Clyde检查所有下载的存档的完整性(Clyde存储库包含所有已知存档的sha256校验和),这使得攻击者更难欺骗您安装损坏的存档。

这意味着如果攻击者控制了一个应用开发者的GitHub账户,并用其他存档替换了某些发布工件,Clyde将拒绝安装它们。然而,它并不能保护您免受攻击者发布应用程序新版本的情况。为了防止这种情况,您需要固定版本号。

Clyde不提供应用程序沙盒。

Clyde包是由Clyde构建的吗?

不,Clyde安装应用程序开发者生成的二进制文件,而不是重新构建它们(与Homebrew等项目不同)。

这意味着即使Clyde正确安装了软件包,也不能保证软件包能在您的机器上运行。这在旧的Linux安装中尤其如此:由应用程序开发者负责提供适用于您的系统的二进制文件。

如果某个软件包以前可以运行,但新版本不行,则可以使用@version语法将安装固定到最新的可用版本。

Clyde软件包列表存储在哪里?

Clyde软件包在Clyde Store仓库中定义。clyde setup将在您的机器上克隆此仓库。clyde update将从中拉取最新的更改。

我如何请求新的软件包?

Clyde商店仓库上提交一个问题。

我如何添加新的软件包?

遵循创建软件包文档

类似项目

还有其他与Clyde类似的项目。本节列出了其中一些,以及它们与Clyde的不同之处。

  • Homebrew:

    • 二进制文件由Homebrew构建,而不是由应用程序开发者构建(这并不一定是坏事,只是不同的方法)。
    • 不支持Windows。
    • 对固定版本的不可靠支持。
  • Hermit:

    • 更侧重于维护一组用于构建项目的工具。
    • 没有软件包完整性检查。
    • 不支持Windows。
    • 没有手册页集成。
  • Huber:

    • 没有软件包完整性检查。
    • 仅适用于GitHub项目。
    • 没有手册页集成。
    • 默认软件包列表在应用程序中硬编码。

依赖关系

~79MB
~1.5M SLoC