首先

首先废话不多说,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

发表评论

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

你是机器人吗? =。= *