add-apt-repository викидає помилку Python: UnicodeDecodeError: 'ascii' кодек не може розшифрувати байт 0xc5


27

Намагаюся встановити останні пакети PHP5, і тому я додаю репо (sudo add-apt-repository ppa: ondrej / php5), що мені потрібно, і це результат:

    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)

Працює на сервері Ubuntu 12.04


1
Ви заблукали з установкою python за замовчуванням (наприклад, що посилається на python3.2 до / usr / bin / python?) - apt має використовувати системний python2.7 за замовчуванням 12.04. Чи можете ви додати результати ls -l $(which python)своєї публікації?
steeldriver

lrwxrwxrwx 1 root root 9 квітня 2013 / usr / bin / python -> python2.7 Я встановив пакунки, щоб отримати apt-add-repo (який обмінюється з Python iiirc)
James Heald

У цьому випадку я не розумію, чому, мабуть, використовується python3.2 - вибачте
steeldriver

Відповіді:


67

Загальноприйнятні програмні властивості є помилковими, тому, якщо є час, повідомте про це як про помилку у властивостях програмного забезпечення-поширених.

Краще вирішення було вказано в трекері випусків, який використовує специфічну локаль унікоду при додаванні сховища

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

6

Спробуйте встановити мовний пакет, який може виправити ваші проблеми з кодуванням, наприклад

sudo apt-get install language-pack-en

Це забезпечить оновлення даних про переклад англійською мовою для всіх підтримуваних пакетів (включаючи Python).

Див.: UnicodeEncodeError: кодек "ascii" не може кодувати символ .

В іншому випадку встановіть параметри локалі вручну, наприклад,

$ 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

Пов’язано: помилка локалі при встановленні apt-get


2

Якщо ви перебуваєте в докері, це працювало для мене:

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

Після:

RUN apt-get update
RUN apt-get install -y php7.2

0

Для мене додавання php5-compat перед php вирішило мою проблему на ubuntu 16.

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

і потім

sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.