原文:源码编译Redis Desktop Manager | 懒人屋

源码编译Redis Desktop Manager

 2.3k  字    10  分钟    2019-10-10

文章背景

本文其实也是在博客的基础上迁移过来的,在文章中也给出了怎么去编译的地址。Redis Desktop Manager这个软件的作者虽然有订阅版,但是他没有取消源码的下载,
只是源码编译起来有点复杂,对于不一般的用户是无法完成编译的。本文的目的是让用户能自己完成编译环境的安装以及成功编译软件。
重要说明:本文不提供含SSH Tunnel的编译方法,有需要的人请查阅本文参考资料。相信很多人都只是想要下载软件对编译一点兴趣都没有。所以本文中的关键信息基本一笔带过,或者没有写。真的想要了解的欢迎评论探讨。

软件环境

获取源码

Windows下:

git clone --recursive https://github.com/uglide/RedisDesktopManager.git E:\rdm2019
cd E:\rdm2019

macOS下:

# 到下载目录
cd ~/Downloads
git clone --recursive https://github.com/uglide/RedisDesktopManager.git rdm2019
cd rdm2019

设置版本

windows下:

cd E:\rdm2019
set VERSION=2019.4.0
python ./build/utils/set_version.py %VERSION% > ./src/version.h
python ./build/utils/set_version.py %VERSION% > ./3rdparty/crashreporter/src/version.h
eg.
D:\Tools\Python37\python.exe ./build/utils/set_version.py 2019.4.0 > ./src/version.h
D:\Tools\Python37\python.exe ./build/utils/set_version.py 2019.4.0 > ./3rdparty/crashreporter/src/version.h

macOS下:

cd ~/Downloads/rdm2019
python ./build/utils/set_version.py 2019.4.0 > ./src/version.h
python ./build/utils/set_version.py 2019.4.0 > ./3rdparty/crashreporter/src/version.h

Win下环境准备

windows下的软件手动安装的要多点,不像macOS一个命令可以搞定。我个人是将QT、CMake、NSIS、Python3、OpenSSL等文件安装到D:\Tools或者E:\Tools
软件安装可以根据个人习惯,不强制要求。

准备工作

OpenSSL的网址:http://slproweb.com/products/Win32OpenSSL.html
怎么安装软件我就不说了,相信能手动编译的人都有这个能力安装的

注意:QT安装的时候除了要选择Qt Creator外,还要选择至少如下图所示组件:

下载依赖包

根据官方文档中的描述,要使用Nuget下载zlib-msvc14-x64.1.2.11.7795

cd E:\rdm2019
cd 3rdparty/
nuget install zlib-msvc14-x64 -Version 1.2.11.7795

配置SSL的路径

安装好OpenSSL之后可能要修改路径,之前提到我个人是安装在D:\Tools\OpenSSL-Win64下的。

# 打开 3rdparty\3rdparty.pri
# 修改 OPENSSL_LIB_PATH = C:\OpenSSL-Win64\lib\VC 为真实的路径即可
OPENSSL_LIB_PATH = D:\Tools\OpenSSL-Win64\lib\VC

安装Python3

官方文档中提醒各位是安装在C:\Python37-x64,可能有部分小伙伴已经安装好了Python。我们可以修改一个文件即可。

# 打开 3rdparty\pyotherside.pri
# 修改Python的路径为真实路径即可:
QMAKE_LIBS += -LD:\Tools\Python37\libs -lpython37
INCLUDEPATH += D:\Tools\Python37\include\

编译crashreporter

这个文件编译需要使用到powershellreplace方法,并且编译crashreporter编译时是必须存在的,不然无法编译
使用“适用于 VS 2017 的 x86_x64 兼容工具命令提示”进行操作:

# 进入文件夹
cd E:\rdm2019\3rdparty\crashreporter
# 设定编译环境
"E:\Tools\Qt5.9.8\5.9.8\msvc2017_64\bin\qmake.exe" CONFIG+=release DESTDIR=E:\rdm2019\bin\windows\release # 配置编译脚本的参数
powershell -Command "(Get-Content Makefile.Release).replace('DEFINES =','DEFINES = -DAPP_NAME=\\\"RedisDesktopManager\\\" -DAPP_VERSION=\\\""%VERSION%"\\\" -DCRASH_SERVER_URL=\\\"https://oops.redisdesktop.com/crash-report\\\"')" > Makefile.Release2 eg.
powershell -Command "(Get-Content Makefile.Release).replace('DEFINES =','DEFINES = -DAPP_NAME=\\\"RedisDesktopManager\\\" -DAPP_VERSION=\\\""2019.4.0"\\\" -DCRASH_SERVER_URL=\\\"https://oops.redisdesktop.com/crash-report\\\"')" > Makefile.Release2 # 这个地方一定要使用VS的本机命令行工具提示符
nmake -f Makefile.Release2

