Ошибка :: Вы должны поместить некоторые «исходные» URI в ваш sources.list


107

Я пытаюсь установить PIL модуль Python на Ubuntu

Сначала мне нужно установить пакет с именем python-imaging, используя следующую команду

sudo apt-get build-dep python-imaging

Когда я пытаюсь сделать это, я получаю ошибку

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

Я видел этот вопрос, который показывает, как исправить через графический интерфейс, но я использую командную строку. Кто-нибудь знает, как я могу исправить эту ошибку ..?

ОБНОВЛЕНИЕ: Основываясь на ответах ниже, я обновил свой список пакетов, но теперь я получаю эту ошибку. Не уверен, что это связано, если нет, то я начну новый вопрос, поскольку нигде не могу найти ссылку на ошибку.

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

Первое сообщение об ошибке довольно запутанно. Он появляется, хотя в файле есть НЕКОТОРЫЕ источники, а в сообщении подразумевается, что источников вообще нет. Сообщение пытается сказать, что вам нужно ДОБАВИТЬ источник, содержащий информацию.
Сёрен

Ответы:


103

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

2
@kilgoretrout "как принятый ответ", потому что поисковые запросы Google бьют точную семантику вопроса.
Сиро Сантилли 事件 事件 中 at 法轮功 六四 事件

1
Очень круто! Должен любить Сед!
Эсбен Эйкхардт

1
работая в 19.04
Харис

50

Вы можете редактировать список источников ( /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 перед повторной установкой». - Это был ключ, спасибо!
Каушал Моди

9
sudo sed -i -e 's / # deb-src / deb-src /' /etc/apt/sources.list
Винсент

1
спасибо друг за то, что помнишь меня это$ sudo apt update
Кристиан

@ Комментария Винсента мне хватило и супер чисто
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
exec 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 сделал резервную копию.
Муру

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(или нажмите Обновить кэш в Источниках программного обеспечения) после этого.


0

В выпуске 14.04 и более поздних версиях существует более простой и быстрый способ активировать репозитории исходного кода:

sudo add-apt-repository -s

Ссылка: man add-apt-repository

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.