诸位读者新年好,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. .NET Core全新路线图

    .NET Core / ASP.NET Core 1 RTM发布两周后,社区也很积极,收到了非常多的反馈,上周五微软的scott Hunter 在dotnet团队官方博客上发布了.NET Core全新 ...

  2. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  3. C语言 · 薪水计算

    问题描述 编写一个程序,计算员工的周薪.薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水.如果员工工作的时间在40 到50 ...

  4. python基础

    内容概要: 一.python2 or python3 目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流. python2和3区别: 1.PRINT IS ...

  5. angular2之前端篇—1(node服务器分支)

    上一篇.net core和angular2之前端篇-1 使用的是dotnet模板.之所以用它,因为想用他写webapi,但是写道下一篇的时候遇到点问题,所以先写个分支测试一下.这次是用Node作为服务 ...

  6. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  7. 2-1 Linux 操作系统及常用命令

    根据马哥linux初级视频 2-1.2-2来编辑 1. GUI与CLI GUI: Graphic User Interface CLI: Command Line Interface 注:在Windo ...

  8. [DJANGO] excel十几万行数据快速导入数据库研究

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...

  9. 自制文件上传JS控件,支持IE、chrome、firefox etc.

    (function() { if (window.FileUpload) { return; } window.FileUpload = function (id, url) { this.id = ...

  10. 我认为JS还可以改进的点

    曾经我一度在寻找JS的替代语言,尝试过CoffeeScript/TypeScript/Dart(都是浅尝).不为什么原因,而是当你写的越多的JS,越觉得JS很多时候显得很操蛋.好在ES2015和Bab ...