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

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

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

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

sudo apt-get build-dep python-imaging

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

E: You must put some 'source' URIs in your sources.list

我看见问题是,它显示了如何通过 GUI 进行修复,但我使用的是命令行。有人知道如何修复此错误吗?

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

E: Build-Depends dependency for python-imaging cannot be satisfied because candidate version of package python-all-dev can't satisfy version requirements  

答案1

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

我推荐这个用于桌面:

software-properties-gtk

然后在“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 上测试。

CLI 方法

我建议使用 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

在 Ubuntu 18.04 Docker 镜像上进行了测试。经过此更改后,我可以成功执行以下操作:

sudo apt-get build-dep hello

并且在更改之前它失败并出现错误:

E: You must put some 'source' URIs in your sources.list

之前提到过: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

这意味着上述操作sed将启用某些类型的存储库的源,但不会启用非源。不过我认为这并不重要。

答案2

您可以直接编辑源列表(/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

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

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

编辑后sources.list,运行sudo apt-get update后再尝试安装。

完整内容diff可以在这里找到这里


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

答案3

编辑/etc/apt/sources.list

sudo nano /etc/apt/sources.list

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

deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted

或者从现有行复制,例如

deb blah blah
deb-src exact same blah blah

然后运行:

sudo apt-get update

https://help.ubuntu.com/community/Repositories/CommandLine了解更多信息。

答案4

对于 Ubuntu 16.04,我成功对 sources.list 进行了以下更新:

$ sudo diff /etc/apt/sources.list /etc/apt/sources.list.bkp 

6c6
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial main restricted
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial main restricted

19c19
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial universe
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial universe

39c9
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse

53c53
< deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
---
> # deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

相关内容