• Redis实战——安装问题汇总


    借鉴:https://www.cnblogs.com/liu2-/p/6914159.html

    通用方法:迅速查看缺少的包的路径,并安装

      yum provides ***

      如 yum provides rx

    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirrors.cn99.com
    * extras: mirror.bit.edu.cn
    * updates: mirrors.aliyun.com
    base/7/x86_64/filelists_db | 6.9 MB 00:00:00
    extras/7/x86_64/filelists_db | 603 kB 00:00:02
    updates/7/x86_64/filelists_db | 3.3 MB 00:00:00
    lrzsz-0.12.20-36.el7.x86_64 : The lrz and lsz modem communications programs
    源 :base
    匹配来源:
    文件名 :/usr/bin/rx
      yum install -y lrzsz-0.12.20-36.el7.x86_64
    • 编译过程中出现报错

    第一种:

    [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 &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd linenoise &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd lua &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd jemalloc &amp;&amp; [ -f Makefile ] &amp;&amp; make distclean) &gt; <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='' &gt;&gt; .make-settings
    echo WARN=-Wall -W -Wno-missing-field-initializers &gt;&gt; .make-settings
    echo OPT=-O2 &gt;&gt; .make-settings
    echo MALLOC=jemalloc &gt;&gt; .make-settings
    echo CFLAGS= &gt;&gt; .make-settings
    echo LDFLAGS= &gt;&gt; .make-settings
    echo REDIS_CFLAGS= &gt;&gt; .make-settings
    echo REDIS_LDFLAGS= &gt;&gt; .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 &gt;&gt; .make-settings
    echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic &gt;&gt; .make-settings
    (cd ../deps &amp;&amp; make hiredis linenoise lua jemalloc)
    make[2]: Entering directory `/home/webapp/redis-4.0.9/deps'
    (cd hiredis &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd linenoise &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd lua &amp;&amp; make clean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (cd jemalloc &amp;&amp; [ -f Makefile ] &amp;&amp; make distclean) &gt; <a style="color:#3465A4" href="/dev/null">/dev/null</a> || true
    (rm -f .make-*)
    (echo "" &gt; .make-ldflags)
    (echo "" &gt; .make-cflags)
    MAKE hiredis
    cd hiredis &amp;&amp; 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

  • 相关阅读:
    1.1.9 如何从正文开始设置页眉页脚
    1.1.8 怎样在Word的页眉中插入一级标题
    1.1.5 在同一折线图中画2条曲线
    1.1.4 图片自动编号
    1.1.3 公式编号对齐
    1.1.2 一页摘要不分栏,正文分栏
    1.1.1 参考文献格式未满行直接换行
    kernel page_size
    kernel cpu_cur_freq
    kernel printk
  • 原文地址:https://www.cnblogs.com/onlymate/p/9052190.html
Copyright © 2020-2023  润新知