UnicodeDecodeError ใน Ubuntu ขณะติดตั้ง PHP5.6 จาก PPA


10

ฉันมี VPS ที่สะอาดด้วย Ubuntu 14.04 LTS x64 และพยายามต่อไปนี้:

# 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

แต่แล้วมันก็ล้มเหลวในที่สุด:

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)

ฉันคิดไม่ออกว่าเกิดอะไรขึ้น มันเรียบง่าย


1
เพิ่งเกิดข้อผิดพลาดนั้นเมื่อสร้างอิมเมจ Docker ลองเพิ่มการเชื่อมโยงกับที่เก็บexport LANG=C.UTF-8มันใช้ได้สำหรับฉัน
Tomasz Kowalczyk

@TomaszKowalczyk ที่เหมาะกับฉันเช่นกันขอบคุณ!
hardsetting

คำตอบ:


12

วิธีที่เหมาะสมคือการเปิดใช้งานการสนับสนุน UTF-8 ในเครื่องของคุณ

ตรวจสอบสถานที่ของคุณก่อน:

locale -a

จากนั้นติดตั้งโลแคล UTF-8 สำหรับ en_US ตัวอย่างดังต่อไปนี้:

locale-gen en_US.UTF-8

จากนั้นคุณต้องส่งออก:

export LANG=en_US.UTF-8

จากนั้นadd-apt-repositoryคำสั่งจะทำงานได้ดี

หากยังไม่สามารถใช้งานได้ลองใช้สายนี้:

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


ขอบคุณมากสำหรับความช่วยเหลือของคุณ. นี่เป็นวิธีเดียวที่ฉันทำให้มันทำงานได้ แต่ทำไมลินุกซ์จึงทำให้สิ่งต่าง ๆ มีความซับซ้อน? ไม่สามารถมีมาตรฐานที่ต้องปฏิบัติตามเพื่อให้ทุกคนทำงานได้อย่างราบรื่นหรือไม่ ฉันไม่ได้บอกว่า Windows ยอดเยี่ยมเพราะฉันใช้ลินุกซ์ แต่พระเจ้าของฉันมักจะมีบางอย่างที่ไม่ทำงานหรือมีข้อผิดพลาดเกิดขึ้น มันช่างน่าหงุดหงิดเหลือเกิน ไม่ว่าฉันจะมีอารมณ์อะไรฉันอยากจะขอบคุณสำหรับกระบวนการที่สมบูรณ์แบบนี้
marcnz

ยินดีต้อนรับคุณ! การแจกแจงบางอย่าง (โดยเฉพาะรุ่นเซิร์ฟเวอร์ที่กำหนดเองโดยผู้ให้บริการ VPS) นั้นปรุงน้อยที่สุดและไม่รวมแพ็คเกจสนับสนุน UTF-8 สำหรับพื้นที่น้อยกว่าทรัพยากรเท่าที่ฉันสามารถบอกได้
Arda

หืมม ... มันไม่ทำงานCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
เคอร์บี้

@Kirby เป็นเพราะชื่อ PPA เปลี่ยนไป ฉันอัพเดตคำตอบแล้ว ppa หนึ่งอันondrej/phpตอนนี้เก็บเวอร์ชัน PHP ทั้งหมดที่ดูแลโดยผู้เขียน
Arda

4

ฉันประสบปัญหาเดียวกัน ฉันคิดว่าข้อผิดพลาดเกิดขึ้นเพราะตัวละครที่ไม่ใช่ตะวันตกในชื่อ (Ond \ xc5 \ x99ej Sur )

ตรวจสอบให้แน่ใจว่าคุณลบ php5

คุณสามารถเพิ่มที่เก็บได้ด้วยตนเอง:

# 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

ตรวจสอบกับ php -v ว่าคุณติดตั้ง 5.6 หรือไม่:

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

0

ลองติดตั้งชุดภาษาซึ่งอาจแก้ไขปัญหาของคุณด้วยการเข้ารหัสเช่น

sudo apt-get install language-pack-en

สิ่งนี้จะให้การอัปเดตข้อมูลการแปลภาษาอังกฤษสำหรับแพ็คเกจที่รองรับทั้งหมด (รวมถึง Python)

ดู: UnicodeEncodeError: ตัวแปลงสัญญาณ 'ascii' ไม่สามารถเข้ารหัสอักขระได้


0

ลองทำสิ่งต่อไปนี้:

  • โปรดลบหากคุณติดตั้ง php5 แล้ว

  • ตอนนี้ให้ลองติดตั้งใหม่

  • เรียกใช้gedit /etc/apt/sources.listเพื่อเพิ่มรหัสต่อไปนี้:

    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
    

    โปรดระมัดระวังในการแก้ไขและเพิ่มรหัสต้นฉบับ

  • บันทึกและอัปเดต (1234)

    sudo apt-get update  
    
  • ตอนนี้พยายามติดตั้ง php5

หลังจากติดตั้งแล้วคุณจะได้รับ php5-5.6


พยายามอย่างนั้น ใช้งานไม่ได้ มันเป็นการติดตั้งใหม่โดยไม่ต้องใช้ php
fiibaar

คุณต้องใช้คีย์ ppa ที่นำเข้าเพื่อให้ทำงานได้
Arda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.