UnicodeDecodeError dans Ubuntu lors de l'installation de PHP5.6 à partir de PPA


10

J'ai un VPS propre, avec Ubuntu 14.04 LTS x64. Et j'ai essayé ce qui suit:

# Upgrade The Base Packages

apt-get update
apt-get upgrade -y

# Add A Few PPAs To Stay Current

apt-get install -y software-properties-common

apt-add-repository ppa:nginx/stable -y
apt-add-repository ppa:rwky/redis -y
apt-add-repository ppa:chris-lea/node.js -y
apt-add-repository ppa:ondrej/php5-5.6 -y

Mais alors il échoue au dernier:

root@xxx:~# apt-add-repository ppa:ondrej/php5-5.6 -y

gpg: keyring `/tmp/tmp9jdzm9kw/secring.gpg' created
gpg: keyring `/tmp/tmp9jdzm9kw/pubring.gpg' created
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp9jdzm9kw/trustdb.gpg: trustdb created
gpg: key E5267A6C: public key "Launchpad PPA for Ond\xc5\x99ej Sur�" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.4/threading.py", line 868, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 687, in addkey_func
    func(**kwargs)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 370, in add_key
    return apsk.add_ppa_signing_key()
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 261, in add_ppa_signing_key
    tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir):
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 210, in _verify_fingerprint
    got_fingerprints = self._get_fingerprints(keyring, keyring_dir)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 202, in _get_fingerprints
    output = subprocess.check_output(cmd, universal_newlines=True)
  File "/usr/lib/python3.4/subprocess.py", line 605, in check_output
    output, unused_err = process.communicate(inputdata, timeout=timeout)
  File "/usr/lib/python3.4/subprocess.py", line 936, in communicate
    stdout = _eintr_retry_call(self.stdout.read)
  File "/usr/lib/python3.4/subprocess.py", line 487, in _eintr_retry_call
    return func(*args)
  File "/usr/lib/python3.4/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)

Je ne pouvais pas comprendre ce qui ne va pas. C'est assez basique.


1
Je viens de recevoir cette erreur lors de la création de l'image Docker, essayez de chaîner l'ajout de référentiel avec export LANG=C.UTF-8, cela a fonctionné pour moi.
Tomasz Kowalczyk

@TomaszKowalczyk qui a également fonctionné pour moi, merci!
hardsetting

Réponses:


12

La bonne façon est d'activer la prise en charge UTF-8 dans votre terminal.

Vérifiez d'abord vos paramètres régionaux:

locale -a

Ensuite, installez une locale UTF-8, pour en_US, l'exemple comme suit:

locale-gen en_US.UTF-8

Ensuite, vous devez l'exporter:

export LANG=en_US.UTF-8

Ensuite, la add-apt-repositorycommande fonctionnera correctement.

Si cela ne fonctionne toujours pas, essayez d'utiliser cette ligne:

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


Je vous remercie beaucoup pour votre aide. C'était la seule façon de le faire fonctionner. Mais pourquoi Linux rend-il les choses si compliquées? Ne peut-il pas y avoir une norme à suivre pour que tout fonctionne bien? Je ne dis pas que Windows est génial car je l'abandonne pour Linux, mais mon dieu, il y a toujours quelque chose qui ne fonctionne pas ou qui génère des erreurs. C'est tellement frustrant. Quelle que soit mon humeur, je tiens à vous remercier pour ce processus parfait.
marcnz

Vous êtes les bienvenus! Certaines distributions (en particulier les éditions de serveur personnalisées par les fournisseurs VPS) sont cuites comme minimales et n'incluent pas de packages de support UTF-8 pour moins d'espace, de ressources pour autant que je sache.
Arda

Hm ... Ça ne marche pasCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby

@Kirby C'est parce que le nom PPA a changé. J'ai mis à jour ma réponse en conséquence. Le seul ppa ondrej/phpcontient désormais toutes les versions PHP maintenues par son auteur.
Arda

4

J'ai fait face au même problème. Je pense que l'erreur vient des caractères non occidentaux du nom (Ond \ xc5 \ x99ej Sur ).

Assurez-vous d'avoir supprimé php5.

Vous pouvez ajouter le référentiel manuellement:

# echo "deb http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu trusty main" > /etc/apt/sources.list.d/ondrej-php5-5_6-trusty.list

# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C

# apt-get install php5

Vérifiez avec php -v si vous avez installé 5.6:

# php -v
PHP 5.6.6-1+deb.sury.org~trusty+1 (cli) (built: Feb 20 2015 11:22:10) 


0

Essayez ce qui suit:

  • Veuillez supprimer si vous avez déjà installé php5.

  • Essayez maintenant une nouvelle installation.

  • Exécutez gedit /etc/apt/sources.listpour ajouter les codes suivants:

    deb http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu trusty main 
    deb-src http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu trusty main
    

    Veuillez prendre soin de modifier et d'ajouter le code source.

  • Enregistrez-le et mettez-le à jour. (1234)

    sudo apt-get update  
    
  • Essayez maintenant d'installer php5.

Après l'installation, vous devriez obtenir php5-5.6.


J'ai essayé ça. Ça n'a pas marché. C'était une nouvelle installation, sans php sur le fait.
fiibaar

Vous avez besoin des clés ppa importées pour que cela fonctionne.
Arda
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.