UnicodeDecodeError en Ubuntu al instalar PHP5.6 desde PPA

10

Tengo un VPS limpio, con Ubuntu 14.04 LTS x64. Y probé lo siguiente:

# 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

Pero luego falla en el último:

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)

No pude entender qué está mal. Todo es bastante básico.

fiibaar
fuente
1
Acabo de recibir ese error al construir la imagen de Docker, intente encadenar agregando repositorio export LANG=C.UTF-8, funcionó para mí.
Tomasz Kowalczyk
@TomaszKowalczyk que también funcionó para mí, ¡gracias!
endurecidos

Respuestas:

12

La forma correcta es habilitar el soporte UTF-8 en su terminal.

Primero verifique sus locales:

locale -a

Luego, instale un entorno local UTF-8, para en_US, el ejemplo de la siguiente manera:

locale-gen en_US.UTF-8

Entonces necesitas exportarlo:

export LANG=en_US.UTF-8

Entonces el add-apt-repositorycomando funcionará bien.

Si esto todavía no funciona, intente usar esta línea:

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

Arda
fuente
Muchas gracias por tu ayuda. Esta fue la única forma en que lo hice funcionar. Pero, ¿por qué Linux hace las cosas tan complicadas? ¿No puede haber un estándar que deba seguirse para que todo funcione sin problemas? No digo que Windows sea genial, ya que lo estoy abandonando para Linux, pero Dios mío, siempre hay algo que no funciona o arroja errores. Es muy frustrante. Cualquiera que sea mi estado de ánimo, quiero agradecerles por este proceso perfecto.
marcnz
¡De nada! Algunas distribuciones (especialmente las ediciones de servidor personalizadas por proveedores de VPS) se cocinan como mínimas, y no incluyen paquetes de soporte UTF-8 por menos espacio, recursos por lo que puedo decir.
Arda
Hm ... No funcionaCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby
@ Kirby Es porque se cambió el nombre de PPA. He actualizado mi respuesta en consecuencia. El único ppa ondrej/phpahora contiene todas las versiones de PHP mantenidas por su autor.
Arda
4

Me enfrenté al mismo problema. Creo que el error se debe a los caracteres no occidentales en el nombre (Ond \ xc5 \ x99ej Sur ).

Asegúrate de haber eliminado php5.

Puede agregar el repositorio manualmente:

# 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

Verifique con php -v si tiene instalado 5.6:

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

Intenta lo siguiente:

  • Elimine si ya instaló php5.

  • Ahora intente una nueva instalación.

  • Ejecute gedit /etc/apt/sources.listpara agregar los siguientes códigos:

    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
    

    Por favor, tenga cuidado de editar y agregar el código fuente.

  • Guárdalo y actualízalo. (1234)

    sudo apt-get update  
    
  • Ahora intenta instalar php5.

Después de instalarlo debería obtener php5-5.6.

shanmugam2138
fuente
Intenté eso. No funciono Fue una instalación nueva, sin php por cierto.
fiibaar
Necesita las claves ppa importadas para que esto funcione.
Arda