add-apt-repository génère une erreur Python: UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xc5


27

Essayer d'installer les derniers packages PHP5 et donc j'ajoute le repo (sudo add-apt-repository ppa: ondrej / php5) dont j'ai besoin et voici le résultat:

    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)

Fonctionnant sur le serveur Ubuntu 12.04


1
Avez-vous gâché l'installation par défaut de python (par exemple, relier symétriquement python3.2 à / usr / bin / python?) - apt devrait utiliser le système par défaut python2.7 le 12.04. Pouvez-vous ajouter la sortie de ls -l $(which python)à votre message?
steeldriver

lrwxrwxrwx 1 root root 9 avril 10 2013 / usr / bin / python -> python2.7 J'ai installé les packages afin d'obtenir apt-add-repo (qui dérange avec Python iiirc)
James Heald

Dans ce cas, je ne comprends pas pourquoi il utilise apparemment python3.2 - désolé
steeldriver

Réponses:


67

Le logiciel-propriétés-commun est bogué, donc si vous en avez le temps, veuillez le signaler comme un bogue dans le logiciel-propriétés-commun.

Une meilleure solution de contournement a été signalée dans l'outil de suivi des problèmes qui utilise des paramètres régionaux Unicode spécifiques lors de l'ajout du référentiel

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

6

Essayez d'installer un module linguistique qui peut corriger vos problèmes d'encodage, par exemple

sudo apt-get install language-pack-en

Cela fournira des mises à jour des données de traduction en anglais pour tous les packages pris en charge (y compris Python).

Voir: UnicodeEncodeError: le codec 'ascii' ne peut pas coder le caractère .

Sinon, définissez les paramètres régionaux manuellement, par exemple

$ 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

En relation: erreur de locale avec l'installation d'apt-get


2

Si vous êtes en docker, cela a fonctionné pour moi:

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

Un après:

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

0

Pour moi, ajouter php5-compat avant que php n'ait résolu mon problème sur Ubuntu 16.

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

et alors

sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.