O add-apt-repository gera um erro Python: UnicodeDecodeError: o codec 'ascii' não pode decodificar o byte 0xc5

27

Tentando instalar os pacotes PHP5 mais recentes, adiciono o repositório (sudo add-apt-repository ppa: ondrej / php5) necessário e este é o resultado:

    Traceback (most recent call last):
  File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 141, in run
    self.add_ppa_signing_key(self.ppa_path)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 234, in add_ppa_signing_key
    tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir):
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 186, in _verify_fingerprint
    got_fingerprints = self._get_fingerprints(keyring, keyring_dir)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 178, in _get_fingerprints
    output = subprocess.check_output(cmd, universal_newlines=True)
  File "/usr/lib/python3.2/subprocess.py", line 516, in check_output
    output, unused_err = process.communicate()
  File "/usr/lib/python3.2/subprocess.py", line 811, in communicate
    stdout = _eintr_retry_call(self.stdout.read)
  File "/usr/lib/python3.2/subprocess.py", line 456, in _eintr_retry_call
    return func(*args)
  File "/usr/lib/python3.2/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 92: ordinal not in range(128)

Executando no Ubuntu 12.04 Server

James Heald
fonte
1
Você mexeu com a instalação padrão do python (por exemplo, associando o python3.2 a / usr / bin / python?) - o apt deve estar usando o python2.7 padrão do sistema na versão 12.04. Você pode adicionar a saída de ls -l $(which python)sua postagem?
Steeldiver
lrwxrwxrwx 1 root root 9 10 de abril de 2013 / usr / bin / python -> python2.7 eu fiz instalar os pacotes a fim de obter apt-add-repo (que mexe com Python iiirc)
James Heald
Nesse caso, eu não entendo por que ele é aparentemente usando python3.2 - sorry
steeldriver

Respostas:

66

O software-properties-common é com erros, portanto, se tiver um tempo, por favor relate isso como um bug em software-properties-common.

Uma solução alternativa melhor foi apontada no rastreador de problemas que usa localidade unicode específica ao adicionar o repositório

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php5-5.6
oerdnj
fonte
6

Tente instalar um pacote de idiomas que pode corrigir seus problemas de codificação, por exemplo

sudo apt-get install language-pack-en

Isso fornecerá atualizações de dados de tradução em inglês para todos os pacotes suportados (incluindo Python).

Consulte: UnicodeEncodeError: o codec 'ascii' não pode codificar caracteres .

Caso contrário, defina as configurações de localidade manualmente, por exemplo,

$ locale -a | grep "^en_.\+UTF-8"
en_GB.UTF-8
en_US.UTF-8
$ export LC_ALL=en_GB.UTF-8
$ export LANG=en_GB.UTF-8

Relacionado: erro de localidade com o apt-get install

kenorb
fonte
2

Se você estiver na janela de encaixe, isso funcionou para mim:

RUN LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

Um depois:

RUN apt-get update
RUN apt-get install -y php7.2
JRichardsz
fonte
0

Para mim, adicionar php5-compat antes que o php resolvesse meu problema no ubuntu 16.

sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php5-compat

e depois

sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
Zareef Ahmed
fonte