修改 hiredis

由于win下的软件和其他的平台的C的语法区别需要合并补丁

cd E:\rdm2019\3rdparty\qredisclient\3rdparty\hiredis
git apply ../hiredis-win.patch

编译主程序

Qt 编译
打开Qt Creator,打开 E:\rdm2019\src\rdm.pro
选择 “Deaktop Qt 5.9.6 MSVC2017 64bit”,构建选择 release,点击构建项目。

构建安装程序

这里主要是用来处理程序是依赖关系,不然只有主程序是不能运行的。

cd E:\rdm2019
copy /y .\bin\windows\release\crashreporter.exe .\build\windows\installer\resources\crashreporter.exe
copy /y .\bin\windows\release\rdm.exe .\build\windows\installer\resources\rdm.exe # 切换目录
cd E:\rdm2019\build\windows\installer\resources
# 优先选择这个
E:\Tools\Qt5.9.8\5.9.8\msvc2017_64\bin\windeployqt --no-angle --no-opengl-sw --no-compiler-runtime --no-translations --release --force --qmldir E:\rdm2019\src\qml rdm.exe
#这个好像有垃圾文件 # 我也不知道为什么删除
rmdir /S /Q .\platforminputcontexts
rmdir /S /Q .\qmltooling
rmdir /S /Q .\QtGraphicalEffects
del /Q .\imageformats\qtiff.dll
del /Q .\imageformats\qwebp.dll

验证编译程序

由于作者在2019.4.0的版本之后加入了Python,所以这个地方我们还要下载一个Python的运行环境python-3.7.4-embed-amd64.zip,至于为什么如下图所示:

注意:我们值需要复制python37.zip、python37.dll这两个文件即可。安装了Python环境的电脑机器上不会报错的,但是也不会启动。建议在虚拟机上或者另外的电脑测试。

打包发布程序

经过上面的步骤之后,现在可以顺利发布程序给其他的小伙伴了,开不开心?

#切换目录
cd E:\rdm2019
# 打包安装文件
call "E:\\Tools\\NSIS\\makensis.exe" /V1 /DVERSION=%VERSION% ./build/windows/installer/installer.nsi
eg.
call "E:\\Tools\\NSIS\\makensis.exe" /V1 /DVERSION=2019.4.0 ./build/windows/installer/installer.nsi

注意:本次打包出来的程序不支持SSH:

错误修正

到上面呢基本可以够用了,但是应该有人发现在启动的时候程序窗体会有如下图所示的错误:

这是因为我们没有安装相关的Python依赖包,安装的方式在官方文档中已经给出了。

# 切换目录
cd E:\rdm2019
# 下载依赖
pip install -r src/py/requirements.txt

复制E:\Tools\Python3\Lib文件夹,一番操作之后保留如下图所示的文件,记住将src/py下的文件也复制过去:

Lib
└─site-packages
├─cbor
├─formatters
├─msgpack
├─rdb
├─rdbtools
│ ├─cli
│ └─templates
└─redis

生成最后的pyc文件,并删除pycache和py的源码文件。使用命令如下:

# 切换到目录中
cd Lib/site-packages/
# 编译pyc
python -m compileall -b .

至此E:\rdm2019\build\windows\installer\resources文件夹下就有一个Lib目录,最后运行就没有错误啦。相应的格式化功能都有,只是和作者的不一样。

Mac下环境准备

macOS下我个人感觉相对简单一些,安装好QT 5.9.x、XCode之后基本上就可以命令搞定了

准备工作

  • HomeBrew
  • 使用HomeBrew 安装 openssl 和 cmake

注意:QT安装的时候除了要选择Qt Creator和Charts module以外你还要选择 Mac,这是一个注意点。

编译 crashreporter

cd 3rdparty/crashreporter && ~/Qt5.9.8/5.9.8/clang_64/bin/qmake DESTDIR=./../../bin/osx/release

