szuka plików i386, mimo że architektura to amd64


15

Próbuję użyć repozytorium plików do aktualizacji linux / ubuntu na niepodłączonym komputerze. Architektura tego komputera (uname -a):

x86_64 GNU/Linux

Wyniki dpkg --printarchitecturesą następujące:

amd64

Jest to maszyna Amd64 firmy Trusty Tahr, która wyraźnie mówi to na przykład w pliku aptitude sources.list. Ponadto „O tym komputerze” w Ubuntu wyraźnie mówi, że maszyna jest 64-bitowa. Więc zainstalowałem pakiety amd64 na komputerze. Jednak gdy próbuję to zrobić apt-get update, otrzymuję błędy, takie jak:

W: Failed to fetch file:/var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages  File not found

Innymi słowy, mimo że jest to maszyna 64-bitowa, apt w niewytłumaczalny sposób próbuje odczytać pakiety i386. Dlaczego to robi i jak mogę zmusić go do korzystania z pakietów 64-bitowych?

Zauważ, że w pliku sources.list nie ma nic, co określa i386.

Jedyną niekomentowaną linią w pliku sources.list jest:

deb file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

Być może ta obsługa wielu trybów jest domyślnie włączona w Ubuntu, ponieważ istnieje kilku dostawców oprogramowania partnerów (Skype, cof, cof ..), którzy są wystarczająco leniwi, aby nie kompilować rzeczy na i386 i amd64. Ponieważ potrzebne będą biblioteki wielościenne, dpkgdomyślnie jest skonfigurowany tak, aby akceptował amd64 i jest 32-bitowym rodzeństwem. Mówię „może”, ponieważ nie znalazłem żadnej oficjalnej dokumentacji z tymi informacjami. Tylko moje 2 centy.

Odpowiedzi:


25

W amd64instalacjach Ubuntu i386domyślnie jest włączona jako dodatkowa architektura. apti spółka oczekuj, że repozytoria dostarczą wszystkie skonfigurowane architektury, co powoduje błąd, który widzisz.

Ponieważ twoje lustro ma tylko amd64pakiety, powinieneś je oznaczyć jako takie:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

To rzeczywiście był problem. Dzięki tej poprawce repozytorium zostało zaakceptowane i zaktualizowane. Dzięki.
Tyler Durden

2
dpkg --print-foreign-architecturespokaże każdą architekturę, dla której włączona jest obsługa wielu kanałów; Miałem ten sam problem i (prawdopodobnie nic dziwnego) powyższe polecenie zgłosiło:i386
sxc731

To nie wyjaśnia, jak domyślnie wyłączać dodatkową architekturę . Umieszczenie [arch=amd64]w każdej deblinii nie jest dobrym rozwiązaniem. To wyjaśnia, jak to zrobić: superuser.com/a/714392/376867
środa

2
@midenok Gdzie zasugerowałem dodanie kwalifikatora arch do każdego deskryptora repozytorium? Całkowite wyłączenie i386obsługi jednego kłopotliwego repozytorium jest raczej przesadą. Uwaga: jeśli masz wiele repozytoriów powodujących problem opisany w pytaniu, oznacza to problem z polem Architektury repozytoriów , a nie z konfiguracją lokalną.
Stephen Kitt,

@Stephen Kitt Dobra, rozwiązałeś jeden konkretny problem opisany w pytaniu. Ale twoje rozwiązanie nie jest praktyczne. Większość osób, w tym pytający i ja, nie chce widzieć pakietów i386 na liście pakietów.
midenok
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.