仅从 Debian 存储库获取已安装应用程序的 .deb 文件以缓存以供离线安装(包括依赖项)

仅从 Debian 存储库获取已安装应用程序的 .deb 文件以缓存以供离线安装(包括依赖项)

我的互联网连接通常很差,并且在某些时候会带来麻烦。因此,我定期备份 .deb 文件,并在进行新安装时将其复制到同一文件夹中。这样,除已安装的应用程序之外的应用程序的依赖项也会备份。我发现这个命令可以下载apt-get install an-app/var/cache/apt/archives全部 应用程序的依赖项,包括已安装在我的系统上的依赖项:

apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-pre-depends <appname> | grep "^\w" | sort -u)
apt-get download <appname>

我使用它是因为应用程序的某些依赖项可能无法安装在新系统上。

但在这种情况下,如果我升级任何应用程序,我也会将其旧的 .deb 文件存储在我的磁盘上。这些文件就变成了垃圾。我需要从缓存文件夹中清除这些垃圾。所以我的问题是:

有没有办法只镜像特定应用程序及其所有依赖项(并且只镜像最新版本)的存储库文件?或者使用apt-mirror或类似方法只镜像特定应用程序的 Debian 存储库?

答案1

最后我通过以下步骤解决了:

  1. 备份/var/cache/apt目录(不仅是/var/cache/apt/archives)。

  2. APT::Clean-Installed将属性设置为文件falseapt.conf。为此,请创建一个 .conf 文件/etc/apt/apt.conf.d并添加 APT::Clean-Installed "false";行。例如:

    $ sudo touch /etc/apt/apt.conf.d/custom.conf
    $ sudo echo "APT::Clean-Installed "false";" > /etc/apt/apt.conf.d/custom.conf
    
  3. 要在不安装应用程序文件的情况下清理缓存:

    $ sudo apt-get autoclean
    

我从以下地方得到这个man 8 apt-get

autoclean(以及自 1.1 起的 auto-clean 别名)
与 clean 一样,autoclean 会清除检索到的包文件的本地存储库。不同之处在于,它仅删除无法再下载的包文件,并且基本上没有用处。这使得缓存可以长期维护,而不会失去控制。配置选项 APT::Clean-Installed 如果设置为关闭,将防止已安装的软件包被删除。

相关内容