在我的本地存储库中(见下文),我下载了多个版本的相同软件包并将其存储在 deb 软件包目录中。由于 Ubuntu 始终倾向于使用最高版本,因此我不需要下载和使用早期版本。(所有版本都在同一个文件夹中)。
如何从本地 deb 文件夹中删除软件包的早期版本?手动删除它们不是一个可行的解决方案。(您无法检查数千个文件中的版本)
有任何想法吗?!!
也许一个脚本可以检查每个包的版本,保留较新的版本并删除较旧的版本,这可以解决这个问题。
我正在寻找这样的脚本或者如果能找到一些软件就太好了
我已经创建了以下本地存储库本教程。
*** 本地存储库是已下载软件包的离线存储,因此您无需再次下载)
笔记:我不是指清除下载的包的缓存,这可以用apt-get clean
命令来完成。
答案1
我已经删除了相同软件包的旧版本。我使用了dpkg-scanpackages
的多版本扫描功能的反转功能。
第一个安装
dpkg-dev
包sudo apt-get install dpkg-dev
然后生成一个文件,其中包含软件包的名称(仅列出较新的软件包),但
dpkg-scanpackages
不包含-m
选项。默认不包含-m
选项。如果你在名为德布,从此文件夹的父级运行以下命令
dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: > filenames
这将创建一个名为的文件文件名其中所有 .deb 文件的名称以 格式列出
Filename: deb/packagename_version.deb
。我们现在在名为的文件中拥有最新版本的所有文件的名称文件名
现在任务很简单,修改脚本将所有这些文件移动到另一个文件夹中。
首先替换
Filename:
为mv
sed -i 's/Filename:/mv/' filenames
现在在父目录中创建一个文件夹德布文件夹。我将其命名为最新(无垃圾可能是个好主意;P)。
再次改变文件名文件来移动新建的 .deb 文件最新文件夹。
sed -i 's/\.deb/.deb newest/' filenames
这将使我们的文件名文件列表,
mv
列出移动 .deb 文件的命令德布目录至最新目录现在猜猜看。执行文件文件名
sh filenames
最后一步是删除包含旧的过时 .deb 文件的文件夹。为了预防起见,也请检查一下最新的文件夹。
使用一行代码进行更新
安装软件包后dpkg-dev
,使用单个命令生成移动脚本,通过转到.deb 文件的父文件夹使用该脚本。
dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: | sed 's/Filename:/mv/;s/\.deb/.deb newest/' > filenames
然后创建一个名为最新并执行该文件文件名使用`sh filenames* 命令。
答案2
我遇到了同样的问题:我使用 apt-mirror 创建了一个本地存储库,此工具下载了新软件包,但保留了所有旧软件包。我做了以下操作来清理我的本地镜像:
转到镜像顶部的位置(dists 和池目录所在的目录,在我的设置中为 /var/spool/apt-mirror/mirror/ftp.nl.debian.org/debian)
创建池中所有包的列表:
find pool -type f | sort -u > files
创建镜像发行版中所有软件包的列表:
grep "^Filename:" `find dists/ -name Packages`|sed "s/^.*Filename: //"|sort -u > packages
现在创建两个文件之间的差异并将其转换为清理脚本:
diff files packages | sed "/^[1-9]/d;s/^< /rm /" > cleanup.sh
执行生成的脚本
确保您对存储库具有写入权限(或使用 sudo 执行)。除了删除之外,您还可以将文件移动到临时位置。
这样做的目的是,您可以删除某个 Packages 文件中未提及的文件,因为它们已被新版本替换或已弃用。如果 Packages 文件中未提及文件,则连接到您的存储库的客户端将无法找到它们。
答案3
用一行代码更新删除(而不是移动)
此行代码将仅删除相同软件包的旧版本
以 root 身份运行
sudo dpkg-scanpackages /var/cache/apt/archives 2>&1 >/dev/null | grep -Po '((\/.*?deb)(?=.*?repeat;))|used that.*?\K(\/.*deb)' | xargs rm
将“/var/cache/apt/archives”替换为您的 .deb 目录
它在 Ubuntu 12.10 中运行得很好
答案4
在图纳尔:
- 打开
/var/cache/apt/archives
- 根据访问时间选择文件:
- 点击查看>>查看详细列表
- 点击查看>>配置列>>启用访问日期
- 单击“访问日期”表头,对文件进行排序
- 按住 ctrl 键并单击可选择多个文件,按住 shift 键并单击可选择一系列文件
- 删除文件,通过右键单击>>删除(如果 Thunar 以足够的权限打开)或:
- 右键单击>>选择重命名
- 选择插入/覆盖,设置自定义前缀
- 打开终端,
sudo rm /var/cache/apt/archives/customprefix*.deb