vi Makefile
# 修改
DEFINES = -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
# 为:
DEFINES = -DAPP_NAME=\"RedisDesktopManager\" -DAPP_VERSION=\"%VERSION%\" -DCRASH_SERVER_URL=\"https://oops.redisdesktop.com/crash-report\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG # eg.
DEFINES = -DAPP_NAME=\"RedisDesktopManager\" -DAPP_VERSION=\"2019.4.0\" -DCRASH_SERVER_URL=\"https://oops.redisdesktop.com/crash-report\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG # 编译
make -s -j 8 # 复制文件到最终目录
# mkdir -p ../../bin/osx/release && mv bin/crashreporter ../../bin/osx/release
# 由于已经指定了编译的目录,不会生生成在当前目录,所以不执行上面的语句

编译主程序

注意:这个地方一定要补上src/configure、build/common_functions

./configure && ~/Qt5.9.8/5.9.8/clang_64/bin/qmake CONFIG-=debug && make -s -j 8 && cd ..
# 切换目录
cd ./bin/osx/release
# 添加QT依赖
~/Qt5.9.8/5.9.8/clang_64/bin/macdeployqt rdm.app -qmldir=../../../src/qml # 删除非不必要的文件(如果已经做好了Python.framework就不需要了)
rm -rf rdm.app/Contents/Frameworks/Python.framework/Versions/3.7/Headers/
rm -rf rdm.app/Contents/Frameworks/Python.framework/Versions/3.7/Resources/
rm -rf rdm.app/Contents/Frameworks/Python.framework/Versions/3.7/bin/
rm -rf rdm.app/Contents/Frameworks/Python.framework/Versions/3.7/include/
rm -rf rdm.app/Contents/Frameworks/Python.framework/Versions/3.7/share/ # 修改文件对系统环境的依赖 # 查看依赖
otool -L rdm.app/Contents/Frameworks/libssl.1.0.0.dylib # 替换依赖
install_name_tool -change /usr/local/Cellar/openssl/1.0.2r/lib/libcrypto.1.0.0.dylib @executable_path/../Frameworks/libcrypto.1.0.0.dylib rdm.app/Contents/Frameworks/libssl.1.0.0.dylib # 查看依赖
otool -L rdm.app/Contents/MacOS/rdm # 替换依赖
install_name_tool -change /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python @executable_path/../Frameworks/Python.framework/Versions/3.7/Python rdm.app/Contents/MacOS/rdm

成品下载

考虑换到公众号里面去发送信息然后获取下载地址,后面想想算了还是放出来吧。

特别感谢

扫一扫,分享到微信

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAADGCAAAAACs8KCBAAACI0lEQVR42u3ay27CMBAF0P7/T6fbSohw7zhtFed4hZAJPiwGz+PrK17Hy/r5frJntvPihYGBcVvGcbrOv2C2Z+WneUvFwMB4AONdBLv2KHnMzM+GgYGB0e5Zh2FgYGBcG3DPn9Ae5d/+NzAwMG7CyMNl8pWzZDgpzF2Qi2NgYNyQkVfd//71r/Q3MDAwbsU4ypVc7FbKbcNTYWBgbM3IA9wMeZ6CrgRcDAyMZzLaEn9eYmsPPXsHAwNjV0YbLvPCfRQi43LbBwwGBsbWjLYBORsUm4Xv9nKJgYGxK6MNlyttxfzol02LYGBgPIDRhsur0t087GJgYDyN0Y6C5QltvqcIsq+5OAYGxqaMtj2ZU5OWQ1vg+/AcDAyMBzDyIlqb7rbJcB7uh3VBDAyM2zKWgl3Z5pw1CeqZEQwMjC0Ys+J+m4i2gxQ1BgMDY2tGXdKKw2V+BZy1VDEwMJ7DmB09efQ65oK5NgwMjC0Ys7mFJMjmP02SANeFPwwMjO0Y7ZBEkny27c9ZQ6L+98DAwLg5Y5aarjyhLdVhYGBg5MWv9RZCe62MnoyBgbEp4yjXrKCWj1/MWp4YGBh7M9pm4Uqa2u5Jjl5jMDAwbsu4KkSutBbaK2N9QcTAwNiCkTcG1j+VD14UqS8GBgZG3BKYFd2SkFrMiWBgYGAER195zjBMY2BgPIDRNgPyMJoH5fYCioGB8RxGnjoO08vRQMYsNGNgYGzH+Ab7+omHQMe5+wAAAABJRU5ErkJggg==" alt="微信分享二维码">

