在我的本地存储库中,见下文,我下载了许多版本的相同包并将其存储在 deb 包目录中。由于 Ubuntu 总是喜欢使用最高版本,因此我不需要下载和使用早期版本。(都在同一个文件夹中)。
如何从本地 deb 的文件夹中删除早期版本的软件包?手动删除它们不是一个可行的解决方案。(您无法检查数千个文件中的版本)
有任何想法吗?!!
也许一个检查每个包的版本并保留较新版本并删除旧版本的脚本可以解决这个问题。
我正在寻找这样的脚本,或者如果创建了一些软件会很棒
我已经按照这个如何教程制作了我的本地存储库。
*** 本地仓库是已经下载的包的离线存储,这样你就不需要再次下载了)
注意:我不是指清除下载包的缓存,这可以通过apt-get clean命令来完成。
在此之后,我删除了相同软件包的旧版本。我使用了dpkg-scanpackages的多版本扫描功能的反转功能。
首先安装dpkg-dev包
sudo apt-get install dpkg-dev
Run Code Online (Sandbox Code Playgroud)然后生成一个包名的文件(只列出较新的),dpkg-scanpackages不带-m选项。默认是没有-m选项。
如果名为deb的文件夹中有 .deb 文件,请从该文件夹的父文件夹运行以下命令
dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: > filenames
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为filenames 的文件,其中包含以格式列出的所有 .deb 文件的名称Filename: deb/packagename_version.deb。
我们现在在名为filenames的文件中拥有所有最新版本的文件名
现在任务很简单,修改脚本以将所有这些文件移动到另一个文件夹中。
首先更换Filename:用mv
sed -i 's/Filename:/mv/' filenames
Run Code Online (Sandbox Code Playgroud)现在在deb文件夹的父目录中创建一个文件夹。我将它命名为最新的(无垃圾可能是一个很好的;P)。
再次更改文件名文件以移动新创建的最新文件夹中的 .deb 文件。
sed -i 's/\.deb/.deb newest/' filenames
Run Code Online (Sandbox Code Playgroud)
这将使我们的文件名文件成为mv将 .deb 文件从deb目录移动到最新目录的命令列表
现在你猜怎么着。执行文件filenames
sh filenames
Run Code Online (Sandbox Code Playgroud)最后一步是删除包含旧的过时 .deb 文件的文件夹。作为预防措施,也请检查最新的文件夹。
安装dpkg-dev软件包后,使用单个命令生成移动脚本,通过转到 .deb 文件文件夹的父文件夹来使用此脚本。
dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: | sed 's/Filename:/mv/;s/\.deb/.deb newest/' > filenames
Run Code Online (Sandbox Code Playgroud)
然后创建一个名为newest的文件夹并使用 `sh filenames* 命令执行文件filenames。