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


107

我正在尝试在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  

第一条错误消息非常令人困惑。它会显示,尽管文件中有一些源,而该消息暗示根本没有任何源。消息试图说的是您必须添加包含信息的源。
索伦

Answers:


100

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将启用某些类型的回购协议的来源,但不能启用非来源。我认为这并不重要。


5
这对我来说适用于Ubuntu 16.04
或Duan

2
还为我在Ubuntu 18.04
kramer65 '18

2
@kilgoretrout“接受的答案如何”因为Google搜索命中击败了确切的问题语义。
Ciro Santilli新疆改造中心法轮功六四事件

1
很酷!要爱sed!
Esben Eickhardt

1
19.04工作
哈里斯

49

您可以/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.列表中其他来源的前缀(因此它使用最近的仓库镜像),也可以忽略#Added by software-properties

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

完整的diff可以在这里找到


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


7
“在编辑sources.list之后,请在尝试再次安装之前运行sudo apt-get update。” -这就是关键,谢谢!
Kaushal Modi

9
sudo sed -i -e's /#deb-src / deb-src
Vincent

1
感谢朋友记住我$ sudo apt update
christianbueno.1

@Vincent的评论对我来说已经足够了,而且超级干净
kilgoretrout

27

编辑 /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


17
文件执行sudo apt-get update后执行sources.list
abidibo

4

这是命令行解决方案

cat /etc/apt/sources.list | grep deb-src  #  see what will get changed

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

如果您擅长更改上述内容(在全新的ubuntu安装中始终如此),请发出:

sudo sed -i~orig -e 's/# deb-src/deb-src/' /etc/apt/sources.list   

它会备份输入文件,然后搜索注释掉的deb-src,在其中删除注释以使这些行处于活动状态……刷新本地元数据后,您的机器将了解ubuntu软件包的新类别

sudo apt-get update

现在再次发出您的原始命令,但失败了:

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

1
您可以跳过cp并-i~orig与sed一起使用以使sed进行备份。
muru 18-3-4,3

3

对于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

2

在Linux Mint(我的版本是18)中,您可以转到Software Sources(在“开始”菜单中搜索它,或者使用来从终端打开它software-sources)。在第一个标签上,您会看到一个复选框启用源代码存储库。如果启用此功能,程序将在/etc/apt/sources.list.d/official-source-repositories.list文件中放入正确的行。只是不要忘记在那之后sudo apt-get update(或点击“ 更新软件源中的缓存 ”)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.