工作中经常需要在服务器(Centos)上敲代码,但是实在不习惯vim的按键习惯,也不满意默认的终端,想换上称手的emacs和zsh。但是由于没有服务器管理员权限,在安装过程中就碰到了各种问题,所幸最后都解决了,现做个记录。
安装Emacs
1. 下载Emacs源代码
从Emacs官网下载最新的emacs版本emacs-26.1.tar.gz
上传到服务器解压
1 | tar -xf emacs-26.1.tar.gz |
2. configure
一般如果有管理员权限,直接configure就可以了:
1 | ./configure |
但是这样配置软件会安装在/usr/bin
下,没有管理员权限会安装失败,所以需要指定一个用户目录安装软件,比如~/software/emacs
(实际需要绝对路径):
1 | ./configure --prefix=/home/username/software/emacs |
因为是在服务器上运行,所以没必要安装界面程序,可以将with-x
设置为no:
1 | ./configure --prefix=/home/username/software/emacs --with-x=no |
这样运行之后会提示:
1 | configure: error: The following required libraries were not found: gnutls |
谷歌gnutls发现这是一个安全通信相关的库,如果只是写写代码的话可以不需要这个库,所以果断给pass掉:
1 | ./configure --prefix=/home/username/software/emacs --with-x=no --with-gnutls=no |
再次运行依然提示错误:
1 | configure: error: The required function 'tputs' was not found in any library |
谷歌了下这个错误,发现缺少ncurses-devel
库,因为没有管理员权限,我们不能使用yum安装,只能自己手动编译。
下载ncurses-6.1.tar.gz,并解压
进入解压之后的目录
1
2
3./configure --prefix=/home/username/software/ncurses
make
make install
ncurses
安装完之后,就可以在配置emacs安装程序的时候指定ncurses
库了:
1 | ./configure --prefix=/home/username/software/emacs --with-x=no --with-gnutls=no LDFLAGS=-L/home/username/software/ncurses/lib CPPFLAGS=-I/home/username/software/ncurses/include |
这样就可以配置成功了。
3. make
配置成功之后编译:
1 | make |
4. make install
编译完之后开始安装:
1 | make install |
安装Zsh
安装zsh同样会因为没有管理员权限不能使用yum安装,只能从源码编译,过程与emacs安装大同小异。巧的是,安装zsh也会用到ncurses
库。但是如果直接使用上述方法编译ncurses
在make zsh的时候会报链接错误,需要在配置ncurses的时候指明生成动态链接库:
1 | ./configure --prefix=/home/username/software/ncurses --enable-shared |