首先

首先废话不多说,ss-qt5 3.0.1 版本的 DEB 包下载:【点击下载↓】

emmmm… 因为 XZY 的 linux 技术差得一匹所以如果觉得 XZY 打的包不好想自己打包的可以看看下面的废话。。。QwQ

下面是废话

之前搭的 ssr 老不稳定,可能是 ssr 太菜了?QvQ(Update: 我又换回 ssr 了,ssr 大法吼哇)

于是换成了 ss,感觉舒服多了,就没掉过线

但是唯一令人不爽的是 ss 的 linux 客户端 shadowsocks-qt5 官方只提供了.appimage 文件,那种双击打开的那种。。。

双击打开很不习惯,习惯从 dash 打开,双击打开效率低呀。。。

况且不知道为什么 appimage 打开有 bug,界面特别丑而且提示消息里的图片还显示不出来。

于是去网上找,发现官方 ppa 里有,但是没有 18.04 的,不过没关系,我就直接添加了 16.04 的源,然后 apt install。。。装是装成功了,但是虽然显示连接成功,并且网络代理设置也改了,但是就是上不了 google 啥的,但是用 appimage 又能上。。。

我就猜测是 16.04 提供的那个版本太老了。。。可是新版 3.0.1 又只有 appimage。。。

那咋办捏。。。于是我决定自己去编译生成一个.deb 包。。。

怎么搞呢?先去把这两个仓库 clone 下来:

  • https://github.com/shadowsocks/libQtShadowsocks
  • https://github.com/shadowsocks/shadowsocks-qt5

然后找到里面有个叫做 cmakelist.txt 的文件。

我们需要往里面添加:

  • 表示编译以后生成 DEB 包的设置
  • 生成的 DEB 包的名称
  • 安装完了以后的软件名称
  • 依赖关系(我是从老版本的 DEB 包里解包找到的依赖关系 QwQ)
  • include(CPack)

依赖关系里面我原本搞错了一个东西,就是现在的 libqtshadowsocks 依赖的是 botan-2,然而我原本弄成了 botan-1,这就会导致最后 ss-qt5 少那些新出的安全的 AEAD 加密方式(因为这个是包含在 botan-2 里的)

对于 libQtShadowsocks 的 cmakelist 我改成了这样:

cmake_minimum_required(VERSION 3.1)

project(QtShadowsocks
        VERSION 2.1.0
        LANGUAGES CXX)

option(BUILD_SHARED_LIBS "Build ${PROJECT_NAME} as a shared library" ON)

set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME "QtShadowsocks_2.1.0")
set(CPACK_DEBIAN_PACKAGE_NAME "QtShadowsocks")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libbotan-2-dev (>= 2.4.0), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.7.0), libqt5network5 (>= 5.6.0~beta), libstdc++6 (>= 5.2)")

set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib
    CACHE PATH "Installation directory for libraries")
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include
    CACHE PATH "Installation directory for headers")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CPACK_PACKAGE_CONTACT "konnyakuxzy@outlook.com")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "XZYQvQ")

find_package(Qt5Core 5.5)
find_package(Qt5Network 5.5)
find_package(PkgConfig)

pkg_search_module(BOTAN REQUIRED botan-2>=2.3.0 botan-1.10)
if(BOTAN_VERSION VERSION_GREATER 2.0)
    message(STATUS "Botan-2 is found and will be used in this build")
    add_definitions(-DUSE_BOTAN2)
else()
    message(DEPRECATION "Botan-1.10 is found and will be used in this build. However, Botan-1.10 is deprecated and should not be used if possible")
endif()
find_library(BOTAN_LIBRARY_VAR
             NAMES ${BOTAN_LIBRARIES}
             HINTS ${BOTAN_LIBRARY_DIRS} ${BOTAN_LIBDIR})

if(BUILD_SHARED_LIBS)
    add_definitions(-DQSS_LIBRARY)
else()
    add_definitions(-DQSS_STATIC)
    if (MINGW)
        # This however doesn't fix the problem that the executables are depending on the GCC shared libraries
        # I can't find a solution in CMake so far. The workaround is to manually append "-l:libgcc.a -l:libstdc++.a -l:libwinpthread.a" to the end of executables' linklibs.rsp files (in CMakeFiles directory)
        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
    endif()
endif()

if(WIN32 OR APPLE)
    add_definitions(-DFD_SETSIZE=1024)
endif()

add_subdirectory(lib)
add_subdirectory(shadowsocks-libqss)
find_package(Qt5Test)
if (Qt5Test_FOUND)
    # enable_testing() has to be in the root CMakeLists.txt, see https://cmake.org/pipermail/cmake/2010-November/040725.html
    enable_testing()
    add_subdirectory(test)
endif()

include(CPack)

对于 Shadowsocks-qt5 的 cmakelist 我改成了这样:

cmake_minimum_required(VERSION 3.1)

project(Shadowsocks-Qt5
        VERSION 3.0.1
        LANGUAGES CXX)

