16 个版本 (稳定版)
2.2.0 | 2023年11月27日 |
---|---|
2.0.1 | 2023年6月30日 |
1.4.2 | 2022年4月7日 |
1.4.0 | 2022年1月23日 |
0.1.2 | 2021年5月7日 |
在 Cargo 插件 中排名第 135
每月下载量 154 次
19KB
312 行代码(不包括注释)
Cargo AppImage
这是一个 cargo 程序,允许您将 Rust 程序转换为 AppImage。
安装
- 请确保
appimagetool
在您的路径中。它可以从 这里 下载 - 使用以下命令安装此程序
cargo install cargo-appimage
-
在您的 crate 根目录下,使用
cd
创建一个名为 icon.png 的图标- 注意:这可以是一个空文件,用于开发。实际上,如果您忘记创建它,系统会自动生成一个空文件。
-
(可选)在您的 Cargo.toml 中创建一个类似于以下内容的部分,以便将任何额外的资源添加到 AppImg
[package.metadata.appimage] assets = ["images", "sounds"]
-
(可选)如果您使用的外部 crate 使用其他程序或不是用纯 Rust 编写的,您可能需要检查是否需要将一些共享库嵌入到您的 AppImage 中
- 通过在您的 Cargo.toml 中使用此选项运行
cargo appimage
将自动创建一个名为 libs 的文件夹,并将您的 Rust 程序使用的所有共享对象放在相应的目录中。
[package.metadata.appimage] auto_link = true
-
AppImage 不应该包含可执行文件链接到的所有库,因此您可以选择以下任一方法:
-
手动删除您期望在所有 Linux 系统上存在的库(例如 libc、libgcc、libpthread、ld-linux、libdl 等),然后从 Cargo.toml 中删除
auto_link
选项并重新构建。然后应将 libs 文件夹中剩余的库嵌入到 Appimage 中。 -
或者,使用
auto_link_exclude_list
选项指定要排除的 glob 模式列表。例如
[package.metadata.appimage] auto_link = true auto_link_exclude_list = [ "libc.so*", "libdl.so*", "libpthread.so*", ]
在下一次构建中,只有与glob模式不匹配的库文件将被嵌入到Appimage中。
-
- 通过在您的 Cargo.toml 中使用此选项运行
-
运行此命令
cargo appimage
- 注意所有传递给cargo-appimage的参数都将重定向到cargo
cargo appimage --features=min
Docker
显然这个Dockerfile
是有效的
FROM rust:slim
RUN cargo install cargo-appimage
# file package is required by appimagetool
RUN apt-get update && apt-get install -y --no-install-recommends file wget
# Download appimagetool
RUN wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool
RUN chmod +x /usr/local/bin/appimagetool
# Path appimagetool magic byte: https://github.com/AppImage/pkg2appimage/issues/373#issuecomment-495754112
RUN sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool
# Use appimagetool without fuse: https://github.com/AppImage/AppImageKit/wiki/FUSE#docker
RUN APPIMAGE_EXTRACT_AND_RUN=1 cargo appimage
依赖项
~1.7–2.7MB
~52K SLoC