UnicodeDecodeError w Ubuntu podczas instalacji PHP5.6 z PPA

10

Mam czysty VPS z Ubuntu 14.04 LTS x64. Próbowałem następujących:

# 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

Ale potem zawodzi w ostatnim:

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)

Nie mogłem rozgryźć, co jest nie tak. To wszystko jest dość proste.

fiibaar
źródło
1
Właśnie dostałem ten błąd podczas budowania obrazu Dockera, spróbuj połączyć łańcuchowo dodawanie repozytorium export LANG=C.UTF-8, zadziałało to dla mnie.
Tomasz Kowalczyk
@TomaszKowalczyk, który również dla mnie pracował, dzięki!
utwardzony

Odpowiedzi:

12

Właściwym sposobem jest włączenie obsługi UTF-8 w twoim terminalu.

Najpierw sprawdź ustawienia regionalne:

locale -a

Następnie zainstaluj ustawienia regionalne UTF-8 dla en_US, przykład w następujący sposób:

locale-gen en_US.UTF-8

Następnie musisz go wyeksportować:

export LANG=en_US.UTF-8

Wtedy add-apt-repositorypolecenie będzie działało dobrze.

Jeśli to nadal nie działa, spróbuj użyć tej linii:

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

Arda
źródło
Dziękuję bardzo za Twoją pomoc. To był jedyny sposób, w jaki działałem. Ale dlaczego Linux sprawia, że ​​wszystko jest tak skomplikowane? Czy nie może istnieć standard, którego należy przestrzegać, aby wszystkie działały płynnie? Nie twierdzę, że Windows jest świetny, ponieważ porzucam go dla Linuksa, ale mój Boże, zawsze jest coś niedziałającego lub zgłaszającego błędy. To takie frustrujące. Niezależnie od nastroju chcę podziękować za ten doskonały proces.
marcnz
Nie ma za co! Niektóre dystrybucje (zwłaszcza niestandardowe wersje serwerów od dostawców VPS) są przygotowywane jako minimalne i nie zawierają pakietów obsługi UTF-8 dla mniejszej ilości zasobów, o ile wiem.
Arda,
Hm ... To nie działaCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby,
@ Kirby To dlatego, że nazwa PPA została zmieniona. Zaktualizowałem odpowiednio swoją odpowiedź. Jeden ppa ondrej/phpzawiera teraz wszystkie wersje PHP utrzymywane przez jego autora.
Arda,
4

Napotkałem ten sam problem. Myślę, że błąd pojawia się z powodu niezachodnich znaków w nazwie (Ond \ xc5 \ x99ej Sur ).

Upewnij się, że usunąłeś php5.

Możesz dodać repozytorium ręcznie:

# 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

Sprawdź za pomocą php -v, czy masz zainstalowaną wersję 5.6:

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

Spróbuj wykonać następujące czynności:

  • Usuń, jeśli już zainstalowałeś php5.

  • Teraz spróbuj nowej instalacji.

  • Uruchom, gedit /etc/apt/sources.listaby dodać następujące kody:

    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
    

    Ostrożnie edytuj i dodaj kod źródłowy.

  • Zapisz i zaktualizuj. (1234)

    sudo apt-get update  
    
  • Teraz spróbuj zainstalować php5.

Po zainstalowaniu powinieneś dostać php5-5.6.

shanmugam2138
źródło
Próbowałem tego. Nie działało To była świeża instalacja, przy okazji bez php.
fiibaar
Aby to działało, musisz zaimportować klucze ppa.
Arda,