如何从本地存储库中删除相同软件包的旧版本?

分享于 

2分钟阅读

ubuntu

 

首次安装dpkg-dev软件包


sudo apt-get install dpkg-dev



默认值没有-m选项。


dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: > filenames



这将创建一个名称为filenames的文件,该文件名以格式列出所有.deb文件的名称Filename: deb/packagename_version.deb

现在,我们拥有所有最新版本的文件的名称

任务现在很简单,修改脚本将所有这些文件移动到另一个文件夹中。

首先替换Filename:


sed -i 's/Filename:/mv/' filenames



现在在deb的父目录文件夹中创建一个文件夹,

再次更改文件名文件,将.deb文件移动到新创建的最新文件夹中。


sed -i 's/.deb/.deb newest/' filenames



 
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



然后创建一个newly的文件夹,并使用$sh filenames >命令执行文件filenames。


也可以用一行程序更新删除

这个一行程序将只删除同一包的旧版本

作为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目录


rep  REPO  PAC  PACK  LOC  Repository