set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME "shadowsocks-qt5_3.0.1")
set(CPACK_DEBIAN_PACKAGE_NAME "shadowsocks-qt5")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "qtshadowsocks, libappindicator1 (>= 0.2.91), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.16.0), libqrencode3 (>= 3.2.0), libqt5core5a (>= 5.7.0), libqt5dbus5 (>= 5.0.2), libqt5gui5 (>= 5.7.0) | libqt5gui5-gles (>= 5.7.0), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.2.0), libstdc++6 (>= 5.2), libzbar0 (>= 0.10)")

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CPACK_PACKAGE_CONTACT "konnyakuxzy@outlook.com")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "XZYQvQ")

find_package(Qt5Core)
find_package(Qt5Gui)
find_package(Qt5Widgets)
find_package(Qt5Network)
if(UNIX AND NOT APPLE)
    find_package(Qt5DBus)
endif()
find_package(PkgConfig)

pkg_check_modules(QSS REQUIRED QtShadowsocks>=2.0.0)
find_library(QSS_LIBRARY_VAR
    NAMES ${QSS_LIBRARIES}
    HINTS ${QSS_LIBRARY_DIRS} ${QSS_LIBDIR})

pkg_check_modules(QRENCODE REQUIRED libqrencode)
find_library(QRENCODE_LIBRARY_VAR
    NAMES ${QRENCODE_LIBRARIES}
    HINTS ${QRENCODE_LIBRARY_DIRS} ${QRENCODE_LIBDIR})

pkg_check_modules(ZBAR REQUIRED zbar)
find_library(ZBAR_LIBRARY_VAR
    NAMES ${ZBAR_LIBRARIES}
    HINTS ${ZBAR_LIBRARY_DIRS} ${ZBAR_LIBDIR})

if(WIN32 OR APPLE)
    add_definitions(-DFD_SETSIZE=1024)
endif()

add_subdirectory(src)

include(CPack)

记得安装一下依赖:

编译 lib 需要的依赖:

sudo apt-get install qt5-qmake qtbase5-dev libbotan1.10-dev g++ -y

编译 ss-qt5 需要的依赖:

sudo apt-get install qt5-qmake qtbase5-dev libqrencode-dev libappindicator-dev libzbar-dev libbotan1.10-dev -y

然后对于这两个项目,都进入主目录,然后:

mkdir build && cd build
cmake ..
make package

然后会在 build 文件夹就会生成出 DEB 安装包啦 233333~

分类: 文章

XZYQvQ

炒鸡辣鸡的制杖蒟蒻一枚QvQ

26 条评论

Xeonacid · 2018年8月4日 6:47 下午

