Решено: Python-related (поглощение зависимостей)

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Решено: Python-related

Сообщение shevan »

Есть пакет deluge-torrent из etch-backports, который удерживаю с помощью aptitude
http://packages.debian.org/etch-backports/deluge-torrent
Он зависит от 2.5 >> python >= 2.4

Но практически вся система стоит на тестируемой ветке. И большинство программ просто требуют свежего python.
Я как-то обманул Gimp, но сейчас столкнулся с серьезной баталией - ставлю gnome-core (--without-recommends), который навязчиво хочет обновить python.
Посмотрел, что у меня в системе:

Код: Выделить всё

dpkg -l | grep -i python
ii  python                        2.4.4-2                      An interactive high-level object-oriented la
...
ii  python-minimal           2.4.4-2                               A minimal subset of the Python language (def
...
ii  python2.4              2.4.6-2                        An interactive high-level object-oriented la
ii  python2.4-minimal         2.4.6-2                              A minimal subset of the Python language (ver
ii  python2.5                 2.5.4-1                       An interactive high-level object-oriented la
ii  python2.5-minimal        2.5.4-1                            A minimal subset of the Python language (ver

Выходит у меня установлены 3 версии Python (по умолчанию вызывается интерактивная оболочка 2.4.6-2)
Я удержал пакеты python, python-minimal, python2.4, python2.4-minimal, но gnome-core по прежнему хочет обновить.
Чувствую, что где-то себя обману, или мозг взорвется, пока разрулю все это дело.
1. Если найдется такой пакет с зависимостями python > 2.5 , то моим обновлениям наступит арммагедец? Я же не могу держать в системе два пакета
2. В моем случае, как найти пакет, который тянет по зависимости python? (apt-get show rdepends?)
3. Вообще, так больше продолжаться не может. Не сегодня, завтра наступит бескомпромиссный вариант.
Кто как решал подобные вопросы?
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

Попытаюсь на 3-х скринах выразить проблему, и так очень сложно для понимания.
При установке gnome-core, я решаю оставить python 2.4.4, не желая удалять deluge-torrent.
Вот что получается:

gnome-core зависит от gedit, оба не хотят устанавливаться.
Перехожу к gedit:

Зависит от python-support, который в свою очередь хочет строго python>=2.5

Вот такая вот лебедь-рак-щуковская ситуация.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

Полез в /var/lib/dpkg/status, убрал зависимость python<2.5 у пакета deluge-torrent.
Python обновился, deluge остался. но не работает => пишет, что не может import deluge.
Так никто не держал 2 версии одного пакета в системе? Пока не полез дальше, прав хватает..
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Решено: Python-related

Сообщение Alex2ndr »

Хмм - а цель всего этого действа? сделать чтобы deluge-torrent работало? или потренироваться в разрешении зависимостей?
если нужно работающая то может просто обновить ее? вроде версия в lenny (если вы не в курсе то это теперь stable) - нормально живет с python (< 2.6). Не знаю правда как с ней в backports

Код: Выделить всё

 alex@deb-home:~$ aptitude show deluge-torrent
Пакет: deluge-torrent
Состояние: не установлен
Версия: 0.5.9.3-1
Приоритет: необязательный
Раздел: net
Сопровождающий: Adam Cécile (Le_Vert) <gandalf@le-vert.net>
Размер в распакованном виде: 5956k
Зависимости: libboost-date-time1.34.1 (>= 1.34.1-8), libboost-filesystem1.34.1 (>= 1.34.1-8), libboost-thread1.34.1 (>=
                        1.34.1-8), libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libssl0.9.8 (>= 0.9.8f-5), libstdc++6 (>= 4.2.1),
                        zlib1g (>= 1:1.1.4), python (< 2.6), python (>= 2.4), python-support (>= 0.7.1),
                        deluge-torrent-common (= 0.5.9.3-1), python-gtk2, python-glade2, python-xdg, python-notify,
                        notification-daemon, python-dbus, librsvg2-common, python-openssl, dbus-x11
Рекомендуются: python-gtkmozembed
Описание: A Bittorrent client written in Python/PyGTK
 Deluge is a Bittorrent client, created using Python and GTK+.

 Deluge is intended to bring a native, full-featured client to Linux GTK+ desktop environments such as GNOME and Xfce.

 It uses Rasterbar's version of libtorrent, and Python bindings written by Kripkenstein.
Сайт: http://www.deluge-torrent.org/
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

Хмм - а цель всего этого действа? сделать чтобы deluge-torrent работало? или потренироваться в разрешении зависимостей?
если нужно работающая то может просто обновить ее? вроде версия в lenny (если вы не в курсе то это теперь stable) - нормально живет с python (< 2.6). Не знаю правда как с ней в backports

Неа. мне нужна deluge-torrent 0.5.0-2~bpo :pardon: историческая ценность
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: Решено: Python-related

Сообщение neol »


Но практически вся система стоит на тестируемой ветке.

А нафига etch-backports? О_О

shevan писал(а):
07.09.2009 19:40
Так никто не держал 2 версии одного пакета в системе?

Код: Выделить всё

i A python2.4                       - интерактивный высокоуровневый объектно-ори
i A python2.5                       - интерактивный высокоуровневый объектно-ори

Без каких-то особых телодвижений.
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

i A python2.4 - интерактивный высокоуровневый объектно-ори
i A python2.5 - интерактивный высокоуровневый объектно-ори

python2.4 и python2.5 два разных пакета.

Почему из etch? нравится мне эта сборка, багов в ней много, которые в последующих версиях исправлены.
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Решено: Python-related

Сообщение Alex2ndr »

shevan писал(а):
07.09.2009 22:18
Неа. мне нужна deluge-torrent 0.5.0-2~bpo :pardon: историческая ценность

Ну раз она вам так нравиться то может стоит поковырять ее саму - я когда переходил с etch на lenny не заметил в своих python-поделках каких либо изменений. Вроде вся вторая ветка между собой сверху вниз совместима. Остаеться только control поравить.
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

Ну раз она вам так нравиться то может стоит поковырять ее саму - я когда переходил с etch на lenny не заметил в своих python-поделках каких либо изменений. Вроде вся вторая ветка между собой сверху вниз совместима. Остаеться только control поравить.

Это еще умом дорасти надо. Не наугад же.
Мне бы ошибочку понять:
Traceback (most recent call last):
File "/usr/bin/deluge", line 31, in <module>
import deluge, deluge.dcommon, deluge.delugegtk
ImportError: No module named deluge

Вернее, ошибку я понимаю, а вот откуда возникла..
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Решено: Python-related

Сообщение Alex2ndr »

shevan писал(а):
08.09.2009 00:02
Мне бы ошибочку понять:
Traceback (most recent call last):
File "/usr/bin/deluge", line 31, in <module>
import deluge, deluge.dcommon, deluge.delugegtk
ImportError: No module named deluge

Вернее, ошибку я понимаю, а вот откуда возникла..

Скорее всего что-то с путями к конкретным модулям/файлам - фактически он не может найти пути к нему (или его(deluge) нету - но т к с другим питоном работает ... ) - обычно бывает такое при неправильном указании пути в sys.path. Если /usr/bin/deluge не прекомпилированная версия то выложите его содержимое строки до 40 - постараюсь что-либо сказать.

upd: Посмотрел тот deluge что в lenny - там первые строки это коменты в основном. После строк

Код: Выделить всё

import os
from optparse import OptionParser
import re
import subprocess
import sys

вставьте print sys.path - те получиться так -

Код: Выделить всё

import os
from optparse import OptionParser
import re
import subprocess
import sys

print sys.path

import deluge
import deluge.common
import deluge.core
import deluge._dbus as dbus
import deluge.interface

и тогда при запуске из консоли он выдаст содержимое sys.path - у меня так -

Код: Выделить всё

 alex@deb-home:~$ deluge
['/usr/bin', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/Numeric', '/usr/lib/python2.5/site-packages/PIL', '/var/lib/python-support/python2.5', '/usr/lib/python2.5/site-packages/gtk-2.0', '/var/lib/python-support/python2.5/gtk-2.0', '/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode']
no existing Deluge session
Starting new Deluge session...
....

вот этот вывод в [] - сюда, вместе с dpkg -L deluge-torrent
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Решено: Python-related

Сообщение Rootlexx »

Alex2ndr писал(а):
08.09.2009 00:44
вставьте print sys.path

Я извиняюсь, но не проще запустить оболочку Python и выполнить там:

Код: Выделить всё

import sys
print sys.path
?
А вообще, можно просто отредактировать первую строку скрипта, указывающую на вызываемый интерпретатор, с:

Код: Выделить всё

#!/usr/bin/python
— на:

Код: Выделить всё

#!/usr/bin/python2.4
.
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Решено: Python-related

Сообщение Alex2ndr »

Rootlexx писал(а):
08.09.2009 01:57
Alex2ndr писал(а):
08.09.2009 00:44
вставьте print sys.path

Я извиняюсь, но не проще запустить оболочку Python и выполнить там:

Код: Выделить всё

import sys
print sys.path
?
А вообще, можно просто отредактировать первую строку скрипта, указывающую на вызываемый интерпретатор, с:

Код: Выделить всё

#!/usr/bin/python
— на:

Код: Выделить всё

#!/usr/bin/python2.4
.

Согласен со всем - что-то я уже торможу :crazy: . Пойду спать.
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

Спасибо за ответы.
После замены вызываемого интерпретатора на python2.4 в скрипте:
Traceback (most recent call last):

Код: Выделить всё

  File "/usr/bin/deluge", line 31, in ?
    import deluge, deluge.dcommon, deluge.delugegtk
  File "/usr/lib/pymodules/python2.4/deluge/delugegtk.py", line 23, in ?
    import deluge, dcommon, dgtk, ipc_manager
  File "/usr/lib/pymodules/python2.4/deluge/dgtk.py", line 26, in ?
    import pygtk
ImportError: No module named pygtk

Вставил строчку вывода sys.path:

Код: Выделить всё

['/usr/bin', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages', '/usr/lib/pymodules/python2.4', '/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode']

Если я правильно догадываюсь, модуль pygtk отсутствует в системных путях.
'/usr/lib/pymodules/python2.5/gtk-2.0' - допустим, этого модуля не хватает. Каков механизм добавления?
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Решено: Python-related

Сообщение Alex2ndr »

shevan писал(а):
08.09.2009 13:43
Если я правильно догадываюсь, модуль pygtk отсутствует в системных путях.
'/usr/lib/pymodules/python2.5/gtk-2.0' - допустим, этого модуля не хватает. Каков механизм добавления?

sys.path.append('/usr/lib/pymodules/python2.5/gtk-2.0')
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Решено: Python-related

Сообщение shevan »

sys.path.append('/usr/lib/pymodules/python2.5/gtk-2.0')

Я это вычитал в google. Не захотел модуль работать, хотя путь добавился.
Что, разработчикам с выходом новой версии Python приходится править код? Не завидую.

Мой вопрос решился другим способом, довольно простым.
Я скопировал модули deluge из папки /usr/lib/pymodules/python2.4/deluge в /usr/lib/pymodules/python2.5/deluge.
Естесственно, вернул скрипт на вызов python (#! /usr/bin/python)
Deluge запустился, и ограничился предупреждением:

Код: Выделить всё

/usr/lib/pymodules/python2.5/deluge/deluge.py:39: RuntimeWarning: Python C API version mismatch for module deluge_core: This Python has API version 1013, module deluge_core has version 1012.


Проблема решена. Я заработал дополнительный опыт. Спасибо за помощь, толкнули в верном направлении.
update, как, кстати, добавлять в название темы "Решено"?
Спасибо сказали: