如何在 Ubuntu 16.04 上使用源 URI 自动更新 /etc/apt/sources.list?

如何在 Ubuntu 16.04 上使用源 URI 自动更新 /etc/apt/sources.list?

以下命令在 Ubuntu 15.10 上运行良好:

sudo apt-get build-dep emacs24

但是,在 Ubuntu 16.04 上运行它时出现以下错误:

Reading package lists... Done
E: You must put some 'source' URIs in your sources.list

在 15.10 中,所有带有 的行(大约 10 行)均未deb-src注释/etc/apt/sources.list,而在 16.04 中,相应行均被注释掉。例如,以下是我当前的 中的 4 行sources.list

## Major bug fix updates produced after the final release of the
## distribution.
deb http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
# deb-src http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

发生这种变化的原因是什么?

接下来,我想避免/etc/apt/sources.list每次重新安装 Ubuntu 时手动编辑。如何deb-src自动完成此操作(取消注释行)?

答案1

我在安装有 Ubuntu 16.04 的服务器上遇到了同样的问题,所以没有 GUI。我所需要的只是几个sed命令。

sudo sed -i -- 's/#deb-src/deb-src/g' /etc/apt/sources.list && sudo sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list

然后sudo apt-get update继续。

答案2

打开软件与更新并启用“源代码”。

答案3

这是一个(目前未经测试的) Bash 脚本,可用于取消deb-src注释行sources.list

tempdir=$(mktemp -d)
cd "$tempdir"
source_file=/etc/apt/sources.list
new_file=sources.list.new
perl -pE 's/^#\s+(deb-src)/$1/' "$source_file" > "$new_file"
sudo cp "$new_file" "$source_file"
sudo apt-get update

答案4

以下是@Tobi 结果的简化,只需一次调用 sed 即可完成:

sed -i -- 's/#\s\?deb-src/deb-src/g' /etc/apt/sources.list

这添加了\s\?一个可选的空格(注意?需要转义)。

相关内容