跳过内容
Tauri

RPM

RPM打包

本指南涵盖了如何分发和管理RPM软件包,包括检索软件包信息、配置脚本、设置依赖关系和签名软件包。

配置RPM软件包

Tauri允许您通过添加脚本、设置依赖关系、添加许可证、包含自定义文件等方式配置RPM软件包。有关可配置选项的详细说明,请参阅:RpmConfig

向软件包添加post安装/移除脚本

RPM软件包管理器允许您在软件包的安装或移除前后运行脚本。例如,您可以使用这些脚本在软件包安装后启动服务。

以下是一个如何添加这些脚本的示例

  1. 在项目中的src-tauri目录中创建一个名为scripts的文件夹。
终端窗口
mkdir src-tauri/scripts
  1. 在该文件夹中创建脚本文件。
终端窗口
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
  1. 向脚本中添加一些内容
preinstall.sh
echo "-------------"
echo "This is pre"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
postinstall.sh
echo "-------------"
echo "This is post"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
preremove.sh
echo "-------------"
echo "This is preun"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
postremove.sh
echo "-------------"
echo "This is postun"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
  1. 将脚本添加到tauri.conf.json文件中
tauri.conf.json
{
"bundle": {
"linux": {
"rpm": {
"epoch": 0,
"files": {},
"release": "1",
// add the script here
"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

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.tomlsrc-tauri/tauri.conf.json 文件中

src-tauri/cargo.toml
[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

src-tauri/tauri.conf.json
{
"bundle": {
"licenseFile": "../LICENSE", // put the path to the license file here
"license": "MIT" // add the license here
}
}

构建RPM软件包

要构建 RPM 包,可以使用以下命令

npm run 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

验证签名

在验证签名之前,您需要创建并将公钥导入 RPM 数据库

终端窗口
gpg --export -a 'Tauri-App' > RPM-GPG-KEY-Tauri-App
终端窗口
sudo rpm --import RPM-GPG-KEY-Tauri-App

现在,密钥已导入,我们必须编辑 ~/.rpmmacros 文件以利用该密钥。

~/.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 -qip package_name.rpm

查询软件包的特定信息

例如,如果您想获取包的名称、版本、发布、体系结构和大小,请使用以下命令

终端窗口
rpm -qp --queryformat '[%{NAME} %{VERSION} %{RELEASE} %{ARCH} %{SIZE}\n]' package_name.rpm

检查软件包内容

要检查包的内容,请使用以下命令

终端窗口
rpm -qlp package_name.rpm

此命令将列出包中包含的所有文件。

调试脚本

要调试安装前/后安装/移除脚本,请使用以下命令

终端窗口
rpm -qp --scripts package_name.rpm

此命令将打印脚本的输出内容。

检查依赖关系

要检查包的依赖关系,请使用以下命令

终端窗口
rpm -qp --requires package_name.rpm

列出依赖特定软件包的软件包

要列出依赖于特定包的包,请使用以下命令

终端窗口
rpm -q --whatrequires package_name.rpm

调试安装问题

如果在 RPM 包的安装过程中遇到问题,您可以使用 -vv (非常详细) 选项来获取详细的输出

终端窗口
rpm -ivvh package_name.rpm

或者对于已安装的包

终端窗口
rpm -Uvvh package_name.rpm

© 2025 Tauri 贡献者。 CC-BY / MIT