shadowsocks / shadowsocks-qt5

A cross-platform shadowsocks GUI client
GNU Lesser General Public License v3.0
7.97k stars 2.33k forks source link

fedora 29 更新后libbotan不兼容 #760

Closed ghost closed 5 years ago

ghost commented 5 years ago

➜ ~ dnf info botan2
上次元数据过期检查:1 day, 18:55:52 前,执行于 2018年11月03日 星期六 15时20分06秒。 已安装的软件包 名称 : botan2 版本 : 2.8.0 发布 : 1.fc29 架构 : x86_64 大小 : 6.6 M 源 : botan2-2.8.0-1.fc29.src.rpm 仓库 : @System 来自仓库 : updates 小结 : Crypto and TLS for C++11 URL : https://botan.randombit.net/ 协议 : BSD 描述 : Botan is a BSD-licensed crypto library written in C++. It provides a : wide variety of basic cryptographic algorithms, X.509 certificates and : CRLs, PKCS #10 certificate requests, a filter/pipe message processing : system, and a wide variety of other features, all written in portable : C++. The API reference, tutorial, and examples may help impart the : flavor of the library. This is the current stable release branch 2.x : of Botan. 可安装的软件包 名称 : botan2 版本 : 2.7.0 发布 : 3.fc29 架构 : i686 大小 : 2.1 M 源 : botan2-2.7.0-3.fc29.src.rpm 仓库 : fedora 小结 : Crypto and TLS for C++11 URL : https://botan.randombit.net/ 协议 : BSD 描述 : Botan is a BSD-licensed crypto library written in C++. It provides a : wide variety of basic cryptographic algorithms, X.509 certificates and : CRLs, PKCS #10 certificate requests, a filter/pipe message processing : system, and a wide variety of other features, all written in portable : C++. The API reference, tutorial, and examples may help impart the : flavor of the library. This is the current stable release branch 2.x : of Botan. ➜ ~ ss-qt5
ss-qt5: error while loading shared libraries: libbotan-2.so.7: cannot open shared object file: No such file or directory

shipujin commented 5 years ago

造成的原因是 “libQtShadowsocks、botan2-devel” 未在相同的编译环境编译造成。 把 libQtShadowsocks、botan2-devel 在一个相同的环境内重新编译去修正为正确的依赖关系

shipujin commented 5 years ago

@TaoistMo

ghost commented 5 years ago

造成的原因是 “libQtShadowsocks、botan2-devel” 未在相同的编译环境编译造成。 把 libQtShadowsocks、botan2-devel 在一个相同的环境内重新编译去修正为正确的依赖关系

手动编译libQtShadowsocks的话,会安装到/usr/lib/libQtShadowsocks.soss-qt5搜索目标是/usr/lib64/libQtShadowsocks.so

看了一下,/usr/lib/libQtShadowsocks.so指向的/usr/lib/libQtShadowsocks.so.2.1.0是64-bit elf文件。

那么修改这个路径的正确方式是什么?CMakeLists.txt文件里好像并没有指明这个路径

shipujin commented 5 years ago

造成的原因是 “libQtShadowsocks、botan2-devel” 未在相同的编译环境编译造成。 把 libQtShadowsocks、botan2-devel 在一个相同的环境内重新编译去修正为正确的依赖关系

手动编译libQtShadowsocks的话,会安装到/usr/lib/libQtShadowsocks.soss-qt5搜索目标是/usr/lib64/libQtShadowsocks.so

看了一下,/usr/lib/libQtShadowsocks.so指向的/usr/lib/libQtShadowsocks.so.2.1.0是64-bit elf文件。

那么修改这个路径的正确方式是什么?CMakeLists.txt文件里好像并没有指明这个路径

  1. 你这种编译结果和原作者毫无分别,未解决错误的依赖问题。正确的姿势是先编译 botan2-devel ,因为编译 libQtShadowsocks 时依赖 botan2-devel。
  2. libQtShadowsocks 源码内 CMakeLists.txt 前半部分写了很清楚的 库安装路径。
  3. 有很多的解决方式,找一个为安装 “libQtShadowsocks、botan2-devel ” 的环境,重新编译安装;或者使用之前编译、安装过 “libQtShadowsocks、botan2-devel” 的移除掉他们;或者不移除 “libQtShadowsocks、botan2-devel” 重新编译安装 botan2-devel 制定 lib 安装路径,然后在编译 libQtShadowsocks 前指定动态库搜索路径,并放到搜索路径最前面(刚刚制定 lib 安装的路径).
ghost commented 5 years ago

造成的原因是 “libQtShadowsocks、botan2-devel” 未在相同的编译环境编译造成。 把 libQtShadowsocks、botan2-devel 在一个相同的环境内重新编译去修正为正确的依赖关系

手动编译libQtShadowsocks的话,会安装到/usr/lib/libQtShadowsocks.soss-qt5搜索目标是/usr/lib64/libQtShadowsocks.so 看了一下,/usr/lib/libQtShadowsocks.so指向的/usr/lib/libQtShadowsocks.so.2.1.0是64-bit elf文件。 那么修改这个路径的正确方式是什么?CMakeLists.txt文件里好像并没有指明这个路径

  1. 你这种编译结果和原作者毫无分别,未解决错误的依赖问题。正确的姿势是先编译 botan2-devel ,因为编译 libQtShadowsocks 时依赖 botan2-devel。
  2. libQtShadowsocks 源码内 CMakeLists.txt 前半部分写了很清楚的 库安装路径。
  3. 有很多的解决方式,找一个为安装 “libQtShadowsocks、botan2-devel ” 的环境,重新编译安装;或者使用之前编译、安装过 “libQtShadowsocks、botan2-devel” 的移除掉他们;或者不移除 “libQtShadowsocks、botan2-devel” 重新编译安装 botan2-devel 制定 lib 安装路径,然后在编译 libQtShadowsocks 前指定动态库搜索路径,并放到搜索路径最前面(刚刚制定 lib 安装的路径).

我没有自行编译botan2-devel

进行了如下操作:

  1. 卸载通过dnf安装的libQtShadowsocks
  2. libQtShadowsocks/CMakeLists.txt第10行修改为:set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib64
  3. libQtShadowsocks/CMakeLists.txt第30行修改为:pkg_search_module(BOTAN REQUIRED botan-2>=2.3.0)
  4. libQtShadowsocks/conanfile.txt第2行修改为:botan/2.8.0@bincrafters/stable
  5. 清空build目录并重新编译安装libQtShadowsocksss-qt5 这样之后正常的

有些操作可能没有必要,或者有更好的方法。

librehat commented 5 years ago

I'll update the COPR