icqdesktop.deprecated icon indicating copy to clipboard operation
icqdesktop.deprecated copied to clipboard

Версия для Linux не работает нигде кроме Ubuntu и Ubuntu-based

Open atolstoy opened this issue 8 years ago • 9 comments

Перепробовал из любопытства десяток разных линуксов - нигде авторизация не проходит. Под Ubuntu и основанных на ней дистрибутивах всё работает. Почему так?

atolstoy avatar Jul 19 '17 12:07 atolstoy

$ sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt

sasokol avatar Feb 15 '18 09:02 sasokol

Сработало. Спасибо за решение!

atolstoy avatar Feb 15 '18 14:02 atolstoy

надо собирать с родной библиотекой libcurl

ykne avatar Apr 17 '18 23:04 ykne

А можно ли собрать cli-версию?

Anth0nyME avatar Apr 28 '18 10:04 Anth0nyME

Проблема в том, что curl детектирует путь во время конфигура

    if(CURL_CA_BUNDLE_AUTODETECT)
        set(SEARCH_CA_BUNDLE_PATHS
            /etc/ssl/certs/ca-certificates.crt
            /etc/pki/tls/certs/ca-bundle.crt
            /usr/share/ssl/certs/ca-bundle.crt
            /usr/local/share/certs/ca-root-nss.crt
            /etc/ssl/cert.pem)

        foreach(SEARCH_CA_BUNDLE_PATH ${SEARCH_CA_BUNDLE_PATHS})
            if(EXISTS "${SEARCH_CA_BUNDLE_PATH}")
                message(STATUS "Found CA bundle: ${SEARCH_CA_BUNDLE_PATH}")
                set(CURL_CA_BUNDLE "${SEARCH_CA_BUNDLE_PATH}")
                set(CURL_CA_BUNDLE_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
                break()
            endif()
        endforeach()
    endif()

А надо бы внести это в код и перебирать там. Иначе статически не слинкуеш так, чтоб работало везде. А динамически нельзя линковать т.к. везде разные версии. Или тащить динамическую с собой аля flatpak/snap/appimage.

lieff avatar Apr 28 '18 10:04 lieff

@lieff проблема в том что публика, которая вывалила сюда в гитхаб код ICQ, нашла время и силы залатать код glfw и qt неизвестными изменениями и совершенно не озаботилась сделать libcurl функционирующей на всех вариантах Linux либо путём заплаты либо динамическим подключением системной библиотеки curl.

ykne avatar Apr 28 '18 13:04 ykne

Нельзя системную динамически подключать, они разные на разных дистрах и можно краш спокойно поймать. Надо именно что латать статическую сборку libcurl, и хорошо бы в апстрим. Это же логично: собираеш шаред для реюза во всех прогах в системе - значит достаточно в конфигуре выбрать один вариант из системы; собираеш статическую версию - значит хз где она будет работать, не обязательно в этой системе, нужен этот перебор в коде. Вот хорошо бы апстрим версия так бы переключалась.

lieff avatar Apr 28 '18 13:04 lieff

@lieff аналогично, нельзя поставлять статическую если там закодирован специфический адрес которого может не быть в других системах. и ещё раз: проблема в том что публика, которая вывалила сюда в гитхаб код ICQ не позаботилась о сборке всех компонентов или из системы или из известных исходников.

ykne avatar Apr 28 '18 16:04 ykne

Ну так о том и речь, в статической надо перебирать все те адреса не в конфигуре, а в коде. Так оно на любой системе будет рассчитано на то-же, на что рассчитан конфигур.

lieff avatar Apr 28 '18 18:04 lieff