reprepro管理APT仓库问题:无法列/删包及添加包方法咨询
我来帮你搞定这个reprepro的问题——你的APT仓库客户端能正常安装包,但仓库管理命令reprepro list和remove没反应,大概率是操作流程或者配置细节没到位,下面分两种需求给你详细说明:
一、添加包让
reprepro list stretch能识别到 首先得确保你的reprepro配置没问题,先检查仓库根目录下的conf/distributions文件,确认stretch相关的配置项是正确的:
- 确保
Codename字段明确写的是stretch Components(比如main)、Architectures(比如amd64)要和你要添加的包匹配
接下来按步骤添加包:
- 把你要添加的
.deb包放到仓库的pool目录对应路径下,比如包属于main组件、amd64架构,就放到pool/main/a/a320-latest/(路径命名一般是pool/[组件]/[包名首字母]/[包名]/,方便管理) - 在仓库根目录执行导入命令:
这个命令会自动把包放到正确的pool路径(如果没手动放的话),同时更新仓库的索引文件reprepro includedeb stretch /path/to/your/package.deb - 现在再执行
reprepro list stretch,就能看到刚添加的包了 - 如果是要添加源码包,把命令换成:
reprepro includesrc stretch /path/to/your/package.dsc
二、用reprepro删除仓库内的包
删除的关键是要用到包的准确名称,先解决之前remove命令失效的问题:
- 先确认包的准确名称:
- 如果你客户端能安装
a320-latest,那这个就是准确包名;也可以直接查看仓库dists/stretch/main/binary-amd64/Packages文件里的Package字段,找到对应包的名称
- 如果你客户端能安装
- 执行删除命令:
比如你要删的是reprepro remove stretch <准确包名>a320-latest,就执行reprepro remove stretch a320-latest - 最后一定要更新仓库索引,确保客户端看不到已删除的包:
reprepro export stretch - 如果删除后
reprepro list还能看到,或者客户端还能搜到,就手动去pool目录删掉对应的.deb文件,再重新执行reprepro export stretch
额外排查小技巧
之前你的reprepro list没输出,可能是这几个原因:
- 你没在仓库根目录执行命令,或者没通过
--basedir指定仓库路径,比如要写成:reprepro --basedir /path/to/your/repo list stretch conf/distributions里的Codename写错了,比如写成了stretch-test之类的,导致命令找不到对应发行版- 仓库目录权限问题,执行reprepro的用户没有读写仓库目录的权限,给目录加个
chmod -R 755 /path/to/repo试试
内容的提问来源于stack exchange,提问作者Stewart
相关产品推荐
相关产品推荐

