在 Ubuntu 中使用 _Reprepro_ 工具在 Sourceforge.net 上建立 _.deb 軟體包倉庫_


作為軟體開發人員,您可能需要將您的軟體分發給不同的使用者。在 Ubuntu 中分發軟體的常用方法之一是建立 Debian 軟體包(.deb)並將其上傳到軟體包倉庫。軟體包倉庫是在伺服器上託管的 Debian 軟體包的集合,可用於在 Ubuntu 機器上安裝和更新軟體。在本文中,我們將向您展示如何使用 Reprepro 工具建立 .deb 軟體包倉庫並在 SourceForge.net 上託管它。

先決條件

  • Ubuntu 18.04 或更高版本

  • root 許可權

  • Ubuntu 軟體包管理的基本知識

步驟 1:安裝 Reprepro

Reprepro 是一個可用於管理軟體包倉庫的工具。要在 Ubuntu 上安裝 Reprepro,請開啟終端並執行以下命令:

sudo apt-get update
sudo apt-get install reprepro

步驟 2:準備您的軟體包

在將軟體包新增到倉庫之前,您需要建立它們。要建立軟體包,您需要編寫一個控制檔案和一個規則檔案,這些檔案描述軟體包以及如何構建它。建立軟體包後,您可以使用 dpkg-buildpackage 命令構建它。有關如何建立 Debian 軟體包的更多資訊,請參閱 Debian 官方打包指南。

步驟 3:建立倉庫目錄

您需要建立一個目錄來儲存您的軟體包和倉庫資訊。在本例中,我們將建立一個名為“myrepo”的目錄。

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

步驟 4:初始化倉庫

現在您已有一個目錄來儲存您的軟體包,您可以使用以下命令初始化倉庫:

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 倉庫目錄。

透過建立指向 sites-enabled 目錄的符號連結來啟用虛擬主機:

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 軟體包檔案放在 incoming 目錄中:

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 軟體包檔案放在 incoming 目錄中:

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 伺服器以託管軟體包倉庫。有了這些技能,您現在可以設定自己的軟體包倉庫,以便將軟體分發給您的客戶、同事或更廣泛的社群。

更新於:2023年6月23日

194 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告