UnicodeDecodeError in Ubuntu während der Installation von PHP5.6 von PPA


10

Ich habe ein sauberes VPS mit Ubuntu 14.04 LTS x64. Und versuchte Folgendes:

# 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

Aber dann scheitert es beim letzten:

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)

Ich konnte nicht herausfinden, was falsch ist. Es ist alles ziemlich einfach.


1
export LANG=C.UTF-8Ich habe gerade diesen Fehler beim Erstellen eines Docker-Images erhalten. Versuchen Sie, das Hinzufügen eines Repositorys zu verketten . Es hat bei mir funktioniert.
Tomasz Kowalczyk

@TomaszKowalczyk das hat auch bei mir funktioniert, danke!
Hardsetting

Antworten:


12

Der richtige Weg ist, die UTF-8-Unterstützung in Ihrem Terminal zu aktivieren.

Überprüfen Sie zuerst Ihre Gebietsschemas:

locale -a

Installieren Sie dann ein UTF-8-Gebietsschema für en_US, das folgende Beispiel:

locale-gen en_US.UTF-8

Dann müssen Sie es exportieren:

export LANG=en_US.UTF-8

Dann add-apt-repositoryfunktioniert der Befehl einwandfrei.

Wenn dies immer noch nicht funktioniert, verwenden Sie diese Zeile:

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


Vielen Dank für deine Hilfe. Nur so konnte ich es zum Laufen bringen. Aber warum macht Linux die Dinge so kompliziert? Kann es keinen Standard geben, der befolgt werden muss, damit alle reibungslos funktionieren? Ich sage nicht, dass Windows großartig ist, da ich es für Linux fallen lasse, aber mein Gott, es gibt immer etwas, das nicht funktioniert oder Fehler auslöst. Es ist so frustrierend. Was auch immer meine Stimmung ist, ich möchte mich bei Ihnen für diesen perfekten Prozess bedanken.
Marcnz

Bitte! Einige Distributionen (insbesondere angepasste Server-Editionen von VPS-Anbietern) werden als minimal eingestuft und enthalten keine UTF-8-Support-Pakete für weniger Speicherplatz und Ressourcen, soweit ich das beurteilen kann.
Arda

Hm ... Es funktioniert nichtCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby

@Kirby Es ist, weil der PPA-Name geändert wird. Ich habe meine Antwort entsprechend aktualisiert. Die eine ppa enthält ondrej/phpjetzt alle PHP-Versionen, die vom Autor verwaltet werden.
Arda

4

Ich hatte das gleiche Problem. Ich denke, der Fehler liegt an den nicht westlichen Zeichen im Namen (Ond \ xc5 \ x99ej Sur ).

Stellen Sie sicher, dass Sie php5 entfernt haben.

Sie können das Repository manuell hinzufügen:

# 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

Überprüfen Sie mit PHP -V, ob Sie 5.6 installiert haben:

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


0

Versuche Folgendes:

  • Bitte entfernen Sie, wenn Sie PHP5 bereits installiert haben.

  • Versuchen Sie nun eine Neuinstallation.

  • Führen Sie aus gedit /etc/apt/sources.list, um folgende Codes hinzuzufügen:

    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
    

    Bitte achten Sie darauf, den Quellcode zu bearbeiten und hinzuzufügen.

  • Speichern und aktualisieren Sie es. (1234)

    sudo apt-get update  
    
  • Versuchen Sie nun, php5 zu installieren.

Nach der Installation sollten Sie php5-5.6 erhalten.


Versuchte das. Hat nicht funktioniert. Es war eine Neuinstallation, übrigens ohne PHP.
Fiibaar

Sie benötigen die importierten ppa-Schlüssel, damit dies funktioniert.
Arda
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.