在SourceForge上面创建Deb软件包存储库是一种以结构化且易于管理的方式向用户分发Debian或Ubuntu软件包的好方法,当前在Linux社区较为流行。
在本文中,小编将使用Reprepro工具在Sourceforge创建Deb软件包存储库。Reprepro是一个功能强大的软件,可帮助管理基于Debian发行版的存储库,下面一起来看看吧。
先决条件
在开始之前,需要满足以下基本条件:
- 基于Debian或Ubuntu系统
- 已注册SourceForge帐户
- Reprepro已安装在本地机器上
- 已准备好上传的Deb包
步骤1:在SourceForge上创建项目
如果尚未在SourceForge上创建项目,请访问SourceForge并单击“Create”来创建一个项目,然后填写新项目所需的详细信息,例如名称、说明和类别。
接下来填写你项目名称和URL地址(需要已注册SourceForge账号):
一旦项目创建完成,SourceForge将允许你访问文件存储库,这里可以在其中上传你的文件:
接下来,需要将SSH公钥添加到SourceForge,以启用上传文件的SSH访问功能。首先,使用以下命令在系统上生成SSH公钥:
ssh-keygen -t rsa -b 4096
生成SSH密钥后,复制公钥内容(~/.ssh/id_rsa.pub)并将其粘贴到SourceForge中的我的帐户–> SSH设置下的SSH设置中,如下图所示:
步骤2:安装Reprepro并生成密钥
在本地系统上,通过运行以下命令安装Reprepro和gnupg包:
sudo apt update sudo apt install reprepro gnupg
现在需要使用gnupg命令生成一个gpg密钥,命令如下:
gpg --gen-key
它会问你一些问题,比如你想要什么类型的密钥,以及密钥的有效期是多长,如果你不知道该回答什么,只需按Enter键获取默认选项即可(推荐)。
当然,系统会要求输入用户名和密码,一定要记住这些,因为稍后会需要它们。
一旦生成密钥,可以通过以root权限运行以下命令来验证它:
sudo gpg --list-keys
步骤3:创建存储库的目录结构
这里需要创建一个目录结构来存储你的存储库文件,假设你正在为Ubuntu和Debian软件包设置存储库,那么需要创建一个目录和必要的子目录:
mkdir -p ~/deb-repo/{conf,dists,incoming,pool}
这些目录的用途如下所示:
- conf:此目录保存你的存储库的配置文件
- dists:包含特定于分布的文件(例如bionic,focal等)
- incoming:传入包的临时文件夹
- pool:存储实际的包文件
现在,在conf目录中创建一个配置文件,命令如下:
nano ~/deb-repo/conf/distributions
添加以下内容:
Origin: Ravi Saive Label: My Awesome Repo Suite: stable Codename: focal Architectures: amd64 source Components: main Description: A repository of custom Debian packages for my projects SignWith: yes
你可以用你自己的的Ubuntu或Debian发行版的名称替换focal
,比如focal
或bullseye
,SignWith
选项用于使用GPG密钥对你的软件源进行签名。
接下来,创建另一个名为reprepro.conf的配置文件。
nano ~/deb-repo/conf/reprepro.conf
将以下行添加到reprepro.conf:
verbose basedir .
该文件告诉Reprepro在哪里找到它的文件。
步骤4:将软件包添加到新创建的存储库
现在是时候将Debian软件包(.deb文件)添加到存储库了,你可以创建自己的软件包或下载现有的软件包。
对于本示例,假设你有一个名为fastfetch-linux-amd64.deb包,现在将这个.deb包移动到packages
目录中:
mv /home/ravi/fastfetch-linux-amd64.deb ~/mydebrepo/packages/
现在,将使用以下命令将此包添加到你的存储库:
cd mydebrepo reprepro -b . includedeb focal ~/mydebrepo/packages/fastfetch-linux-amd64.deb
步骤5:在Sourceforge上发布存储库
要将mydebrepo
存储库上传到Sourceforge,当然需要在那上面有一个运行的帐户和一个正在运行的项目,假设需要将存储库上传到http://sourceforge.net/projects/tecmint/,其中tecmint
是你自己的项目名称,则可以使用以下rsync命令:
rsync -avz -e "ssh" ~/mydebrepo ravisaive@frs.sourceforge.net:/home/frs/project/tecmint/
确保将你的用户名替换为你在sourceforge上的用户名,将tecmint替换为你的项目UNIX名称,并且将mydebrepo替换为你想要存储文件的文件夹名称。
步骤6:将存储库添加到客户端
现在存储库已设置完毕,可以将其添加到客户端机器,以便用户可以从中下载软件包。在你想要使用存储库的任何Ubuntu机器上,打开终端并运行:
echo "deb [trusted=yes] http://sourceforge.net/projects/tecmint/mydebrepo focal main" | sudo tee /etc/apt/sources.list.d/mydebrepo.list
接下来更新软件包列表:
sudo apt update
现在你的存储库已可供使用了,其它用户可以使用标准apt install命令安装你添加的软件包。