add-apt-repository zgłasza błąd Python: UnicodeDecodeError: kodek „ascii” nie może dekodować bajtu 0xc5

27

Próbuję zainstalować najnowsze pakiety PHP5, więc dodaję repo (sudo add-apt-repository ppa: ondrej / php5) Potrzebuję i to jest wynik:

    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)

Działa na serwerze Ubuntu 12.04

James Heald
źródło
1
Czy pomieszałeś przy domyślnej instalacji Pythona (na przykład łącząc symbolicznie python3.2 z / usr / bin / python?) - apt powinien używać domyślnego systemu python2.7 12.04. Czy możesz dodać wynik ls -l $(which python)do swojego postu?
steeldriver
lrwxrwxrwx 1 root root 9 kwietnia 10 2013 / usr / bin / python -> python2.7 Zrobiłem instalację pakietów, aby uzyskać apt-add-repo (który bałagan z Python iiirc)
James Heald
W takim przypadku nie rozumiem, dlaczego najwyraźniej używa python3.2 - przepraszam
steeldriver

Odpowiedzi:

67

Wspólne właściwości oprogramowania są błędne, więc jeśli masz czas, zgłoś to jako błąd we wspólnych właściwościach oprogramowania.

Lepsze obejście zostało wskazane w narzędziu do śledzenia problemów, który używa określonych ustawień narodowych Unicode podczas dodawania repozytorium

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php5-5.6
oerdnj
źródło
6

Spróbuj zainstalować pakiet językowy, który może rozwiązać problemy z kodowaniem, np

sudo apt-get install language-pack-en

Zapewni to aktualizacje danych tłumaczenia na angielski dla wszystkich obsługiwanych pakietów (w tym Pythona).

Patrz: UnicodeEncodeError : Kodek „ascii” nie może kodować znaków .

W przeciwnym razie ręcznie ustaw ustawienia regionalne, np

$ 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

Powiązane: błąd ustawień regionalnych przy instalacji apt-get

kenorb
źródło
2

Jeśli jesteś w oknie dokowanym, działało to dla mnie:

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

Po:

RUN apt-get update
RUN apt-get install -y php7.2
JRichardsz
źródło
0

Dla mnie dodanie php5 -comp zanim php rozwiązało mój problem na Ubuntu 16.

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

i wtedy

sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
Zareef Ahmed
źródło