当前位置: 首页>>技术教程>>正文


错误::您必须在sources.list中放置一些’source’ URI

,

问题描述

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

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

sudo apt-get build-dep python-imaging

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

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

我看到this问题,显示如何通过GUI修复,但我正在使用命令行。有谁知道我怎么能解决这个错误..?

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

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

最佳解决方案

software-properties-gtk选项”Source code”

我推荐这个用于桌面:

software-properties-gtk

然后在”Ubuntu Software”选项卡下单击”Source code”:

apt,ubuntu

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

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

在Ubuntu 16.04到18.04上测试。

CLI方法

我推荐这个用于Docker镜像:

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 go和upvote那个答案。

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

# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

这意味着上述sed将为某些类型的回购提供源而非non-sources。我认为这不重要。

次佳解决方案

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

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

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

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

完整的diff可以找到here


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

第三种解决方案

编辑/etc/apt/sources.list

sudo nano /etc/apt/sources.list

删除#或添加行deb-src $ url。 $ 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完全相同等等

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

第四种方案

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

第五种方案

这是命令行解决方案

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

第六种方案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1527.html,未经允许,请勿转载。