ssr: 这锅我不背

    XZYQvQ · 2018年8月4日 6:49 下午

    OvO
    大佬光临寒舍
    来,大佬赶紧坐,喝茶 OvO
    现在我用回了 ssr 啦~
    ssr 吼哇,可能我之前姿势不对 OvO
    我去改下文章 QAQ 免得我又被大佬 D
    QwQ

    Xeonacid · 2018年8月4日 8:07 下午

    窝不是 dalao 呜哇哇
    窝也木有 d 人啊 QAQ
    只是随便吐个槽(雾

juruo-oier · 2018年8月3日 2:08 下午

xzy 神犇,请问不直接安装您的 deb 包就行了吗?
为啥评论里显得格外复杂??

    XZYQvQ · 2018年8月3日 2:11 下午

    我不是神犇
    确实安装 deb 包就行了
    评论里说的是本地编译一遍(因为好像评论里的那位依赖关系有问题)

      juruo-oier · 2018年8月3日 7:06 下午

      可以发一波 32 位的行吗??
      64 位装不了

        XZYQvQ · 2018年8月3日 7:09 下午

        我没有 32 位机
        也不晓得 make 怎么编译成 32 位的(也许是加-m32)
        您自己编译一下不就行了。。。
        编译方法官方 github wiki 给了
        而且。。。我现在换回了 ssr,你也可以试试。。。

于花甜 · 2018年7月25日 8:28 下午

是那个 appimage,我没说清楚。。
断开重连其他的就会失败→_→ 不过不影响使用啦

    XZYQvQ · 2018年7月25日 8:38 下午

    刚刚试了一下没有这个问题呀QwQ
    我随便网上找了一个免费的ss添加进列表->链接,成功 QwQ
    然后断开免费的 ss 链接,成功恢复到本机 ip
    然后链接我自己的 ss,也成功上 google 了啊 QwQ
    不知道是不是 appimage 的锅,我用的是我上面给的那个自己编译的 DEB 包安装的,这样就能 dash 打开不用双击了呀(而且界面美观的多 QwQ)
    所以您为啥不考虑自己编译一个或者试试我编译的那个 DEB 包呢 OvO

      于花甜 · 2018年7月25日 9:00 下午

      那我现在去试一下~

      于花甜 · 2018年7月25日 9:31 下午

      博主,我不知道你哪里修改了我就全文复制粘贴了两个 cmakelist 文件,然后分别导入主文件夹(因为重名不能同时存在)运行
      cmake ..
      但是两个 make package 都报错啊。。

        XZYQvQ · 2018年7月25日 9:35 下午

        emmmmm… 因为编译需要依赖啊 QAQ

        首先需要运行命令安装依赖:

        编译 lib 需要的依赖:

        sudo apt-get install qt5-qmake qtbase5-dev libbotan1.10-dev g++ -y

        编译 ss-qt5 需要的依赖:

        sudo apt-get install qt5-qmake qtbase5-dev libqrencode-dev libappindicator-dev libzbar-dev libbotan1.10-dev -y

        然后编译应该就行了 QwQ

        XZYQvQ · 2018年7月25日 9:39 下午

        已经更新了文章了 QwQ 谢谢提醒

          于花甜 · 2018年7月25日 9:56 下午

          博主我又来骚扰你啦。。
          我安装了你发的两个 deb 包,但是运行不了,是我装错了吗。。

            XZYQvQ · 2018年7月25日 10:01 下午

            ==
            不会啊
            我拿了刚装的 18.04 64 位测试了啊
            运行不了的话。。。重启打开一下试试?
            我这里打开很正常啊
            而且 16.04 我也试过可以打开(我这个包就是在 16.04 上编译的啊 QwQ)
            您是怎么安装的呢?
            推荐您先卸载掉他们:
            sudo apt remove qtshadowsocks
            sudo apt remove shadowsocks-qt5
            然后安装一个叫做 gdebi 的软件包安装器(特别好用.avi):
            sudo apt install gdebi
            然后安装:
            sudo gdebi ./QtShadowsocks_2.1.0.deb
            sudo gdebi ./shadowsocks-qt5_3.0.1.deb
            (注意顺序,要先装 lib 再装 ss-qt5)
            应该就可以了 QwQ

              于花甜 · 2018年7月25日 10:22 下午

              还是不行。。
              我第一次安装 deb 包是双击安装的,后来删掉又按你说的安装还是只转圈打不开,我还保留着 appimage,这个应该不影响吧?
              我感觉是不是因为我之前编译把哪里搞乱了

                XZYQvQ · 2018年7月25日 11:00 下午

                不是很清楚。。。

                难道是你还缺了什么依赖?QAQ

                编译是不会搞乱的啊

                您试试自己编译一份吧

                按照官网上给的方法:https://github.com/shadowsocks/shadowsocks-qt5/wiki/Compiling

                就是 clone 下来,然后不改 cmakelist,其他都不变,就是最后的那个 make package 改成 make install(就是官网上的做法)

                然后您就能安装了。

                这样安装之前请先卸载已经安装的 lib 和 ss-qt5。。。

                如果还不行我就真不知道了。。。我很菜的 QvQ

                XZYQvQ · 2018年7月26日 7:55 上午

                哦,我也遇到了这个情况(Just Now)
                从 Dash 打开一直在转圈圈但最后打不开而且系统监视器里也没有这个进程。
                原因是我刚刚执行了:sudo apt upgrade
                也就是我把所有软件都更新了。
                解决方法是卸载掉 ss-qt5 然后重装。。。
                (好吧我要考试了没有及时回复不要怪我呀 QwQ)

                  于花甜 · 2018年7月26日 8:56 上午

                  那我再把两个方法都试下。。

                  于花甜 · 2018年7月26日 11:51 上午

                  我安装好啦博主 QwQ 感动,教程没问题,是我自己安错了。。对 linux 了解不够,谢谢你很耐心~

                    XZYQvQ · 2018年7月26日 2:44 下午

                    QwQ 我很菜的 OvO
                    装好啦就好啦,不用谢啦~

                    XZYQvQ · 2018年7月26日 7:10 下午

                    Oh god…
                    对不起啊 QAQ
                    我好像文章搞错了一个东西(幸好发现了)
                    新版的 qtshadowsocks 依赖 botan2,然而我写成了 botan1。。。
                    虽然能编译通过但是少了最新的那些加密协议。。。
                    我马上改。。。对不起 QAQ

                    XZYQvQ · 2018年7月26日 7:19 下午

                    已经更新好了 QwQ
                    我还是太菜了 QAQ

                  于花甜 · 2018年7月26日 9:26 下午

                  那我再重新编一遍吧 QAQ
                  已经很厉害啦,赞!

于花甜 · 2018年7月25日 7:52 下午

现在我的也能用啦,就是需要双击略麻烦,但是又发现问题是只能使用一个地址,再添加其他地址就会连接失败,不知博主是否有这样的问题?

    XZYQvQ · 2018年7月25日 8:19 下午

    emmmm 还真没试过。。。我只有一个 ss 我是穷比啊 QwQ
    为啥需要双击呀?用 dpkg 装了在 dash 打开不就行啦?双击打开的不是那个 appimage 嘛 QwQ
    您指的是列表中有多个 ss,只连接一个 ss 会链接失败还是说同时连接多个 ss 会连接失败?
    同时链接多个 ss 应该。。。会有冲突吧?QAQ

发表评论

电子邮件地址不会被公开。 必填项已用*标注