在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 创建一个 _.deb 软件包存储库_在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 创建一个 _.deb 软件包存储库_在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 创建一个 _.deb 软件包存储库_在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 创建一个 _.deb 软件包存储库_
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 创建一个 _.deb 软件包存储库_

作为软件开发人员,您可能需要将软件分发给不同的用户。在 Ubuntu 中分发软件的常见方法之一是创建 Debian 软件包 (.deb) 并将其上传到软件包存储库。软件包存储库是托管在服务器上的 Debian 软件包的集合,可用于在 Ubuntu 计算机上安装和更新软件。在本文中,我们将向您展示如何使用 Reprepro 工具创建 .deb 包存储库并将其托管在 SourceForge.net 上。

先决条件

  • Ubuntu 18.04 或更高版本

  • 根权限

  • Ubuntu包管理基础知识

第 1 步:安装 Reprepro

Reprepro 是一个可用于管理包存储库的工具。要在 Ubuntu 上安装 Reprepro,请打开终端并运行以下命令 -

sudo apt-get update
sudo apt-get install reprepro

第 2 步:准备您的包裹

在将包添加到存储库之前,您需要创建它们。要创建包,您需要编写控制文件和规则文件,它们描述包以及如何构建它。创建包后,您可以使用 dpkg-buildpackage 命令构建它。有关如何创建 Debian 软件包的更多信息,请参阅官方 Debian 打包指南。

第三步:创建存储库目录

您需要创建一个目录来存储您的包和存储库信息。在此示例中,我们将创建一个名为“myrepo”的目录。

sudo mkdir /var/www/html/myrepo
cd /var/www/html/myrepo
sudo mkdir -p dists/bionic/main/binary-amd64

第四步:初始化存储库

现在您有了一个存储包的目录,您可以使用以下命令初始化存储库 -

sudo reprepro -Vb . init

这将为存储库创建必要的文件和目录。

第 5 步:将包添加到存储库

要将包添加到存储库,请将它们复制到“myrepo”目录并运行以下命令 -

sudo reprepro -Vb . includedeb bionic /path/to/package.deb

将“/path/to/package.deb”替换为包的路径。这会将包添加到存储库中的“bionic”发行版中。

第 6 步:更新存储库

将软件包添加到存储库后,您需要使用以下命令更新它 -

sudo reprepro -Vb . update

这将使用新包更新存储库。

第 7 步:对存储库进行签名

为了确保存储库中的包没有被篡改,您应该使用 GPG 密钥对存储库进行签名。如果您没有 GPG 密钥,可以使用以下命令生成一个 -

gpg --gen-key

要签署存储库,请运行以下命令 -

sudo reprepro -Vb . sign

这将使用您的 GPG 密钥对存储库进行签名。

第 8 步:配置 Apache Web 服务器

要在 SourceForge.net 上托管软件包存储库,您需要配置 Apache Web 服务器。首先,安装 Apache -

sudo apt-get install apache2

接下来,启用必要的模块 -

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html

然后,在 /etc/apache2/sites-available/ 目录中创建虚拟主机配置文件。例如,如果您想在 http://packages.example.com 托管软件包存储库,您可以创建一个名为packages.example.com.conf 的文件,其中包含以下内容 -

sudo nano /etc/apache2/sites-available/packages.example.com.conf
<VirtualHost *:80>
    ServerName packages.example.com
    DocumentRoot /var/www/html
    RewriteEngine on
    RewriteRule ^/reprepro(.*) /reprepro$1 [R,L]
</VirtualHost>

此配置文件指定虚拟主机侦听端口 80 并提供 /var/www/html 目录中的文件。 RewriteRule 用于将对 /reprepro URL 路径的请求重写为实际的 reprepro 存储库目录。

通过创建指向已启用站点的目录的符号链接来启用虚拟主机 -

sudo ln -s /etc/apache2/sites-available/packages.example.com.conf /etc/apache2/sites-enabled/

重新启动 Apache Web 服务器以使更改生效 -

sudo systemctl restart apache2

您现在可以通过 http://packages.example.com/reprepro/ 访问包存储库。

第 9 步:将包添加到存储库

现在存储库已设置完毕,您可以开始向其中添加包。下面是如何做到这一点 -

  • 将 .deb 包文件放入传入目录中 -

sudo mv /path/to/package.deb /srv/packages.example.com/reprepro/incoming/
sudo chown reprepro:reprepro /srv/packages.example.com/reprepro/incoming/package.deb
  • 将包导入到存储库中 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro includedeb buster /srv/packages.example.com/reprepro/incoming/package.deb
In this example, "buster" is the distribution name, which can be changed to match the name of the distribution you are using.
  • 更新存储库 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro update
  • 发布包 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro publish

就是这样!您的包现已在包存储库中可用。

步骤 10:更新存储库中的包

如果您需要更新存储库中的包,可以按照以下步骤进行操作 -

  • 将更新的 .deb 包文件放入传入目录中 -

sudo mv /path/to/updated_package.deb /srv/packages.example.com/reprepro/incoming/
sudo chown reprepro:reprepro /srv/packages.example.com/reprepro/incoming/updated_package.deb
  • 将更新的包导入存储库 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro includedeb buster /srv/packages.example.com/reprepro/incoming/updated_package.deb
  • 更新存储库 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro update
  • 发布更新的包 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro publish

就是这样!您更新的包现在可以在包存储库中找到。

第 11 步:从存储库中删除包

如果您需要从存储库中删除包,可以按照以下步骤操作 -

  • 从存储库中删除包 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro remove buster package_name

在此示例中,“buster”是发行版名称,可以更改该名称以匹配您正在使用的发行版的名称。 “package_name”是您要删除的包的名称。

  • 更新存储库 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro update
  • 发布更改 -

sudo -u reprepro reprepro -Vb /srv/packages.example.com/reprepro publish

就是这样!该包已从存储库中删除。

结论

在本文中,您学习了如何在 Ubuntu 上使用 Reprepro 工具设置 Debian 软件包存储库。您学习了如何创建存储库、向其中添加包、更新包以及从中删除包。您还学习了如何配置 Apache Web 服务器来托管包存储库。有了这些技能,您现在可以设置自己的软件包存储库,以将软件分发给您的客户、同事或更广泛的社区。

©2015-2025 艾丽卡 support@alaica.com