诸位读者新年好,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. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  2. DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(3)

    上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(2)> 这篇文章主要是对 DDD.Sample 框架增加 Transa ...

  3. Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)

    忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...

  4. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  5. css居中div的几种常用方法

    在开发过程中,很多需求需要我们居中一个div,比如html文档流当中的一块div,比如弹出层内容部分这种脱离了文档流等.不同的情况有不同的居中方式,接下来就分享下一下几种常用的居中方式. 1.text ...

  6. 微信小程序初探

    做为码农相信大家最近肯定都会听到微信小程序,虽然现阶段还没有正式开放注册,但大家可以还是可以开发测试. 到微信的WIKI(http://mp.weixin.qq.com/wiki?t=resource ...

  7. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  8. Mysql - 性能优化之子查询

    记得在做项目的时候, 听到过一句话, 尽量不要使用子查询, 那么这一篇就来看一下, 这句话是否是正确的. 那在这之前, 需要介绍一些概念性东西和mysql对语句的大致处理. 当Mysql Server ...

  9. [Django]用户权限学习系列之权限管理界面实现

    本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...

  10. 如何开发FineReport的自定义控件?

    FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一 ...