UnicodeDecodeError no Ubuntu durante a instalação do PHP5.6 a partir do PPA

10

Eu tenho um VPS limpo, com o Ubuntu 14.04 LTS x64. E tentei o seguinte:

# 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

Mas então falha no ú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)

Eu não conseguia descobrir o que estava errado. É tudo muito básico.

fiibaar
fonte
1
Acabei de receber esse erro ao criar a imagem do Docker, tente encadear a adição de repositório export LANG=C.UTF-8, funcionou para mim.
Tomasz Kowalczyk
@TomaszKowalczyk que funcionou para mim também, obrigado!
hardsetting

Respostas:

12

A maneira correta é habilitar o suporte UTF-8 em seu terminal.

Primeiro verifique seus locais:

locale -a

Em seguida, instale um código de idioma UTF-8, para en_US, o exemplo da seguinte maneira:

locale-gen en_US.UTF-8

Então você precisa exportá-lo:

export LANG=en_US.UTF-8

Então o add-apt-repositorycomando funcionará bem.

Se isso ainda não funcionar, tente usar esta linha:

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

Arda
fonte
Muito obrigado pela sua ajuda. Esta foi a única maneira de fazê-lo funcionar. Mas por que o Linux torna as coisas tão complicadas? Não pode haver um padrão que deva ser seguido para que tudo funcione sem problemas? Não estou dizendo que o Windows é ótimo, pois estou descartando o Linux, mas meu Deus, sempre há algo que não está funcionando ou está gerando erros. Isso é tão frustrante. Seja qual for o meu humor, quero agradecer por esse processo perfeito.
Marc #
De nada! Algumas distribuições (edições especialmente personalizadas do servidor por provedores de VPS) são processadas no mínimo e não incluem pacotes de suporte UTF-8 por menos espaço, recursos, tanto quanto eu sei.
Arda #
Hm ... Não funcionaCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby
@ Kirby É porque o nome do PPA foi alterado. Atualizei minha resposta de acordo. O único ppa ondrej/phpagora possui todas as versões do PHP mantidas por seu autor.
Arda
4

Eu enfrentei o mesmo problema. Eu acho que o erro ocorre por causa dos caracteres não ocidentais no nome (Ond \ xc5 \ x99ej Sur ).

Certifique-se de remover o php5.

Você pode adicionar o repositório 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 com o php -v se você possui o 5.6 instalado:

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

Tente o seguinte:

  • Por favor, remova se você já instalou o php5.

  • Agora tente uma nova instalação.

  • Execute gedit /etc/apt/sources.listpara adicionar os seguintes 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, tenha cuidado para editar e adicionar código fonte.

  • Salve e atualize-o. (1234)

    sudo apt-get update  
    
  • Agora tente instalar o php5.

Depois de instalado, você deve obter o php5-5.6.

shanmugam2138
fonte
Tentei isso. Não funcionou. Foi uma instalação nova, sem php nela, a propósito.
11135 fiibaar #
Você precisa das chaves ppa importadas para que isso funcione.
Arda #