您想要构建自己的本地存储库的原因有多种。这是创建本地镜像存储库以缓存许多计算机使用的常用软件包以节省带宽使用的好方法,或者您可能希望在内部为开发团队提供一些修改过的软件包。
在本教程中,我们将向您展示如何轻松创建与 Debian 和 Ubuntu 版本兼容的本地 Debian 软件包存储库。
第 1 步:安装所需的包
在基于 Debian 的系统上,所有存储库都由APT实用程序(apt、apt-get、apt-cache 等)管理。创建与 APT 兼容的本地存储库需要 dpkg-dev 软件包。
首先使用以下命令更新系统包:
$ sudo apt update && sudo apt upgrade
接下来通过键入以下内容安装dpkg-dev软件包:
$ sudo apt-get install dpkg-dev
包安装完成后,继续为包文件创建目录。
第 2 步:为本地存储库创建目录
创建一个目录来保存二进制包。对于此示例,我们将使用 /opt/local/debs,但您可以使用任何您喜欢的目录。
$ sudo mkdir -p /opt/local/debs
接下来,更改目录:
$ cd /opt/local/debs
第 3 步:将包添加到本地存储库目录
出于本教程的目的,我们将 chrome-browser 包下载到我们的本地存储库,因为在默认的 Ubuntu 存储库中找不到它:
$ sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
在此步骤中,您可以复制或下载任意数量的包。
第 4 步:为 APT 创建所需的存储库包元
为此,我们必须运行几个 dpkg-scanpackages 命令。我将切换到 root 用户帐户,因为我正在使用 /opt/local 目录来跳过使用 sudo。
$ sudo su
首先,我们将通过运行以下命令创建一个 Release 文件:
# dpkg-scanpackages . /dev/null > Release
根据您添加到本地存储库的软件包数量,您应该会获得类似的输出:
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: google-chrome-stable
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
接下来扫描目录下的所有deb文件,并创建一个合适的Packages.gz文件
# dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
输出:
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: google-chrome-stable
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
请注意,每次将新的 deb 包添加到本地存储库目录时,都必须运行这些命令。您还可以创建一个简单的 bash 脚本并在添加新包时运行它。
要列出本地 repo 目录结构,请运行 ls 命令:
$ ls -l
输出:
-rw-r--r-- 1 root root 83325072 May 8 02:29 google-chrome-stable_current_amd64.deb
-rw-r--r-- 1 root root 761 May 17 20:44 Packages.gz
-rw-r--r-- 1 root root 1321 May 17 20:39 Release
第 5 步:将我们的本地存储库添加到 Sources.list
最后一步是编辑 sources.list 文件。使用您选择的编辑器编辑文件:
$ sudo nano /etc/apt/sources.list
将以下行添加到您的 /etc/apt/sources.list:
deb [trusted=yes] file:/opt/local/debs ./
现在我们将测试我们的本地存储库。
第 6 步:验证
我们可以通过从本地存储库安装或删除包来验证。
首先我们必须更新软件包:
$ sudo apt-get update
现在我们像往常一样使用 apt-get 安装我们的包:
$ sudo apt-get install google-chrome-stable
现在您的本地软件包可以使用 Synaptic、aptitude 和 apt 命令安装、更新和删除:apt-get、apt-cache 等。当您运行 apt-get install 时,任何依赖项都将被解析并为您安装,只要因为他们可以满足。
我们可以像删除系统上任何已安装的软件包一样轻松地删除已安装的软件包:
$ sudo apt-get remove google-chrome-stable
结论
在本教程中,我们学习了如何创建自己的本地 Debian 存储库以及在本地添加/删除软件包。这些步骤适用于大多数基于 Debian 的发行版。