卸载软件包,而不删除 apt-cache 中下载的 .deb?

卸载软件包,而不删除 apt-cache 中下载的 .deb?

目前我正在运行 Wheezy 32 位,最近我从官方存储库安装了 FreeSWITCH。然而,我意识到,为了达到我想要的目的,我需要自己从源代码重建 FreeSWITCH,这比二进制版本号要新一些。安装。

只是为了确保我以后可以从官方存储库重新安装/重用 FreeSWITCH 二进制文件,而不必再次获取软件包 .deb 文件(这在我的慢速连接上花费了相当长的时间) - 我想因此卸载,而将包文件保存在 apt 缓存中。我怎样才能做到这一点?

此外,FreeSWITCH 软件包安装是使用元软件包(即“freeswitch-meta-vanilla”)完成的,该元软件包引入了所有其他 FreeSWITCH 软件包。我需要以不同的方式执行此卸载吗?

答案1

我在 ubuntuforums 上发现了这个帖子,标题为:HOWTO:制作和恢复 apt 缓存备份

apt 的缓存

当您在 Ubuntu/Debian 上安装.deb文件时,它们将存储在以下目录中:/var/cache/apt/archives/.因此,如果您想将它们安全地保存在其他地方,您可以随时将它们复制出此处。这些文件应该被称为FreeSWITCH*.deb.

dpkg 重新打包

您还可以使用名为 的工具dpkg-repack,该工具将获取现有已安装的软件包并将其重新打包回 .deb 文件。

dpkg-repack 从已安装的 debian 软件包中创建一个 .deb 文件。如果在解压包时对包进行了任何更改(即修改了 /etc 中的文件),则新包将继承这些更改。

此实用程序可以轻松地将软件包从一台计算机复制到另一台计算机,或者重新创建系统上安装但在其他地方不再可用的软件包,或者在升级软件包之前存储软件包的当前状态。

可以像这样安装apt-get install dpkg-repack

笔记:重新打包软件包时,生成的.deb文件将包含进行重新打包的系统上的任何配置文件,而不是最初包含的配置文件的原始版本!

例子

假设我想重新打包已经安装的bzip2应用程序。

$ sudo dpkg -l|grep bzip2
ii  bzip2                                     1.0.6-4                                   amd64        high-quality block-sorting file compressor - utilities

以下命令将其打包:

$ sudo dpkg-repack bzip2
dpkg-deb: warning: './dpkg-repack-16687/DEBIAN/control' contains user-defined field 'Original-Maintainer'
dpkg-deb: warning: ignoring 1 warning about the control file(s)

dpkg-deb: building package `bzip2' in `./bzip2_1.0.6-4_amd64.deb'.

.deb您可以像这样确认文件的内容:

$ sudo dpkg -c bzip2_1.0.6-4_amd64.deb |head -15
drwxr-xr-x root/root         0 2013-08-22 00:08 ./
drwxr-xr-x root/root         0 2013-08-22 00:08 ./bin/
-rwxr-xr-x root/root     31152 2012-08-03 12:30 ./bin/bunzip2
-rwxr-xr-x root/root      2140 2012-08-03 12:30 ./bin/bzdiff
-rwxr-xr-x root/root      4877 2012-08-03 12:30 ./bin/bzexe
-rwxr-xr-x root/root      3642 2012-08-03 12:30 ./bin/bzgrep
-rwxr-xr-x root/root     31152 2012-08-03 12:30 ./bin/bzcat
-rwxr-xr-x root/root     10376 2012-08-03 12:30 ./bin/bzip2recover
-rwxr-xr-x root/root      1297 2012-08-03 12:30 ./bin/bzmore
-rwxr-xr-x root/root     31152 2012-08-03 12:30 ./bin/bzip2
drwxr-xr-x root/root         0 2013-08-22 00:08 ./usr/
drwxr-xr-x root/root         0 2013-08-22 00:08 ./usr/share/
drwxr-xr-x root/root         0 2013-08-22 00:08 ./usr/share/man/
drwxr-xr-x root/root         0 2013-08-22 00:08 ./usr/share/man/man1/
-rw-r--r-- root/root      1873 2012-08-03 12:30 ./usr/share/man/man1/bzmore.1.gz
...
...

答案2

只需用或其他方式卸载apt-get remove即可。这不会删除下载的文件。仅当您运行apt-get clean、使用 aptitude 中的“clean”命令或在包管理工具中执行类似操作时,才会删除下载的文件。

如果您想确保不会意外删除这些软件包,请在另一个目录中创建一个副本。您只需将文件复制回来即可将包注入回下载缓存中.deb

相关内容