emonoda icon indicating copy to clipboard operation
emonoda copied to clipboard

Поддержка нового API rTorrent >= 0.9.6

Open omgiafs opened this issue 9 years ago • 8 comments
trafficstars

Наконец-то дошли руки установить emonoda. Конфиг заполнил, трекеры прописал, запускаю и получаю:

www@nas:~$ rtorrent -h
Rakshasa's BitTorrent client version 0.9.6.

www@nas:~$ emupdate
# E: Can't init client rtorrent: Fault(<Fault -506: "Method 'set_xmlrpc_size_limit' not defined">)
Traceback (most recent call last):
  File "/home/www/.local/bin/emupdate", line 9, in <module>
    load_entry_point('emonoda==2.0.18', 'console_scripts', 'emupdate')()
  File "/home/www/.local/lib/python3.4/site-packages/emonoda/apps/emupdate.py", line 369, in main
    log=log_stderr,
  File "/home/www/.local/lib/python3.4/site-packages/emonoda/apps/__init__.py", line 138, in get_configured_client
    client = cls(**config.client)
  File "/home/www/.local/lib/python3.4/site-packages/emonoda/plugins/clients/rtorrent.py", line 61, in __init__
    self._server.set_xmlrpc_size_limit(xmlrpc_size_limit)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1089, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1419, in __request
    verbose=self.__verbose
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1131, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1147, in single_request
    return self.parse_response(resp)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1318, in parse_response
    return u.close()
  File "/usr/lib/python3.4/xmlrpc/client.py", line 656, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault -506: "Method 'set_xmlrpc_size_limit' not defined">

В rtorrent 0.9.6 относительно 0.9.4 поменялся синтаксис команд, и старые команды вроде как автоматически должны преобразовываться в новые, но это не так :) Конфиг rtorrent после апгрейда на 0.9.6 надо было править руками, да и диагностика проблемы заняла порядочно времени (я пока не шибко красноглаз).

Как я понял, rtorrent 0.9.6 через XMLRPC отвечает, что не знает метода set_xmlrpc_size_limit. В rtorrent 0.9.6 (и, надеюсь, далее) этот метод называется network.xmlrpc.size_limit.set.

omgiafs avatar Apr 25 '16 03:04 omgiafs

Это у вас точно 0.9.6, или может это сборка альфы 1.0 с неизмененной версией? Дело в том, что синтаксис поменялся именно в альфе, я уже смотрел некоторое время назад. У меня самого стоит 0.9.6 и все работает. Откуда вы взяли свой пакет?

mdevaev avatar Apr 25 '16 11:04 mdevaev

Хм. Наверное альфа. Я с исходников канпелял щас посмотрю... 06.01 2016. Еще бы вспомнить, где я их взял... Вспомнил. Тут! Если надо было брать из Git - прошу пардону, я таких тонкостей не знал. Думаю - лежит архив с версией, значит стабильная, альфы никакой в названии нет. Таки с git тянуть?

omgiafs avatar Apr 25 '16 12:04 omgiafs

Вот тут есть арчевый пакет, там написано, откуда брать исходники и с какими опциями собирать, посмотрите: https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/rtorrent Кажется, на сайте у него не очень актуальное, лучше качать с гитхаба.

mdevaev avatar Apr 25 '16 12:04 mdevaev

Буду пользовать deb-пакет из sid-ветки. Он там 0.9.6-2. Тянет кучу зависимостей. Ну да ладно, попробую. Заодно скилл в восстановлении системы (или откате тестовых пакетов на стабильные) прокачаю.

Ну вот и результат:

www@nas:~$ aptitude show rtorrent
Package: rtorrent
State: installed
Automatically installed: no
Version: 0.9.6-2
Priority: extra
Section: net
Maintainer: Jose Luis Rivas <[email protected]>
Architecture: amd64
Uncompressed Size: 1,689 k
Depends: libc6 (>= 2.14), libcurl3 (>= 7.16.3), libgcc1 (>= 1:4.1.1), libncursesw5 (>= 6),
         libstdc++6 (>= 5.2), libtinfo5 (>= 6), libtorrent19, libxmlrpc-core-c3
Suggests: screen | dtach
Conflicts: rtorrent
Description: ncurses BitTorrent client based on LibTorrent from rakshasa
 rtorrent is a BitTorrent client based on LibTorrent.  It uses ncurses and aims to be a
 lean, yet powerful BitTorrent client, with features similar to the most complex graphical
 clients.

 Since it is a terminal application, it can be used with the "screen"/"dtach" utility so
 that the user can conveniently logout from the system while keeping the file transfers
 active.

 Some of the features of rtorrent include:
 * Use an URL or file path to add torrents at runtime
 * Stop/delete/resume torrents
 * Optionally loads/saves/deletes torrents automatically in a session directory
 * Safe fast resume support
 * Detailed information about peers and the torrent
 * Support for distributed hash tables (DHT)
 * Support for peer-exchange (PEX)
 * Support for initial seeding (Superseeding)
Homepage: https://rakshasa.github.io/rtorrent/

Tags: admin::file-distribution, implemented-in::c++, interface::text-mode,
      network::client, protocol::bittorrent, role::program, uitoolkit::ncurses,
      use::downloading, works-with::file
www@nas:~$ rtorrent --help
rtorrent: Symbol `_ZN7torrent10log_groupsE' has different size in shared object, consider re-linking
*** Error in `rtorrent': munmap_chunk(): invalid pointer: 0x00007ffc3536e0c8 ***
Aborted

Приплыли...

Скажите, из исхов скомпилять - то же самое будет?

omgiafs avatar Apr 25 '16 12:04 omgiafs

Нет, не должно. Подозреваю, что у вас libtorrent не той версии. Т.е. компилять надо и то, и другое. Попробуйте. Энивей, я уже собирался делать поддержку нового апи, потому что у автора все потихоньку движется к релизу. Вы потестируете, новую мою реализацию, если что?

mdevaev avatar Apr 25 '16 15:04 mdevaev

Потестирую, не вопрос. Мне бы заставить это всё работать для начала :) Пошел откатываться и компилять...

А ошибка как-то связана с с++... А! Не удалил скомпиленную кривыми руками старую библиотеку libtorrent... Простите идиота... Щас всё заработает.

omgiafs avatar Apr 25 '16 15:04 omgiafs

Ну всё. Заработало. Спасибо большое. Дело было вовсе на в emonod'е...

omgiafs avatar Apr 25 '16 16:04 omgiafs

Отлично. В любом случае, поддержку нового API я сделаю.

mdevaev avatar Apr 25 '16 16:04 mdevaev