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 апреля 10 2013 / usr / bin / python -> python2.7 Я установил пакеты, чтобы получить apt-add-repo (который портит Python iiirc)
Джеймс Хилд
В этом случае я не понимаю, почему он использует python3.2 - извините
steeldriver

Ответы:

67

Общие свойства программного обеспечения содержат ошибки, поэтому, если есть время, сообщите об этом как об ошибке в общих свойствах программного обеспечения.

Лучший обходной путь был указан в трекере проблем, который использует конкретную локали юникода при добавлении хранилища

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php5-5.6
oerdnj
источник
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

kenorb
источник
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
JRichardsz
источник
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
Зареф Ахмед
источник