Установка Python-2.7 на Ubuntu 10.4

Я не могу правильно установить zlib, я установил Python из источника на Ubuntu10.4

'######## edit #####################

bobince и Luper помогли.
Убедитесь, что вы устанавливаете эти пакеты, а затем перекомпилируете Python:
sudo aptitude install zlib1g-dev libreadline6-dev libdb4.8-dev libncurses5-dev
"#################################

После установки я попытался установить setuptools.py

$ sh setuptools-0.6c11-py2.7.egg   
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

Затем я установил zlib:

$ sudo aptitude install zlibc  
Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
Reading extended state information        
Initializing package states... Done  
The following NEW packages will be installed:  
  zlibc   
0 packages upgraded, 1 newly installed, 0 to remove and 44 not upgraded.  
Need to get 74.6kB of archives. After unpacking 299kB will be used.  
Writing extended state information... Done  
Get:1 http://archive.ubuntu.com/ubuntu/ lucid/universe zlibc 0.9k-4.1 [74.6kB]  
Fetched 74.6kB in 0s (108kB/s)  
Selecting previously deselected package zlibc.  
(Reading database ... 19824 files and directories currently installed.)  
Unpacking zlibc (from .../zlibc_0.9k-4.1_amd64.deb) ...  
Processing triggers for man-db ...  
Setting up zlibc (0.9k-4.1) ...  
Reading package lists... Done               
Building dependency tree         
Reading state information... Done  
Reading extended state information        
Initializing package states... Done  

Перед перекомпиляцией Python:

но setuptools по-прежнему не будут установлены:

$ sh setuptools-0.6c11-py2.7.egg   
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

Я озадачен.

Я проверил свои права:

lrwxrwxrwx 1 root      18 Oct 28 18:19 /usr/bin/python -> /usr/bin/python2.7
lrwxrwxrwx 1 root      24 Oct 28 18:26 /usr/bin/python2.7 -> /usr/local/bin/python2.7
lrwxrwxrwx 1 root       9 Oct 28 15:13 /usr/bin/python2 -> python2.6
-rwxr-xr-x 1 root 2613296 Apr 16  2010 /usr/bin/python2.6

Я заметил, что добавил дополнительный шаг, поэтому я его реорганизовал:

llrwxrwxrwx 1 root      24 Oct 28 18:33 /usr/bin/python -> /usr/local/bin/python2.7  
lrwxrwxrwx 1 root       9 Oct 28 15:13 /usr/bin/python2 -> python2.6  
-rwxr-xr-x 1 root 2613296 Apr 16  2010 /usr/bin/python2.6  

Итак, теперь Python2.7 должен быть версией по умолчанию, но он все равно не работает.

$ sh setuptools-0.6c11-py2.7.egg --prefix=/usr/local/bin/python2.7  
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

Где должно быть расположено zlib для правильной работы?

$ find / -name zlib 2>/dev/null  
/home/username/sources/Python-2.7/Modules/zlib  
/home/username/sources/Python-2.7/Demo/zlib  

[email protected] Thu Oct 28 18:43:17 ~/sources   
$ find / -name zlibc 2>/dev/null  
/usr/share/lintian/overrides/zlibc  
/usr/share/doc/zlibc

Ответы

Ответ 1

Вы не хотите zlibc, это что-то еще полностью. Вы хотите zlib1g (который, безусловно, будет установлен уже), и, как сказал Люпер, "пакет разработки zlib1g-dev.

Debian-дистрибутивы Linux разбивают каждую библиотеку C на отдельный бинарный пакет времени выполнения и пакет разработки, который предоставляет заголовки для включения во время компиляции. Если вы хотите скомпилировать что-то из источника, который полагается на библиотеку, вам нужны оба пакета. Это немного раздражает, но, вероятно, неизбежно, учитывая невероятно огромное количество библиотек, подобных Ubuntu.

Убедитесь, что вы добавили другие пакеты -dev, которые вы, возможно, захотите использовать Python, например, libexpat1-dev, libdb4.8-dev, libncurses5-dev и libreadline6-dev (с использованием интерпретатора Python без readline больно!). Затем вам придется перекомпилировать Python, чтобы воспользоваться ими.

(Или, если вас не беспокоит, вы можете забыть setuptools и просто распаковать любое конечное приложение, которое вы сами, и поместить его в пакеты сайтов или где угодно. Скажите, что я не большой поклонник яиц.)

Ответ 2

Имейте в виду, что Ubuntu использует каталог с именем /lib/x86_64-linux-gnu для архитектур x64. Если вы используете эту архитектуру, вам нужно создать символическую ссылку:

$ sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/libz.so

Кроме того, вы должны сделать то же самое для других разделяемых библиотек.

Ответ 3

Убедитесь, что пакет dev zlib (и любая другая библиотека, от которой зависит стандартный модуль) устанавливается при настройке и компиляции Python из источника.

Ответ 4

Попробуйте установить dpkg-dev перед настройкой и компиляцией Python. Это установит исполняемый файл dpkg-архитектуры в системе, который использует Python (см. Setup.py), чтобы определить, где находится библиотека libz.so. Подробнее см. http://fnch.users.sourceforge.net/pythononubuntu1004.html