使用 reprepro 从 apt 存储库中删除 deb 包

Ste*_*art 4 package-management apt reprepro

问题总结:

reprepro list stretch不会在我的 apt 存储库中列出任何包,reprepro remove stretch <package>也不会从我的存储库中删除任何包。我怎样才能:

  1. 添加包以便reprepro list stretch找到它们,或者
  2. 用于reprepro从我的 repo 中删除包

环境:

我有一台带有 apt 存储库的构建机器。当我完成构建时,我安装我的包:

sudo reprepro -Vb /var/www/html/apt/debian \
              includedeb stretch \
              ${build_dir}/a320-latest-0.0.${SVN_REVISION}-Linux.deb
Run Code Online (Sandbox Code Playgroud)

一切似乎都运行得很好。我可以apt-get install a320-latest从任何将我的存储库添加到他们的/etc/apt/sources.list.d/.

当我进一步检查时,我可以确认我安装了几个软件包:

bob@apollo:/var/www/html/apt/debian$ tree pool
pool
??? main
    ??? a
    ?   ??? a320
    ?   ?   ??? a320_0.0.571_amd64.deb
    ?   ??? a320-latest
    ?       ??? a320-latest_0.0.575_amd64.deb
    ??? h
    ?   ??? helloworld
    ?       ??? helloworld_0.2_amd64.deb
    ??? s
        ??? sim-dev
        ?   ??? sim-dev_1.0_amd64.deb
        ??? sim-devenv
        ?   ??? sim-devenv_1.0_amd64.deb
        ??? sim-runtime
        ?   ??? sim-runtime_1.1_amd64.deb
        ??? sim-workstation
            ??? sim-workstation_1.0_amd64.deb

11 directories, 7 files
Run Code Online (Sandbox Code Playgroud)

这些似乎也存在于存储库注册表中:

bob@apollo:/var/www/html/apt/debian$ cat dists/stretch/main/binary-amd64/Packages | grep Package:
Package: a320
Package: a320-latest
Package: helloworld
Package: sim-dev
Package: sim-devenv
Package: sim-runtime
Package: sim-workstation
Run Code Online (Sandbox Code Playgroud)

预期工作流程:

我想删除pool/main/a/a320pool/main/h/helloworld

我试过了:

bob@apollo:/var/www/html/apt/debian$ sudo reprepro list stretch
bob@apollo:/var/www/html/apt/debian$ sudo reprepro remove stretch a320
Not removed as not found: a320
Exporting indices...
Run Code Online (Sandbox Code Playgroud)

我预计reprepro list stretch会列出我的包,并reprepro remove stretch a320删除 a320 包。但这似乎没有任何作用。

我很想手动删除*.deb文件和条目./dists/.../Packages,但我怀疑这会破坏一些校验和并破坏存储库。它可能还会./dists./db包含一些二进制对象(SQLite?)的内容不同步。

我也尝试过reprepro export stretchreprepro update stretch但他们似乎没有做任何事情。


至少有些东西在起作用

现在一切对客户来说都很棒。

另外,我可以确认reprepro找到stretch存储库,否则会出现以下错误之一:

bob@apollo:/var/www/html/apt$ sudo reprepro list stretch
Error opening config file './conf/distributions': No such file or directory(2)
There have been errors!

bob@apollo:/var/www/html/apt/debian$ sudo reprepro list wheezy
Cannot find definition of distribution 'wheezy'!
There have been errors!
Run Code Online (Sandbox Code Playgroud)

Rob*_*edl 5

您的问题中有部分解决方案:
您必须告诉reprepo在哪里看!

sudo reprepro -Vb /var/www/html/apt/debian list stretch
Run Code Online (Sandbox Code Playgroud)

sudo reprepro -Vb /var/www/html/apt/debian remove stretch a320
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩。