【问题标题】:Bash script unable to download source packages from a listBash 脚本无法从列表中下载源包
【发布时间】:2020-09-07 22:53:55
【问题描述】:

我有一个安装在我的 Ubuntu 16.04 上的软件包列表。我有一个 bash 脚本,它尝试在适当的目录(已创建)中一一下载它们的源代码。我收到一个错误:

Reading package lists...
E: Unable to find a source package for xxxx
~/source
~/sourcexxx

我的 bash 脚本如下所示:

#!/bin/bash
while read package
do
    #cd /mnt
    mkdir $package
    pushd $package
    apt-get -d -q source $package
    popd
done < ins.txt

我不想更新任何系统文件。 apt-get -d -q source xxx 独立工作,但不在上面的脚本中。可能是什么原因?

我的 ins.txt 的一部分:

adduser
adium-theme-ubuntu
adwaita-icon-theme
alacarte
alsa-base
alsa-utils
amd64-microcode
anacron
apg
app-install-data
app-install-data-partner
apparmor
apparmor-easyprof

当我单独执行例如 apt-get -d -q source adduser 时,它可以工作

【问题讨论】:

  • 应该whiledpkg-query -f 或从文件ins.txt 读取?
  • 请先将您的脚本粘贴到那里:shellcheck.net
  • 来自 ins.txt - 列出了我要下载的所有软件包..
  • dpkg-query -f 没有列出软件包。它用于指定输出格式。您的ins.txt 文件包含什么?为什么你实际上使用dpkg-query?只需删除它,以及它后面的管道字符。
  • @mivk - 我得到相同的 Unable to find a source 错误,即使在我删除它之后也是如此。第一行现在只是:while read package

标签: bash shell ubuntu sh apt-get


【解决方案1】:

使用您的列表,删除 dpkg-query -f | 部分后,这对我来说似乎工作正常(在 Ubuntu 16.04 上):

#!/bin/bash

while read package
do
    echo "Package $package"
    mkdir -v $package
    pushd $package
    apt-get -d -q source $package
    popd
done < ins.txt

可能某些包没有源代码,或者您的 ins.txt 文件包含无效包。

但这个问题肯定会更好地发布在Ask Ubuntu

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多