RPM
打包为 RPM
本指南介绍了如何分发和管理 RPM 软件包,包括获取软件包信息、配置脚本、设置依赖关系和签名软件包。
RPM 包配置
Tauri 允许您通过添加脚本、设置依赖项、添加许可证、包含自定义文件等来配置 RPM 软件包。 有关可配置选项的详细信息,请参考:RpmConfig。
添加 post、pre-install/remove 脚本到安装包
RPM 软件包管理器允许您在安装或删除软件包之前或之后运行脚本。例如,您可以使用这些脚本在软件包安装后启动一个服务。
下面是添加这些脚本的示例:
- 在项目的
src-tauri
目录下创建一个名为scripts
的文件夹。
mkdir src-tauri/scripts
- 在文件夹中创建脚本文件。
touch src-tauri/scripts/postinstall.sh \touch src-tauri/scripts/preinstall.sh \touch src-tauri/scripts/preremove.sh \touch src-tauri/scripts/postremove.sh
现在如果我们查看 /src-tauri/scripts
,我们将看到。
ls src-tauri/scripts/postinstall.sh postremove.sh preinstall.sh preremove.sh
- 向脚本添加一些内容。
echo "-------------"echo "This is pre"echo "Install Value: $1"echo "Upgrade Value: $1"echo "Uninstall Value: $1"echo "-------------"
echo "-------------"echo "This is post"echo "Install Value: $1"echo "Upgrade Value: $1"echo "Uninstall Value: $1"echo "-------------"
echo "-------------"echo "This is preun"echo "Install Value: $1"echo "Upgrade Value: $1"echo "Uninstall Value: $1"echo "-------------"
echo "-------------"echo "This is postun"echo "Install Value: $1"echo "Upgrade Value: $1"echo "Uninstall Value: $1"echo "-------------"
- 将脚本添加到
tauri.conf.json
文件中
{ "bundle": { "linux": { "rpm": { "epoch": 0, "files": {}, "release": "1", // 在此添加脚本 "preInstallScript": "/path/to/your/project/src-tauri/scripts/prescript.sh", "postInstallScript": "/path/to/your/project/src-tauri/scripts/postscript.sh", "preRemoveScript": "/path/to/your/project/src-tauri/scripts/prescript.sh", "postRemoveScript": "/path/to/your/project/src-tauri/scripts/postscript.sh" } } }}
设置 Conflict、 Provides、 Depends、 Files、 Obsoletes、 DesktopTemplate 和 Epoch
-
conflict:防止安装与另一个包冲突的包。 例如,如果您更新了应用程序所依赖的 RPM 包,但新版本与您的应用程序不兼容。
-
provides:列出应用程序提供的 RPM 依赖项。
-
depends:列出应用程序运行所需的 RPM 依赖项。
-
files:指定包中包含的文件。
-
obsoletes:列出您的应用程序废弃的 RPM 依赖项。
-
desktopTemplate:向包中添加自定义桌面文件。
-
epoch:基于版本号定义加权依赖关系。
要使用这些选项,请将以下内容添加到你的 tauri.conf.json
文件中。
{ "bundle": { "linux": { "rpm": { "postRemoveScript": "/path/to/your/project/src-tauri/scripts/postscript.sh", "conflicts": ["oldLib.rpm"], "depends": ["newLib.rpm"], "obsoletes": ["veryoldLib.rpm"], "provides": ["coolLib.rpm"], "desktopTemplate": "/path/to/your/project/src-tauri/desktop-template.desktop" } } }}
给包添加一个许可证
要给包添加许可证,请将以下内容添加到 src-tauri/cargo.toml
或者 src-tauri/tauri.conf.json
文件中:
[package]name = "tauri-app"version = "0.0.0"description = "A Tauri App"authors = ["you"]edition = "2021"license = "MIT" # add the license here# ... rest of the file
对于 src-tauri/tauri.conf.json
{ "bundle": { "licenseFile": "../LICENSE", // 将许可证文件路径放在此 "license": "MIT" // 将许可证添加在此 }}
构建 RPM 包
要构建 RPM 包,你可以使用以下命令。
npm run tauri build
yarn tauri build
pnpm tauri build
cargo tauri build
这个命令会在 src-tauri/target/release/bundle/rpm
目录下构建 RPM 包。
签名 RPM 包
Tauri 允许您在构建过程中使用系统中的密钥对包进行签名。为此,你需要生成一个 GPG 密钥。
生成 GPG 密钥
要生成 GPG 密钥,可以使用以下命令。
gpg --gen-key
按照说明生成密钥。
生成密钥后,需要将其添加到环境变量中。 你可以将以下内容添加到 .bashrc 或 .zshrc 文件中,或者直接在终端中导出。
export TAURI_SIGNING_RPM_KEY=$(cat /home/johndoe/my_super_private.key)
如果密钥有密码,可以将其添加到环境变量中。
export TAURI_SIGNING_RPM_KEY_PASSPHRASE=password
现在你可以使用以下命令构建包。
npm run tauri build
yarn tauri build
pnpm tauri build
cargo tauri build
验证签名
在验证签名之前,需要先创建并导入公钥到 RPM 数据库。
gpg --export -a 'Tauri-App' > RPM-GPG-KEY-Tauri-App
sudo rpm --import RPM-GPG-KEY-Tauri-App
现在密钥已经导入,我们必须编辑 ~/.rpmmacros
文件来使用密钥。
%_signature gpg%_gpg_path /home/johndoe/.gnupg%_gpg_name Tauri-App%_gpgbin /usr/bin/gpg2%__gpg_sign_cmd %{__gpg} \ gpg --force-v3-sigs --digest-algo=sha1 --batch --no-verbose --no-armor \ --passphrase-fd 3 --no-secmem-warning -u "%{_gpg_name}" \ -sbo %{__signature_filename} %{__plaintext_filename}
最后,你可以使用以下命令来验证这个包。
rpm -v --checksig tauri-app-0.0.0-1.x86_64.rpm
调试 RPM 包
在本节中,我们将看到如何通过检查 RPM 包的内容来调试 RPM 包以及获取有关包的信息。
获取关于包的信息
要获取有关包的信息,如版本、发行版和架构, 使用下面的命令:
rpm -qip package_name.rpm
查询包的详细信息
例如,如果你想获取包的名称、版本、发行版、架构和大小,可以使用以下命令。
rpm -qp --queryformat '[%{NAME} %{VERSION} %{RELEASE} %{ARCH} %{SIZE}\n]' package_name.rpm
检查包的内容
要检查包的内容,可以使用以下命令。
rpm -qlp package_name.rpm
该命令将列出该包中包含的所有文件。
调试脚本
要调试 post/pre-install/remove 脚本,使用以下命令。
rpm -qp --scripts package_name.rpm
这个命令会打印脚本的内容。
检查依赖关系
要检查包的依赖关系,使用以下命令。
rpm -qp --requires package_name.rpm
列出依赖于特定包的包
要列出依赖于特定包的包,可以使用以下命令。
rpm -q --whatrequires package_name.rpm
调试安装问题
如果您在安装 RPM 包期间遇到问题,
你可以使用 -vv
(very verbose)选项来获得详细的输出。
rpm -ivvh package_name.rpm
或者对于已经安装的包。
rpm -Uvvh package_name.rpm
© 2024 Tauri Contributors. CC-BY / MIT