用于下载已安装软件包源的 Debian 脚本失败

用于下载已安装软件包源的 Debian 脚本失败

我使用了 askuubtu 中的下一个脚本来自动下载全新 debian 9.3 LXDE 安装中的所有已安装软件包。

从这里:

#!/bin/bash
dpkg --get-selections | while read line
do
        package=`echo $line | awk '{print $1}'`
        mkdir $package
        cd $package
        apt-get -q source $package
        cd ..
done

我的问题是我收到一些错误,它下载了类似但不是想要的包:

sh: 1: dpkg-source: 未找到 W: 下载以 root 身份在未沙盒的情况下执行,因为用户“_apt”无法访问文件“libreoffice_5.2.7-1.dsc”。 - pkgAcquire::Run(13:权限被拒绝)E:解压命令“dpkg-source --no-check -x libreoffice_5.2.7-1.dsc”失败。读取包列表...选择“libreoffice”作为源包而不是“libreoffice-calc”

你可以想象它每 3-4 分钟(libreoffice)多次下载 300MB 左右(对于 libreoffice 的几乎每个依赖项)...

有没有人有比该脚本更好的建议来自动下载我的系统上使用的软件包的源代码?

答案1

您使用的脚本存在一个根本问题:它基于二进制包,而不是源包。这就是您多次下载 LibreOffice 源代码的原因:有许多二进制包是从同一个源代码包构建的......

还有一个问题是你没有dpkg-source安装,所以无法解压源码包。

我会用这样的东西来代替:

#!/bin/bash
dpkg-query -f '${Source}\n' -W | cut -d\  -f1 | sort -u | while read package
do
    mkdir $package
    pushd $package
    apt-get -q source $package
    popd
done

如果您不想提取源代码,请添加-d到该apt-get行,这样可以避免dpkg-source错误。

相关内容