如何使用基于 Debian 的 Linux 发行版快速为随机软件包创建本地 apt 存储库?

如何使用基于 Debian 的 Linux 发行版快速为随机软件包创建本地 apt 存储库?

有些情况需要使用 手动安装本地包dpkg -i <packagename>。有时,利用该包的功能可能会更有用,apt所以问题是:

如何使用基于 Debian 的 Linux 发行版(例如 Xubuntu 13.04/Ubuntu)快速为随机软件包创建本地存储库?

答案1

这应该与您尝试的情况区分开来复制完整的包树来自官方存储库和微调源优先级。随机包是指虚拟包,即本地编译的包或出于测试目的以零碎方式复制的包。这是基于现在的简单设置过时的文档

首先,创建一个目录来托管软件包:

mkdir <packagedir>

然后将您的 .deb 包文件移到那里。从我们刚刚创建的目录上方的目录执行此命令(确保权限允许这样做!):

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

.list现在创建一个扩展名为in 的文件,/etc/apt/sources.list.d/内容如下:

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

并更新 apt 数据库:

apt-get update

此时,可以像使用任何其他包一样安装本地存储库中的包apt-get install <packagename>。当新的包添加到本地存储库时,dpkg-scanpackages必须再次发出规定的命令来更新包包.gz文件,并且apt必须在新软件包可用之前进行更新。希望这对您有用测试目的。

答案2

尽管类似的答案已经存在AU上有几个类似的答案另外,我发布这个答案是为了建议使用apt-ftparchive而不是dpkg-scanpackages

为什么apt-ftparchive而不是dpkg-scanpackages

  • dpkg-scanpackages命令是由dpkg-dev软件包提供的,该软件包不附带发行版的安装映像,根据我的观察,它可能没有安装在您的计算机上。您首先需要安装dpkg-dev软件包才能使用该dpkg-scanpackages命令。设置本地存储库的目的通常是在未连接到互联网的计算机上离线管理软件包。然而 apt-ftparchive命令是由apt-utils发行版的常用安装映像附带的。因此,您不需要安装任何额外的软件包。

  • 既然我们将使用 apt 而不是 dpkg 进行包管理,为什么不使用 apt 来扫描包呢? :)


如何设置APT本地存储库?

步骤1:创建一个目录来放置 debs。

$ mkdir ~/apt-local-repository

第2步:将您的本地目录添加到存储库列表的顶部/etc/apt/sources.list

$ head -n 1 /etc/apt/sources.list
deb [trusted=yes] file:/home/pandya/apt-local-repository/ ./
  • 请注意,如果您不设置[trusted=yes],则需要--allow-unauthenticated在通过安装包时设置参数apt

  • 该行被添加到存储库列表的顶部,以赋予其最高优先级。如果您将其添加到/etc/apt/sources.list.d/,apt 将尝试从在线存储库(如定义)安装它/etc/apt/sources.list,从而为您的本地存储库提供较低的优先级。

步骤3: 把你的债付给~/apt-local-repository

步骤4:使用索引包列表aptftparchive

$ cd ~/apt-local-repository/; apt-ftparchive packages . > Packages

步骤5:使用更新 apt 索引/数据库sudo apt update

完毕。现在您可以使用安装 deb 包sudo apt install <packagename>。每次更改本地数据库时,只需重复步骤 3 到 5。


有用的提示:

  • 你可以运行apt-cache policy <packagename>查看APT是否识别到你本地的deb包并赋予其最高优先级

  • 您可以运行sudo apt-get --print-uris install <packagename>来检查是否满足所有依赖项,或者您需要下载任何额外的包。它还会列出 url,其中 i) ftp:// 表示本地存储库中的软件包,和/或 ii) http:// 表示需要从 Internet 下载的软件包或缺少的依赖项。

您可能会看一下一个名为L奥卡尔A储存库中号阿纳格我创造了。

答案3

如果您想要创建一个具有 debootstrap 等工具所需完整结构的 repo,我发现最简单的方法是:

  1. 创建存储库目录。

    # mkdir -p /opt/debian/conf
    
  2. 创建一个/opt/debian/conf/distributions包含如下内容的文件(根据您使用的发行版进行适当调整):

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  3. 使用以下命令导入您的包reprepro

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  4. 使用 shell for 循环导入一堆包,例如。 APT 缓存中的所有内容:

    # cd /var/cache/apt/archives
    # for DEB in *.deb
    do
        reprepro -b /opt/debian includedeb jessie "$DEB"
    done
    

这将创建一个未签名的存档。它可以与--no-check-gpg带选项的 debootstrap 一起使用。

相关内容