Как установить GEOS (или libgeos) на NAS-устройство Synology? - PullRequest
2 голосов
/ 20 мая 2019

Я пробирался через Интернет, прошел через StackOverflow, GitHub, SynoCommunity и многое другое, но я не могу найти золотой ответ на свой вопрос;

В: Как мне установить GEOS?(или libgeos) в моей Synology?

Предыстория: Мы с SO создали программу на Python3, чтобы помочь нам в поиске дома для покупки.Он собирает некоторые данные из различных API-интерфейсов о времени коммутирования для общественного транспорта и средней продолжительности трафика, чтобы составить список почтовых индексов, вычисляет области вокруг этих почтовых индексов и передает их в общенациональную службу списков домов, чтобы собрать и выложить результаты на карту.

Итак, мы знаем, что программа работает, запуск ее на одном из наших настольных компьютеров на базе Windows или на ноутбуке Macos дает нам именно то, что мы ожидаем;HTML-файл, который загружается в ваш браузер;отображает карту с кучей маркеров, показывающих дома, выставленные на продажу.

Модули в Python, которые мы используем, стройные и рассола.GEOS (или libgeos) - это стройная зависимость для библиотеки c, и именно эту зависимость я испытываю с трудом при установке на свой NAS.

Почему мой NAS?Потому что у меня есть определенные части моего NAS, доступные через Интернет, чтобы я мог получить доступ к этому со своего телефона, и поэтому я могу планировать скребок на своем NAS на ночь, когда мне не нужен мой рабочий стол или ноутбук.

Техническая среда: Synology DS1813 +Intel Atom D2700 (cedarview)DSM 6.2.2-24922Python3.5.6-8

У меня установлен пипс

, красиво сложенный через пип, а также рассол

Что я нашел? Если верить старейшинам интернета, установка GEOS запускается через ваш менеджер пакетов, о боже, подождите, Synology имеет только графический интерфейс и никаких libgeos там нет.Итак, я могу установить ipkg - но там тоже нет libgeos.

В пакетах SynoCommunity была реализована потрясающая реализация Debian Chroot для Synology!У libgeos есть собственная установка Debian!но по какой-либо причине (противоречивые доказательства доступны), этот chroot с тех пор также был извлечен, когда первоначальный разработчик сделал различные версии доступными на основе запроса.Но эй, есть версия cedarview!Затем необходимо установить Python 2.7.6-8 или более поздней версии с ошибкой.Но подождите .. не 3 "или позже?"Да, до сих пор нет золота.Итак, я установил Python 2.7.6 - все еще не радость.

Наконец, я прошел долгий путь знакомства с Docker, чтобы я мог сделать свой собственный, и затем испортил это до такой степени, что, если я когда-либо когда-либо увижу Dockerопять .....:)))))

Все еще читаете?Вот ошибка, которую я получил при запуске программы:

  File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/shapely/geos.py", line 76, in <module>
    free = load_dll('c').free
  File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/shapely/geos.py", line 56, in load_dll
    libname, fallbacks or []))
OSError: Could not find lib c or load any of its variants [].

А вот откуда она взята в geos.py:

lib = find_library(libname)
dll = None
if lib is not None:
    try:
        LOG.debug("Trying `CDLL(%s)`", lib)
        dll = CDLL(lib, mode=mode)
    except OSError:
        LOG.debug("Failed `CDLL(%s)`", lib)
        pass

if not dll and fallbacks is not None:
    for name in fallbacks:
        try:
            LOG.debug("Trying `CDLL(%s)`", name)
            dll = CDLL(name, mode=mode)
        except OSError:
            # move on to the next fallback
            LOG.debug("Failed `CDLL(%s)`", name)
            pass

if dll:
    LOG.debug("Library path: %r", lib or name)
    LOG.debug("DLL: %r", dll)
    return dll
else:
    # No shared library was loaded. Raise OSError.
    raise OSError(
        "Could not find lib {0} or load any of its variants {1}.".format(
            libname, fallbacks or []))
...