原文:源码编译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. z-tree官方提供的下拉菜单案例

    1.z-tree官方提供的下拉菜单案例 <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - selec ...

  2. HDU 6012 Lotus and Horticulture(离散化)

    题目代号:HDU 6012 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 Lotus and Horticulture Time Limit: ...

  3. 【转】Django之Model层的F对象,Q对象以及聚合函数

    转自:https://blog.csdn.net/wsy_666/article/details/86692050 一.F对象: 作用:用于处理类属性(即model的某个列数据),类属性之间的比较.使 ...

  4. [BZOJ3622]已经没有什么好害怕的了:DP+容斥原理

    分析 说白了就是一道先DP再二项式反演的水题,然后被脑残博主把"多\(k\)组"看成了"糖果比药片能量大的组数恰好为\(k\)组",还改了各种奇怪的地方,最后看 ...

  5. sqli-labs(32)

    0x1查看源代码 (1)代码关键点 很明显,代码中利用正则匹配将 [ /,'," ]这些三个符号都过滤掉了 preg_replace 0x2 宽字符注入 (1)前言 在mysql中,用于转义 ...

  6. sql 查询每天数据

    一 表 内数据存的是 ‘2017-09-08 15:13:59’这样格式 表 customer_mate_follow 时间字段 created_at   1, SELECT ,) as day, C ...

  7. 旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)

    题目地址 : 旋转数组. 网上好多不是根本就是错的,就是空间复杂度不是真正为1 下面总结一下 方法1 普通方法(空间复杂度不满足要求,但是题目并不会判错,说明他们没用对空间进行校验) ··· publ ...

  8. maven 安装jar包命令

    以 spring-context-support-3.1.0.RELEASE.jar 为例,在 @3图中已经给出这个 jar 包的 groupId,artifactId,version信息,手动安装的 ...

  9. Openstack 实现技术分解 (2) 虚拟机初始化工具 — Cloud-Init & metadata & userdata

    目录 目录 前文列表 扩展阅读 系统环境 前言 Cloud-init Cloud-init 的配置文件 metadata userdata metadata 和 userdata 的区别 metada ...

  10. js实现上传文件实时显示缩略图

    <input name="coverImage" onClick="" onchange="setImagePreview(this);&quo ...