诸位读者新年好,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 exit status
make: *** [tmux] Error

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版本问题记录

不要着急改代码,先想想--centos 6.8下编译安装tmux的更多相关文章

  1. CentOS 6.4下编译安装MySQL 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  2. CentOS 6.4下编译安装MySQL 5.6.14 (转)

    CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...

  3. 0622 CentOS 6.4下编译安装MySQL 5.6.14

    转自http://www.cnblogs.com/xiongpq/p/3384681.html 概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版 ...

  4. CentOS 6.4下编译安装MySQL 5.6.16

    一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...

  5. centos 6.5下编译安装、配置高性能服务器Nginx

    1.nginx是什么? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力 ...

  6. CentOS 6.4下编译安装 gcc-4.8.0(转)

    转:http://www.centoscn.com/image-text/install/2014/0807/3454.html 1.首先下载源代码 wget http://ftp.gnu.org/g ...

  7. radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5

    #安装编译环境 yum groupinstall "Development tools" 或者 yum install gcc gcc-c++ gcc-g77 flex bison ...

  8. CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1

    一.安装前的准备工作 1.yum update    #更新系统 2.yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2  ...

  9. CentOS 6.5 下编译安装 Nginx 1.8.0

    转自:https://i.cnblogs.com/EditPosts.aspx?postid=8303227&update=1 安装编译依赖的包 yum -y install gcc gcc- ...

随机推荐

  1. 详解树莓派Model B+控制蜂鸣器演奏乐曲

    步进电机以及无源蜂鸣器这些都需要脉冲信号才能够驱动,这里将用GPIO的PWM接口驱动无源蜂鸣器弹奏乐曲,本文基于树莓派Mode B+,其他版本树莓派实现时需参照相关资料进行修改! 1 预备知识 1.1 ...

  2. SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

    目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列.. 先谢谢大家的支持.. 我们来聊聊SignalR的性能监测与服务器的 ...

  3. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  4. “不给力啊,老湿!”:RSA加密与破解

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...

  5. SQLServer文件收缩-图形化+命令

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 收缩前 图形化演示: 不仅仅可以收缩日记文件,数据库文件也是可以收缩的,只不过日记收缩比 ...

  6. Paypal开发中遇到请求被中止: 未能创建 SSL/TLS 安全通道及解决方案

    最近在基于ASP.NET上开发了Paypal支付平台,在ASP.NET开发的过程中没有遇到这个问题,但是引用到MVC开发模式中的时候就出现了"未能创建 SSL/TLS 安全通道及解决方案&q ...

  7. Xamarin+Prism开发详解一:PCL跨平台类库与Profile的关系

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]中提到过以下错误,不知道大伙还记得不: 无法安装程序包"Microsoft.Identity.Client 1.0. ...

  8. zookeeper源码分析之三客户端发送请求流程

    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...

  9. Syscall,API,ABI

    系统调用(Syscall):Linux2.6之前是使用int0x80(中断)来实现系统调用的,在2.6之后的内核是使用sysentry/sysexit(32位机器)指令来实现的系统调用,这两条指令是C ...

  10. 《月之猎人 (Moon Hunters)》主角设计

    原文链接 游戏开发人员,你们好! 我是 Kitfox Games 工作室的总监 Tanya,我们的工作室位于加拿大的蒙特利尔,拥有六名员工. 我们 3 月份发布了<月之猎人>游戏的桌面版, ...