错误 :: 您必须在您的 sources.list 中放入一些“源”URI

dav*_*vid 159 apt

我正在尝试在 ubuntu 上安装 PIL 一个 python 模块

我首先需要使用以下命令安装一个名为 python-imaging 的包

sudo apt-get build-dep python-imaging
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到错误

E: You must put some 'source' URIs in your sources.list
Run Code Online (Sandbox Code Playgroud)

我看到了这个问题 whihc 显示了如何通过 GUI 进行修复,但我使用的是命令行。有谁知道我如何解决这个错误..?

更新:根据以下答案,我更新了我的包裹列表,但现在出现此错误。不确定它是否相关,如果不是,我将开始一个新问题,因为我在任何地方都找不到对错误的引用。

E: Build-Depends dependency for python-imaging cannot be satisfied because candidate version of package python-all-dev can't satisfy version requirements  
Run Code Online (Sandbox Code Playgroud)

Cir*_*郝海东 165

software-properties-gtk 选项“源代码”

我推荐这个用于桌面:

software-properties-gtk
Run Code Online (Sandbox Code Playgroud)

然后在“Ubuntu 软件”选项卡下单击“源代码”:

在此处输入图片说明

这在 下添加了一些deb-src/etc/apt/sources.list,现在我可以做sudo apt-get build-dep <package>

我找不到干净的 CLI 方法,所以我为它创建了这个错误报告:https : //bugs.launchpad.net/ubuntu/+source/apt/+bug/1802718

在 Ubuntu 16.04 到 18.04 上测试。

命令行方式

我推荐这个用于 Docker 镜像:

sudo cp /etc/apt/sources.list /etc/apt/sources.list~
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 18.04 Docker 镜像上测试。在此更改后,我可以成功执行例如:

sudo apt-get build-dep hello
Run Code Online (Sandbox Code Playgroud)

在更改之前,它因错误而失败:

E: You must put some 'source' URIs in your sources.list
Run Code Online (Sandbox Code Playgroud)

之前提到过:https : //askubuntu.com/a/1011675/52975 去投票赞成那个答案。

但是请注意,该/etc/apt/sources.list文件包含以下行:

# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner
Run Code Online (Sandbox Code Playgroud)

这意味着上述内容sed将为某些类型的 repos 启用源而不是非源。不过我认为这并不重要。

  • 这在 **ubuntu 16.04** 中对我有用 (6认同)
  • 在 *Ubuntu 18.04* 上也为我解决了这个问题 (3认同)
  • @kilgoretrout“如何接受答案”因为谷歌搜索命中击败了确切的问题语义。 (2认同)
  • 20.04 工作 (2认同)

Wil*_*ilf 59

您可以/etc/apt/sources.list直接编辑源列表 ( )。我认为您需要添加/取消注释这些行:

deb-src http://archive.ubuntu.com/ubuntu trusty main restricted #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-updates restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse #Added by software-properties
deb-src http://security.ubuntu.com/ubuntu trusty-security restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-proposed restricted main universe multiverse #Added by software-properties
Run Code Online (Sandbox Code Playgroud)

我通过禁用源代码选项并保存一份 sources.list 文件的副本,然后启用源代码选项,保存另一个副本,然后diff在两者上运行来解决这个问题。

您可能希望将前缀更改为http://gb.列表中其他源的前缀(因此它使用离您最近的 repo 镜像),并且您也可以忽略#Added by software-properties.

编辑后sources.listsudo apt-get update在尝试再次安装之前运行。

完整的diff可以在这里找到


另一种方法是生成一个新的。获取完整sources.list 的一种方法是使用此站点:https : //repogen.simplylinux.ch/

  • 须藤 sed -i -e 's/# deb-src/deb-src/' /etc/apt/sources.list (10认同)
  • “编辑sources.list后,在尝试再次安装之前运行sudo apt-get update。” -- 那是关键,谢谢! (8认同)

Pan*_*her 30

编辑 /etc/apt/sources.list

sudo nano /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

然后用 删除#或添加行deb-src $url,例如:

deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
Run Code Online (Sandbox Code Playgroud)

或从现有行复制,例如

deb blah blah
deb-src exact same blah blah
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

有关其他信息,请参阅https://help.ubuntu.com/community/Repositories/CommandLine

  • 编辑 `sources.list` 文件后执行 `sudo apt-get update` (18认同)

Sco*_*and 14

这是命令行解决方案

cat /etc/apt/sources.list | grep deb-src  #  see what will get changed
Run Code Online (Sandbox Code Playgroud)

上述 cmd 的典型输出

# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://archive.canonical.com/ubuntu bionic partner
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://archive.ubuntu.com/ubuntu bionic main universe restricted multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
Run Code Online (Sandbox Code Playgroud)

如果你能很好地改变上面的内容,这在全新的 ubuntu 安装中总是正确的,然后发出:

sudo sed -i~orig -e 's/# deb-src/deb-src/' /etc/apt/sources.list   
Run Code Online (Sandbox Code Playgroud)

它备份输入文件,然后搜索注释掉的 deb-src,它删除注释以使这些行处于活动状态......刷新本地元数据后将使您的机器意识到 ubuntu 包的新类别

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

现在再次发出失败的原始命令:

E: You must put some 'source' URIs in your sources.list
Run Code Online (Sandbox Code Playgroud)

  • 您可以跳过 cp 并使用 `-i~orig` 和 sed 来让 sed 进行备份。 (2认同)