Forçar atualização do repositório não assinado

63

Estou usando um repositório não assinado no Ubuntu 16.04 da Debian multimedia:

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

Para instalar deb-multimedia-keyring, estou executando:

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

Isso dá um erro:

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
fonte

Respostas:

40

Você pode ignorar algumas salvaguardas importantes usando a seguinte opção:

--allow-unauthenticated

Nas páginas de manual do 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.

Mas seja um pouco cauteloso ao usar essa opção mais amplamente, as salvaguardas existem para proteger seu computador e não limitar sua liberdade ...

andrew.46
fonte
11
Eu uso Raspbian stretche aproveito a opção que E: The repository 'http://ftp.de.debian.org/debian testing InRelease' is not signed.eu quero atualizar do python 3.5. t 3.6.
Timo
2
me disse que "esta opção não pode ser interpretado em conjunto com as outras opções" ao executarsudo apt-get update --allow-unauthenticated
Xerus
27
NOTA: Este não parece funcionar no Ubuntu 18.04 a partir de julho de 2018.
Jay Taylor
@ JayTaylor: Acabei de abrir uma nova máquina virtual para 18.04 e o comando funciona aqui perfeitamente. Pastebin aqui: pastebin.com/ygLTnP1C
andrew.46
2
Interessante; talvez possa haver algo diferente na máquina. Tentei por trás dos erros que observei. De qualquer forma, adicionar o [trusted=yes]campo ao sources.list funcionou. Obrigado pela sua diligência @ andrew.46 :)
Jay Taylor
62

Você pode definir opções no seu sources.list(localizado em /etc/apt/sources.list):

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

A opção confiável é o que desativa a verificação GPG. Veja man 5 sources.listpara detalhes.

Você pode editar o arquivo dentro do terminal com o vim (ou o que você preferir) ou qualquer editor que não seja do terminal, como o gedit.

Prathu Baronia
fonte
Como acessamos sources.listo terminal?
Fuzzi
11
Está localizado em /etc/apt/sources.list. Você pode editá-lo dentro do terminal com o vim (ou o que você preferir) ou qualquer editor não terminal como o gedit.
Prathu Baronia
8

Outra solução genérica seria

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

Nota: Não testei a solução com este repositório, mas fiz com o repositório do Skype e funcionou perfeitamente.

Outra solução específica para o seu caso é instalar as chaves

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

Conforme descrito na caminhada completa por Aqui

fady mohamed osman
fonte
3

Se você está tentando obter um pacote de um repositório onde eles empacotaram as chaves e incluí-las no repositório e em nenhum outro lugar, pode ser muito irritante fazer o download e instalar o pacote key / keyring usando o dpkg, e é muito difícil fazê-lo. de uma maneira facilmente programável e repetível.

O script abaixo não é recomendado se você pode instalar as chaves de um servidor de chaves (como recomendado em outra resposta usando apt-key adv) ou se você pode baixá-las de uma fonte confiável via https e instalar usando apt-key (por exemplo wget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -), mas se não Não tem nenhuma outra maneira, você pode usar isso.

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

Originalmente, juntei isso porque o i3 no repositório sur5r faz isso, mas descobri que as chaves deles estão na lista keyserver.ubuntu.com, para que eu possa sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6evitar todos os problemas extras do pacote.

dragon788
fonte
Esta resposta parece incompleta, quando confrontado com o Ubuntu 18.04 Não tenta me irritar dizendo coisas desagradáveis como ... Release is not valid yet (invalid for another 44min 35s). Updates for this repository will not be applied. Mesmo depois de-rm ing / var / lib / apt / lists / * coisas ...
Jürgen Weigert
Isso é simplesmente um problema de replicação espelhada e não deve afetar a autenticação ou assinatura de pacotes nos repositórios. Como o 1804 está saindo da versão beta, muitos espelhos estão tentando recuperar o atraso e o serviço de espelhamento pode indicar um servidor que ainda não está totalmente sincronizado.
precisa saber é o seguinte
2

Você pode obter o PUBLIC_KEY do servidor de chaves e adicioná-lo ao apt-key. Supondo que o servidor de chaves seja pgpkeys.mit.edu, primeiro você precisa digitar:

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

Substitua a chave KEY_IN_ERROR pela chave na sua mensagem de erro, ou seja, 5C808C2B65558117.

Além disso, se você estiver realmente interessado em adicionar um repositório não assinado, poderá adicionar o sinalizador a na entrada do repositório desejada no sources.list como este:

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

Isso é realmente útil se você deseja ajustar suas configurações de segurança para entradas individuais.

leonidas
fonte