源码编译Redis Desktop Manager | 懒人屋的更多相关文章

  1. 源码编译Redis Desktop Manager ---(转载)

    精美文章转载: 版权声明:本文作者为「Kany.Wang」,本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议.转载请注明出处!原文链接:https://kany.me/20 ...

  2. Ubuntu下修改ubuntu源,完成Redis Desktop Manager的安装

    原文地址: http://blog.csdn.net/u013410747/article/details/51706964 免费下载链接:http://pan.baidu.com/s/1cA3jWU ...

  3. Ubuntu16.04编译安装Redis Desktop Manager

    Redis Desktop Manager for OSX&Ubuntu 的安装版是收费的, 如果自己编译则是免费的. 安装过程参考官方提供的文档  http://docs.redisdesk ...

  4. Linux centos7编译源码安装redis

    1.安装准备 ① 由于redis底层用c语言编写的,安装redis需要先将官网下载的源码进行编译,编译依赖make和gcc环境,如果没有则需要安装(一般系统中已经装了了make和gcc,无须再装) 安 ...

  5. 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 ...

  6. Nginx+Php-fpm+MySQL+Redis源码编译安装指南

    说明:本教程由三部分组成如下: 1.      源码编译安装Nginx 2.      源码编译安装php以及mysql.redis扩展模块 3.      配置虚拟主机 文中所涉及安装包程序均提供下 ...

  7. CentOS 7.4 源码编译安装 Redis

    一.CentOS 7.4  源码编译安装 Redis 1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar ...

  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x

    笔记 2.源码编译安装Redis4.x     简介:使用源码安装Redis4.x和配置外网访问 1.快速安装  https://redis.io/download#installation      ...

  9. Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager

    Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...

随机推荐

  1. 字符串:StringBuilder()

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) [1]String和StringBuffer      String ...

  2. 容器————map

    序列容器是管理数据的宝贵工具,但对大多数应用程序而言,序列容器不提供方便的数据访问机制.一种典型的方法是通过名称来寻找地址.如果记录保存在序列容器中,就只能通过搜索得到这些数据.相比而言,map 容器 ...

  3. VirtualBox NAT Host-only模式下,自动分配IP上网。

    修改宿主机上,virtualbox自建虚拟网卡Host-Only 2. 因为我使用了两个适配器,所以这两个适配器的名字分别是ifcfg-eth0, ifcfg-eth1. ifcfg-eh0一般默认就 ...

  4. [CSP-S模拟测试]:彩球问题(记忆化搜索)

    题目传送门(内部题91) 输入格式 第一行一个正整数$N$,表示颜色种类数. 第二行$N$个正整数$k[i],k[i]$表示第$i$种颜色的数量$(1\leqslant k[i]\leqslant 3 ...

  5. 常用的vi快捷方式

    一般情况来说: 0代表行首,$代表行末 $,G代表最后一行 光标移动 0 移动到本行最前面 $ 移动到本行最后 G 移动文件最后一行 nG 移动到文件第n行 gg 移动到文件第一行 n[space]移 ...

  6. mysql 安装相关

    Mysql 是基于C/S端的管理文件的服务器软件. Mysql简单分为两个软件:1服务器软件 2客户端软件 对于服务器软件中的socket服务器是一只开着的,客户端需要连接,并且还有创建文件删除文件等 ...

  7. JAVA周二学习总结

    第一周我感觉我学到了不少东西,其中有上学期C语言学的不好的原因,因为不想再挂科就有认真的在听. 学到的东西有JAVA的基本书写模式自己懂了,还在课堂上弄会了交换数据的方法,还有运算的算法,另外还有数据 ...

  8. NDK下编译JNI

    NDK环境下编译JNI 下载demo.tar.gz然后解压 弄个套路 1.编辑build.sh设置好NDK目录 2.把cpp文件放到code下面 运行sh build.sh即可

  9. tomcat在45秒内没有启动,启动超时

    在部署的时候出现Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server ...

  10. JS去重-删除连续重复的值

    function removeRepetition(str) { var result = "", unStr; for(var i=0,len=str.length;i<l ...