UnicodeDecodeError trong Ubuntu khi cài đặt PHP5.6 từ PPA


10

Tôi có một VPS sạch, với Ubuntu 14.04 LTS x64. Và đã thử như sau:

# 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

Nhưng sau đó nó thất bại ở lần cuối:

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)

Tôi không thể tìm ra điều gì sai. Tất cả đều khá cơ bản.


1
Chỉ gặp lỗi đó khi xây dựng hình ảnh Docker, hãy thử thêm chuỗi kho lưu trữ export LANG=C.UTF-8, nó hoạt động với tôi.
Tomasz Kowalchot

@TomaszKowalchot cũng làm việc cho tôi, cảm ơn!
hardsetting

Câu trả lời:


12

Cách thích hợp là kích hoạt hỗ trợ UTF-8 trong thiết bị đầu cuối của bạn.

Trước tiên hãy kiểm tra địa phương của bạn:

locale -a

Sau đó, cài đặt ngôn ngữ UTF-8, cho en_US, ví dụ như sau:

locale-gen en_US.UTF-8

Sau đó, bạn cần xuất nó:

export LANG=en_US.UTF-8

Sau đó, add-apt-repositorylệnh sẽ hoạt động tốt.

Nếu điều này vẫn không hoạt động, hãy thử sử dụng dòng này:

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


Cảm ơn rất nhiều vì sự giúp đỡ của bạn. Đây là cách duy nhất tôi làm cho nó hoạt động. Nhưng tại sao Linux lại khiến mọi thứ trở nên phức tạp như vậy? Không thể có một tiêu chuẩn phải được tuân theo để tất cả hoạt động trơn tru? Tôi không nói rằng Windows là tuyệt vời khi tôi bỏ nó cho Linux, nhưng chúa ơi, luôn có một cái gì đó không hoạt động hoặc ném lỗi. Thật là bực bội. Dù tâm trạng của tôi là gì, tôi muốn cảm ơn bạn vì quá trình hoàn hảo này.
marcnz

Không có gì! Một số bản phân phối (đặc biệt là các phiên bản máy chủ được tùy chỉnh bởi các nhà cung cấp VPS) được nấu ở mức tối thiểu và không bao gồm các gói hỗ trợ UTF-8 để có ít không gian hơn, theo như tôi có thể biết.
Arda

Hừm ... Nó không hoạt độngCannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby

@Kirby Đó là vì tên PPA đã được thay đổi. Tôi đã cập nhật câu trả lời của mình cho phù hợp. Một ppa ondrej/phphiện giữ tất cả các phiên bản PHP được duy trì bởi tác giả của nó.
Arda

4

Tôi phải đối mặt với cùng một vấn đề. Tôi nghĩ rằng lỗi xảy ra do các ký tự không phải phương tây trong tên (Ond \ xc5 \ x99ej Sur ).

Hãy chắc chắn rằng bạn đã xóa php5.

Bạn có thể thêm kho lưu trữ theo cách thủ công:

# 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

Kiểm tra với php -v xem bạn đã cài đặt 5.6 chưa:

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

0

Hãy thử cài đặt gói ngôn ngữ có thể khắc phục sự cố của bạn bằng mã hóa, ví dụ:

sudo apt-get install language-pack-en

Điều này sẽ cung cấp cập nhật dữ liệu dịch tiếng Anh cho tất cả các gói được hỗ trợ (bao gồm cả Python).

Xem: UnicodeEncodeError: 'ascii' codec không thể mã hóa ký tự .


0

Hãy thử như sau:

  • Vui lòng xóa nếu bạn đã cài đặt php5.

  • Bây giờ hãy thử cài đặt mới.

  • Chạy gedit /etc/apt/sources.listđể thêm các mã sau:

    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
    

    Hãy cẩn thận để chỉnh sửa và thêm mã nguồn.

  • Lưu và cập nhật nó. (1234)

    sudo apt-get update  
    
  • Bây giờ hãy thử cài đặt php5.

Sau khi cài đặt, bạn sẽ nhận được php5-5.6.


Đã thử mà. Không hoạt động. Đó là một bản cài đặt mới, không có php trên đó.
fiibaar

Bạn cần các khóa ppa được nhập để làm việc này.
Arda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.