从PPA安装PHP5.6时在Ubuntu中出现UnicodeDecodeError


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 2015年

@TomaszKowalczyk也为我工作,谢谢!
2015年

Answers:


12

正确的方法是在终端中启用UTF-8支持。

首先检查您的语言环境:

locale -a

然后,为en_US安装一个UTF-8语言环境,如下所示:

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


非常感谢你的帮助。这是我使其工作的唯一方法。但是,为什么Linux使事情变得如此复杂?难道没有必须遵循的标准才能使所有工作顺利进行吗?我并不是说Windows很棒,而是我放弃了Linux,但是我的天哪总是有些东西不起作用或抛出错误。真令人沮丧。无论我的心情如何,我都想感谢您的完美过程。
marcnz 2015年

别客气!某些发行版(尤其是VPS提供商定制的服务器版本)被制作得很少,并且不包含UTF-8支持包,以减少空间和资源(据我所知)。
2015年

嗯...这行不通Cannot add PPA: 'ppa:ondrej/php5-5.6'. Please check that the PPA name or format is correct.
Kirby

@Kirby这是因为PPA名称已更改。我已经相应更新了答案。ondrej/php现在,一个PPA 包含其作者维护的所有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

请尝试以下操作:

  • 如果已安装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 2015年

您需要导入的ppa密钥才能起作用。
Arda 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.