zoukankan      html  css  js  c++  java
  • 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位。写博客是我2017年定下的目标之一,希望我会坚持下去。

    最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Blog,还是先解决问题。

    centos 6.8 64-bit + tmux release 2.3

    centos软件源中没有tmux,rpm search也没有找到相应的包,只能编译安装。

    编译安装过程中缺少libevent等库的问题怎么解决就不讲了,解决完这些常规问题后,编译报错。

    depbase=`echo control.o | sed 's|[^/]*$|.deps/&|;s|.o$||'`;
    	gcc -DPACKAGE_NAME="tmux" -DPACKAGE_TARNAME="tmux" -DPACKAGE_VERSION="2.3" -DPACKAGE_STRING="tmux 2.3" -DPACKAGE_BUGREPORT="" -DPACKAGE="tmux" -DVERSION="2.3" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_PATHS_H=1 -DHAVE_PTY_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_DIR_H=1 -DHAVE_TERM_H=1 -DHAVE_DIRFD=1 -DHAVE_FLOCK=1 -DHAVE_PRCTL=1 -DHAVE_SYSCONF=1 -DHAVE_CFMAKERAW=1 -DHAVE_NCURSES_H=1 -DHAVE_B64_NTOP=1 -DHAVE_FORKPTY=1 -DHAVE_DAEMON=1 -DHAVE_SETENV=1 -DHAVE_ASPRINTF=1 -DHAVE_STRCASESTR=1 -DHAVE_STRSEP=1 -DHAVE_CFMAKERAW=1 -DHAVE_OPENAT=1 -DHAVE_DECL_OPTARG=1 -DHAVE_DECL_OPTIND=1 -DHAVE_DECL_OPTRESET=0 -DHAVE_BSD_TYPES=1 -DHAVE___PROGNAME=1 -DHAVE_PROGRAM_INVOCATION_SHORT_NAME=1 -DHAVE_PR_SET_NAME=1 -DHAVE_PROC_PID=1  -I.   -DTMUX_CONF=""/etc/tmux.conf""  -iquote.    -D_GNU_SOURCE -std=gnu99 -O2     -MT control.o -MD -MP -MF $depbase.Tpo -c -o control.o control.c &&
    	mv -f $depbase.Tpo $depbase.Po
    control.c: In function ‘control_callback’:
    control.c:64: warning: implicit declaration of function ‘evbuffer_readln’
    control.c:64: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)
    control.c:64: error: (Each undeclared identifier is reported only once
    control.c:64: error: for each function it appears in.)
    make: *** [control.o] Error 1
    

     读源代码解决问题肯定不现实啦,那就google吧。恩,貌似需要libevent2,那就安装吧,yum install libevent2-devel. 嗯哼,竟然与libevent-devel冲突,那么先卸载libevent-devel,再编译一下

    tty.o: In function `tty_cmd_setselection':
    tty.c:(.text+0x500): undefined reference to `__b64_ntop'
    collect2: ld returned 1 exit status
    make: *** [tmux] Error 1

    WTF,继续google,原来makefile中少了一个链接引用

    LIBS = -lutil -lcurses -levent -lrt -lresolv

    大功告成,终于搞定了。

    如果你经常按照我上面的思路工作,那么你也许会经常遇到这样的场景。

    可以下班了吧,等等,手上还有三个BUG没解,明天还要交一份报告,我去,事情太多了,程序员太苦逼了,每天这么多事,老子辞职不干了。

    很多人的思维方式是遇到问题解决问题,技术能力越高,解决的问题越多,就越自信,就越不怕问题。这是好事。

    问题是解决这么个问题,花了几个小时(打个比方),得到了什么呢,是手头积攒的BUG要加班解决,是每天陷入这种google and fix的虚假的满足感。如果遇到冷门问题,google不到怎么办? 真的要去研究一遍源代码?

    让我们换个思路考虑一下,有点经验的同学应该知道,开源软件编译报错不外乎这几种情况:

    1. 软件不支持OS平台

    2. 软件BUG

    3. 使用了github上的非release版本

    tmux 2.3版本是30 Sep,2016发布的,centos 6的发布时间早了去了,很明显,tmux最新的版本与centos 6.8不兼容,那么找一个与centos 6发布时间接近的版本试试看。

    tmux release 1.6 ,一次编译通过,分分钟搞定。

    这是我亲身经历的过程。能力越强的人,越容易陷入到第一种思路中不可自拔。遇到问题就钻进去,而且绝大部分情况下也都解决了。
    这会给人一种错觉,我很厉害,我很努力,我是牛人。可是这些问题真的那么重要吗? 这些问题真的没有办法绕过去吗?花费时间解决这些无穷无尽的问题有多大的意义呢?

    人生这艘船在海上航行,短期的目标靠的是效率、长期的目标靠的是方向。想要走的远,在追逐每一条美人鱼前,请先想一想自己人生的方向。

    centos 6.x下编译安装tmux 2.3版本问题记录

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/redstar9451/p/6241283.html
Copyright © 2011-2022 走看看