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

评论


这对Ubuntu 16.04才有用

–或者段
17-3-22在16:31



在Ubuntu 18.04上也为我解决了

– kramer65
18年4月3日在18:54

@kilgoretrout“接受的答案如何”因为Google搜索命中击败了确切的问题语义。

– Ciro Santilli郝海东冠状病六四事件法轮功
18年7月7日在5:10

在19.04中工作

–哈里斯
19年10月1日在22:05

在20.04工作

–海森堡
20年11月7日,11:34

#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 mirror),也可以忽略#Added by software-properties

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

完整的diff可以在此处找到


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

评论


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

– Kaushal Modi
17年11月17日在19:34

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

– Vincent
17/12/22在15:09

谢谢你的朋友记得我$ sudo apt update

–christianbueno.1
18年3月12日在5:11

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

– Kilgoretrout
18年11月7日在1:41

#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了解更多信息。

评论


在编辑sources.list文件后执行sudo apt-get update

– abidibo
15年3月18日在11:57

#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


评论


您可以跳过cp并将sed与-i〜orig一起使用,以使sed进行备份。

–muru
18-3-4的3:23

这是我最喜欢的答案,因为它显示了将首先更改的内容,然后是命令行进行更改。

– Wisbucky
20年8月3日,18:32

#5 楼

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


#6 楼

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

#7 楼

我的解决方案采用已经配置的deb行并将其添加为deb-src。
使用perl:5.28 docker映像进行测试,该映像基于buildpack-deps:buster,其基于debian:buster:

grep '^deb ' /etc/apt/sources.list | perl -pe 's/deb /deb-src /' >> /etc/apt/sources.list