Błąd :: Musisz umieścić w swoim pliku sources.list niektóre identyfikatory URI typu „source”


107

Próbuję zainstalować PIL moduł python na Ubuntu

Najpierw muszę zainstalować pakiet o nazwie python-imaging przy użyciu następującego polecenia

sudo apt-get build-dep python-imaging

Gdy próbuję to zrobić, pojawia się błąd

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

Widziałem to pytanie, które pokazuje, jak naprawić za pomocą GUI, ale używam wiersza polecenia. Czy ktoś wie, jak mogę naprawić ten błąd ..?

AKTUALIZACJA: Na podstawie poniższych odpowiedzi zaktualizowałem listę pakietów, ale teraz pojawia się ten błąd. Nie jestem pewien, czy jest to powiązane, jeśli nie, zacznę nowe pytanie, ponieważ nigdzie nie mogę znaleźć odniesienia do błędu.

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

Pierwszy komunikat o błędzie jest dość mylący. Pokazuje się, chociaż w pliku jest NIEKTÓRE źródła, a komunikat sugeruje, że nie ma żadnych źródeł. Wiadomość próbuje powiedzieć, że musisz DODAĆ źródło, które zawiera informacje.
Sören,

Odpowiedzi:


100

software-properties-gtk opcja „Kod źródłowy”

Polecam to na pulpicie:

software-properties-gtk

następnie w zakładce „Oprogramowanie Ubuntu” kliknij „Kod źródłowy”:

wprowadź opis zdjęcia tutaj

To dodało kilka deb-srcwierszy poniżej /etc/apt/sources.listi teraz mogę to zrobić sudo apt-get build-dep <package>.

Nie mogłem znaleźć czystej metody CLI, dlatego tworzę ten raport o błędach: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1802718

Testowane na Ubuntu od 16.04 do 18.04.

Metoda CLI

Polecam to dla obrazów 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

Testowane na obrazie dokera Ubuntu 18.04. Po tej zmianie mogę z powodzeniem wykonać na przykład:

sudo apt-get build-dep hello

i przed zmianą nie powiodło się z błędem:

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

Wcześniej wspomniano na stronie : https://askubuntu.com/a/1011675/52975 idź i głosuj tę odpowiedź.

Należy jednak pamiętać, że /etc/apt/sources.listplik zawiera wiersze, takie jak:

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

co oznacza, że ​​powyższe sedumożliwiłoby źródła, ale nie nie-źródła dla niektórych rodzajów repozytoriów. Nie sądzę, żeby to miało znaczenie.


5
To właśnie działało dla mnie z Ubuntu 16.04
lub Duan

2
Rozwiązałem to również dla mnie na Ubuntu 18.04
kramer65

2
@kilgoretrout ”Jaka jest akceptowana odpowiedź? Ponieważ wyniki wyszukiwania Google pokonały dokładnie semantykę pytań.
Ciro Santilli 7 改造 中心 法轮功 六四 事件

1
Bardzo fajny! Uwielbiam sed!
Esben Eickhardt

1
pracuje w 19.04
Haris

49

Możesz bezpośrednio edytować listę źródeł ( /etc/apt/sources.list). Myślę, że musisz dodać / odkomentować te linie:

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

Rozwiązałem ten problem, wyłączając opcję kodu źródłowego i zapisując jedną kopię pliku sources.list, a następnie włączając opcję kodu źródłowego, zapisując kolejną kopię, a następnie uruchamiając diffoba.

Być może zechcesz zmienić prefiks http://gb.na prefiks innych źródeł na liście (aby używał najbliższego kopii dystrybucyjnej repo), a także możesz zignorować #Added by software-properties.

Po edycji sources.listuruchom sudo apt-get updateprzed próbą ponownej instalacji.

Pełne diffmożna znaleźć tutaj


Innym sposobem jest wygenerowanie nowego. Jedną z metod uzyskania kompletnego źródła.list jest skorzystanie z tej strony: https://repogen.simplylinux.ch/


7
„Po zakończeniu edycji source.list uruchom sudo apt-get update przed ponowną instalacją.” - To był klucz, dzięki!
Kaushal Modi

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

1
dzięki, przyjacielu, zapamiętaj mnie$ sudo apt update
christianbueno.1,

Komentarz Vincenta był dla mnie wystarczający i super czysty
kilgoretrout

27

Edytować /etc/apt/sources.list

sudo nano /etc/apt/sources.list

Następnie usuń #lub dodaj linie deb-src $url, na przykład:

deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted

Lub skopiuj z istniejących linii, np

deb blah blah
deb-src exact same blah blah

Następnie uruchomić:

sudo apt-get update

Dodatkowe informacje można znaleźć na stronie https://help.ubuntu.com/community/Repositories/CommandLine .


17
exec sudo apt-get updatepo edycji sources.listpliku
abidibo

4

Oto rozwiązanie wiersza polecenia

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

typowa moc wyjściowa powyżej 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

jeśli dobrze zmieniasz powyższe wiersze, co zawsze jest prawdą przy świeżej instalacji Ubuntu, wtedy problem:

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

który wykonuje kopię zapasową pliku wejściowego, a następnie wyszukuje skomentowane polecenie deb-src, w którym usuwa komentarz, aby te linie były aktywne ... po odświeżeniu lokalnych metadanych zwiększy twoją maszynę świadomość nowych kategorii pakietów ubuntu

sudo apt-get update

teraz ponownie wydaj oryginalne polecenie, które nie powiodło się:

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

1
Możesz pominąć cp i użyć -i~origsed, aby wykonać kopię zapasową.
muru

3

W przypadku Ubuntu 16.04 z powodzeniem wprowadziłem następujące aktualizacje do pliku 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

W Linux Mint (jestem w wersji 18) możesz przejść do Software Sources (wyszukaj go w menu startowym lub otwórz za pomocą terminala software-sources). Tam, na pierwszej karcie, znajduje się pole wyboru Włącz repozytoria kodu źródłowego . Jeśli włączysz to, program umieści poprawne linie w twoim /etc/apt/sources.list.d/official-source-repositories.listpliku. Po prostu nie zapomnij sudo apt-get update(lub naciśnij Aktualizuj pamięć podręczną w źródłach oprogramowania).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.