以下命令在 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\?
一个可选的空格(注意?需要转义)。