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.