Redis实战——安装问题汇总
借鉴:https://www.cnblogs.com/liu2-/p/6914159.html
通用方法:迅速查看缺少的包的路径,并安装
yum provides ***
如 yum provides rx
编译过程中出现报错
第一种:
[webapp@MyLinux redis-4.0.9]$ make
cd src && make all
make[1]: Entering directory `/home/webapp/redis-4.0.9/src'
CC Makefile.dep
make[1]: Leaving directory `/home/webapp/redis-4.0.9/src'
make[1]: Entering directory `/home/webapp/redis-4.0.9/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: Entering directory `/home/webapp/redis-4.0.9/deps'
(cd hiredis && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd linenoise && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd lua && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd jemalloc && [ -f Makefile ] && make distclean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(rm -f .make-*)
make[2]: Leaving directory `/home/webapp/redis-4.0.9/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS= -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: Entering directory `/home/webapp/redis-4.0.9/deps'
(cd hiredis && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd linenoise && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd lua && make clean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(cd jemalloc && [ -f Makefile ] && make distclean) > <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
(rm -f .make-*)
(echo "" > .make-ldflags)
(echo "" > .make-cflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory `/home/webapp/redis-4.0.9/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[3]: gcc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/home/webapp/redis-4.0.9/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/home/webapp/redis-4.0.9/deps'
make[1]: [persist-settings] Error 2 (ignored)
CC adlist.o
<a style="color:#3465A4" href="/bin/sh">/bin/sh</a>: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/home/webapp/redis-4.0.9/src'
make: *** [all] Error 2
提示gcc命令未找到,这是因为redis没有安装gcc编译器没安装
这时候只要安装编译器即可
[webapp@MyLinux redis-4.0.9]# yum install -y gcc g++ gcc-c++ make
安装完成提示
nstalled:
gcc.x86_64 0:4.4.7-18.el6_9.2 gcc-c++.x86_64 0:4.4.7-18.el6_9.2 Dependency Installed:
cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-18.el6_9.2
libstdc++-devel.x86_64 0:4.4.7-18.el6_9.2 mpfr.x86_64 0:2.4.1-6.el6
ppl.x86_64 0:0.10.2-11.el6 Dependency Updated:
libgcc.x86_64 0:4.4.7-18.el6_9.2 libgomp.x86_64 0:4.4.7-18.el6_9.2
libstdc++.x86_64 0:4.4.7-18.el6_9.2 Complete!
第二种:
[root@bogon redis-3.2.8]# make
cd src && make all
make[1]: 进入目录“/usr/local/redis-3.2.8/src”
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/usr/local/redis-3.2.8/src”
make: *** [all] 错误 2
原因分析:
在README 有这个一段话
Allocator
--------- Selecting a non-default memory allocator when building Redis is done by setting
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc. To force compiling against libc malloc, use: % make MALLOC=libc To compile against jemalloc on Mac OS X systems, use: % make MALLOC=jemalloc 说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。 而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。 但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
我应该就是这个问题
没有jemalloc 而只有 libc 当然 make 出错。
这时候在编译过程时增加一个参数
[root@bogon redis-3.2.8]# make MALLOC=libc
编译成功:
其中出现了两个警告
ldo.c: 在函数‘f_parser’中:
ldo.c:496:7:<span style="color:#ff0000;background-color: rgb(204, 204, 204);"> <strong>警告</strong></span>:未使用的变量‘c’ [-Wunused-variable]
int c = luaZ_lookahead(p->z); liblua.a(loslib.o):在函数‘os_tmpname’中:
loslib.c:(.text+0x28c): 警告:the use of `tmpnam' is dangerous, better use `mkstemp'
第三种

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
Redis实战——安装问题汇总的更多相关文章
- Redis实战——安装
借鉴来源:https://www.cnblogs.com/codersay/p/4301677.html redis官网地址:http://www.redis.io/ 最新版本: redis-4.0. ...
- GO学习-(25) Go操作Redis实战
Go操作Redis实战 安装Redis客户端 Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作.使用以下命令下载并安装: go ...
- redis实战(01)_redis安装
早就想对redis进行实战操作了,最近看了一些视频和参考书籍,总结总结一下,redis实战内容: 实战前先对redis做一个大概的认识: 现在开始安装redis了... redis的安装下载地址 ht ...
- Redis实战(一)Redis简介及环境安装(Windows)
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...
- Centos7下安装redis实战(单机版以及集群)
一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...
- C# Redis实战(二) [转]
二.Redis服务 在C# Redis实战(一)中我将所有文件拷贝到了D盘redis文件夹下,其中redis-server.exe即为其服务端程序,双击即开始运行,如图 ...
- C# Redis实战
转自 :http://blog.csdn.net/qiujialongjjj/article/details/16945569 一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持 ...
- Redis实战
大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放.印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会 ...
- C# Redis实战(三)
三.程序配置 在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web ...
随机推荐
- 白话machine learning之Loss Function
转载自:http://eletva.com/tower/?p=186 有关Loss Function(LF),只想说,终于写了 一.Loss Function 什么是Loss Function?wik ...
- 使用SDWebImage加载大量图片后造成内存泄露的解决办法
SDWebImage的知名度就不用说了,github上近10k的star,国内外太多的App使用其进行图片加载. 但是最近在使用过程中发现,在UITableView中不断加载更多的内容,使用SDWeb ...
- ResultSet.TYPE_SCROLL_SENSITIVE到底发生了什么?
转自:https://blog.csdn.net/axman/article/details/3984103 这个问题我在几年前说过,但今天再次从CSDN上看到有人问这个问题,可以看出,真正懂这个问题 ...
- 访问Mat矩阵中的元素并为其赋值
在OpenCV中有三种方式访问矩阵中的数据元素:容易的方式,困难的方式,以及正确的方式.今天主要讲容易方式: 最容易的方式是使用宏CV_MAT_ELEM( matrix, elemtype, row, ...
- Android.mk语法解析
Android.mk 相当于 Linux 中的 Makefile 文件,用来向安卓系统描述如何编译源代码.该文件会被编译器解析多次,所以尽量减少在 Android.mk 中声明变量. Android. ...
- RK3288 dts和dtsi介绍
Device Tree 是一种描述硬件的数据结构,它起源于 OpenFirmware(OF).在 Linux2.6 中,ARM 架构的板机硬件细节过多地被硬编码在 arch/arm/plat-xxx ...
- 算法题:求一个序列S中所有包含T的子序列(distinct sub sequence)
题: 给定一个序列S以及它的一个子序列T,求S的所有包含T的子序列.例: S = [1, 2, 3, 2, 4] T = [1, 2, 4] 则S的所有包含T的子序列为: [1, 2, 3, 2, 4 ...
- python is 和 == 的区别
一.is 和 == 的区别 == 比较 比较的俩边的值 is 比较 比较的是内存地址 id() 二.小数据池 数字小数据池的范围 -5 ~ 256 字符串中如果有特殊字符他们的内存地址就不一样 字符串 ...
- map.js
function Map() { var struct = function(key, value) { this.key = key; this.value = value; } var put = ...
- Spring AOP两种实现方式
一. AOP 概念: Spring AOP 即Aspect Oriented Programming(面向切面编程), 实现方式分为两种: 1. 注解(Annotation) 2. 配置(Config ...