Ошибка:: Вы должны поместить некоторые "исходные" URI в ваш sources.list
Я пытаюсь установить 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
9 ответов
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 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
Ранее упоминалось по адресу: /questions/282286/oshibka-vyi-dolzhnyi-pomestit-nekotoryie-ishodnyie-uri-v-vash-sourceslist/282307#282307 иди и проголосуй за этот ответ.
Обратите внимание, что /etc/apt/sources.list
Файл содержит строки, такие как:
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner
что означает, что выше sed
будет включать источники, но не источники для некоторых типов репозиториев. Я не думаю, что это имеет большое значение, хотя.
Вы можете редактировать список источников (/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/
Редактировать /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 для получения дополнительной информации.
Вот решение командной строки
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
Для 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
В Linux Mint (у меня версия 18) вы можете перейти в Software Sources (найти его в меню "Пуск" или открыть из терминала с помощью software-sources
). Там на первой вкладке вы найдете флажок Включить репозитории исходного кода. Если вы включите это, программа поместит правильные строки в ваш /etc/apt/sources.list.d/official-source-repositories.list
файл. Только не забудь sudo apt-get update
(или нажмите Обновить кэш в Источниках программного обеспечения) после этого.
Мое решение берет уже настроенные строки deb и добавляет их как строки deb-src. Протестировано с использованием образа докера perl:5.28, который основан на buildpack-deps:buster, который основан на debian:buster:
grep '^deb ' /etc/apt/sources.list | perl -pe 's/deb /deb-src /' >> /etc/apt/sources.list
В выпуске 14.04 и более поздних версиях существует более простой и быстрый способ активировать репозитории исходного кода:
sudo add-apt-repository -s
Ссылка: man add-apt-repository
Удалите «#» из всех строк, начинающихся с
deb-scr
от
/etc/apt/sources.list
но сначала создайте резервную копию. Затем обновите.
Просто запустите эти команды:
sudo cp /etc/apt/sources.list /etc/apt/sources.list~
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt update