Wymuś aktualizację z niepodpisanego repozytorium

63

Korzystam z niepodpisanego repozytorium w Ubuntu 16.04 z Debian multimedia:

deb http://www.deb-multimedia.org jessie main

Aby zainstalować deb-multimedia-keyring, działam:

apt-get update && apt-get install deb-multimedia-keyring -y

Daje to błąd:

W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'http://www.deb-multimedia.org jessie InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Shan
źródło

Odpowiedzi:

40

Możesz ominąć niektóre ważne zabezpieczenia , korzystając z następującej opcji:

--allow-unauthenticated

Ze stron podręcznika użytkownika dla apt-get:

--allow-unauthenticated
    Ignore if packages can't be authenticated and don't prompt about
    it. This can be useful while working with local repositories, but
    is a huge security risk if data authenticity isn't ensured in
    another way by the user itself. The usage of the Trusted option for
    sources.list(5) entries should usually be preferred over this
    global override. Configuration Item:
    APT::Get::AllowUnauthenticated.

Ale zachowaj ostrożność przy szerszym korzystaniu z tej opcji, wprowadzono zabezpieczenia chroniące komputer, a nie ograniczające swobodę ...

andrew.46
źródło
1
Używam Raspbian stretchi wyrównuję z opcją, E: The repository 'http://ftp.de.debian.org/debian testing InRelease' is not signed.którą chcę uaktualnić z Pythona 3.5. t 3.6.
Timo,
2
powiedział mi, że „tej opcji nie można interpretować łącznie z innymi opcjami” podczas wykonywaniasudo apt-get update --allow-unauthenticated
Xerus
26
UWAGA: Wydaje się, że nie działa to już w Ubuntu 18.04 od lipca 2018 r.
Jay Taylor
@JayTaylor: Właśnie otworzyłem nową maszynę wirtualną na 18.04 i polecenie działa tutaj doskonale. Wklej tutaj: pastebin.com/ygLTnP1C
andrew.46
2
Ciekawy; być może na maszynie może być coś innego, co wypróbowałem z powodu zaobserwowanych błędów. W każdym razie dodanie [trusted=yes]pola do sources.list działało. Dzięki za staranność @ andrew.46 :)
Jay Taylor
61

Możesz ustawić opcje w swoim sources.list(zlokalizowanym pod /etc/apt/sources.list):

deb [trusted=yes] http://www.deb-multimedia.org jessie main

Zaufana opcja wyłącza sprawdzanie GPG. Zobacz man 5 sources.listszczegóły.

Możesz edytować plik w terminalu za pomocą vima (lub cokolwiek wolisz) lub dowolnego edytora innego niż terminal, takiego jak gedit.

Prathu Baronia
źródło
Jak uzyskać dostęp sources.listz terminala?
fuzzi
1
Znajduje się w /etc/apt/sources.list. Możesz go edytować w terminalu za pomocą vima (lub cokolwiek wolisz) lub dowolnego edytora innego niż terminal, takiego jak gedit.
Prathu Baronia,
8

Innym ogólnym rozwiązaniem byłoby

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5C808C2B65558117

Uwaga: nie testowałem rozwiązania z tym repozytorium, ale zrobiłem to z repozytorium Skype i działało dobrze.

Innym rozwiązaniem specyficznym dla twojego przypadku jest instalacja kluczy

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2012.05.05_all.deb -O deb-multimedia-keyring.deb
sudo dpkg -i multimedia-keyring_all.deb

Jak opisano w pełnym opisie tutaj

Fady Mohamed Osman
źródło
3

Jeśli próbujesz pobrać pakiet z repozytorium, w którym spakowano klucze i dołączyć je do repozytorium, i nie ma go gdzie indziej, pobranie i zainstalowanie pakietu kluczy / kluczy przy użyciu dpkg może być bardzo denerwujące i bardzo trudne. w łatwy do pisania i powtarzalny sposób.

Poniższy skrypt nie jest zalecany, jeśli możesz zainstalować klucze z serwera kluczy (jak to zalecono w innej odpowiedzi, używając apt-key adv) lub jeśli możesz pobrać je z zaufanego źródła przez https i zainstalować za pomocą apt-key (np. wget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -), Ale jeśli nie „ Nie masz ŻADNEGO innego sposobu, możesz tego użyć.

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

Złożyłem to razem, ponieważ robi to i3 w repozytorium sur5r, ale potem dowiedziałem się, że ich klucze znajdują się na liście keyserver.ubuntu.com, więc mogę po prostu sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6uniknąć wszelkich dodatkowych problemów związanych z pakietem.

dragon788
źródło
Ta odpowiedź wydaje się niekompletna w przypadku Ubuntu 18.04. Próbuje mnie zirytować, mówiąc nieprzyjemne rzeczy, takie jak ... Release is not valid yet (invalid for another 44min 35s). Updates for this repository will not be applied. Nawet po napisaniu / var / lib / apt / list / * rzeczy ...
Jürgen Weigert
Jest to po prostu problem z replikacją lustrzaną i nie powinien wpływać na uwierzytelnianie lub podpisywanie pakietów w repozytoriach. Ponieważ 1804 dopiero wychodzi z wersji beta, wiele serwerów lustrzanych próbuje nadrobić zaległości, a usługa tworzenia kopii lustrzanych może wskazywać na serwer, który nie jest jeszcze w pełni zsynchronizowany.
dragon788
2

Możesz pobrać PUBLIC_KEY z serwera kluczy i dodać go do apt-key. Zakładając, że kluczowym serwerem jest pgpkeys.mit.edu, najpierw musisz wpisać:

gpg --keyserver pgpkeys.mit.edu --recv-key KEY_IN_ERROR
gpg -a --export KEY_IN_ERROR | sudo apt-key add -

Zamień klucz KEY_IN_ERROR na klucz w komunikacie o błędzie, tj. 5C808C2B65558117.

Ponadto, jeśli naprawdę chcesz dodać niepodpisane repozytorium, możesz dodać flagę do żądanego wpisu repozytorium w pliku sources.list w następujący sposób:

deb [allow-insecure=yes] http://www.deb-multimedia.org jessie main

Jest to bardzo przydatne, jeśli chcesz dostosować ustawienia zabezpieczeń dla poszczególnych wpisów.

Leonidas
źródło