在没有管理员权限的 Linux 服务器上安装 vim
最近拿到了一个实验室的服务器帐号用来跑一些计算,是一个没有 sudo
权限的普通用户帐号。
本来以为有没有管理员权限对我都没啥影响,结果登上去一看,发现这台新配的服务器很多东西都还没来得及装,连 vim 都没有,在命令行下改东西只能用 vi,十分的不方便(没有高亮)。
由于没有管理员权限,用 apt 安装肯定是不用想的,只能尝试源码编译安装了。
尝试编译
首先从 vim 的官网或者 GitHub 下载源码,截至本文发布官网最新版本是 8.1
1 | # 下载源码 |
解压后我们进入源码文件夹执行 ./configure
尝试生成 Makefile 文件。这里需要注意的是,vim 默认将最后的编译产物放在 /usr/local
下(可以执行 ./configure --help
查看),而我们没有管理员权限,无权操作该文件夹(一般普通用户只能操作自己用户目录下面的文件夹),所以需要手动指定一下安装目录。
1 | cd vim81 |
我们自然是没有那份能够一次性成功的运气,执行过程中遇到了如下报错:
1 | checking for tgetent()... configure: error: NOT FOUND! |
这个报错说的算是比较清楚了:没有找到终端库,让我们去安装一个。
根据这个报错说明,装 ncurses 肯定是可以的。一般遇到这种情况都是直接用 apt 去安装(有管理员权限的话,ubuntu 下执行 sudo apt install libncurses5-dev
即可安装),然而跟我们无法直接安装 vim 同样的原因:没有管理员权限,这个依赖库也只能靠编译安装了。
编译安装 ncurses
同样的首先需要下载源码,截至本文发布最新的版本是 6.1
1 | # 下载 |
同样的,执行 ./configure
的时候我们需要指定一个自己有操作权限的安装目录。
1 | cd ncurses-6.1 |
这次倒是一次成功没有遇到任何问题,接下来编译后安装就行了。
1 | make |
执行完之后可以在我们指定的安装目录下找到 bin、include、lib、share
几个文件夹。
重新尝试编译
在编译安装好 ncurses 之后我们回到 vim 源码所在的目录重新执行 ./configure
。需要注意的是,我们安装的 ncurses 不在标准目录下,所以在编译其他依赖 ncurses 的程序的时候需要手动指定一下相关文件所在的目录。
1 | ./configure --prefix=/home/km/opt/vim81 LDFLAGS=-L/home/km/opt/ncurses-6.1/lib CPPFLAGS=-I/home/km/opt/ncurses-6.1/include |
这次直接一路到底,没有出现任何报错,接下来编译后安装一下就可以啦。
1 | make |
在安装完之后可以在我们指定的安装目录下(我这里是 /home/km/opt/vim81
)找到 bin
和 share
两个目录,vim 的可执行文件就存放在 bin
目录下。
用绝对路径执行一下试试: /home/km/opt/vim81/bin/vim
,可以看到熟悉的界面就说明编译安装成功啦。
一些其他设置
每次都像上面那样用相对/绝对路径来运行 vim 无疑是很麻烦的,我们这里为编译出来的可执行文件设置一个 alias 以方便使用(将 vim 的可执行文件路径添加到 PATH 环境变量中也能实现同样地效果)
1 | # 编辑用户目录下的 .bashrc文件 |
保存文件后使用 source ~/.bashrc
激活设置,之后就可以在任何位置直接输入 vim
使用啦。
另外,在实际使用中发现这样自己编译出来的 vim 存在这篇文章:Debian9 下为 vim 启用鼠标复制粘贴 中提到的无法使用鼠标右键复制粘贴的问题(系统是 Ubuntu 18.04)。要解决这个问题也很简单,修改一下 vim 的用户配置文件即可(由于这样安装的 vim 只有自己一个账户能用,所以修改用户个人配置文件即可,那篇文章中修改的是 vim 的全局配置文件)。
1 | # 在当前用户目录下新建 vim 配置文件目录 |
保存文件并退出,再次使用 vim 时就会发现能够正常的使用鼠标右键来进行复制粘贴操作啦!
后记
在这样一顿操作编译安装好 vim 后的第二天,成功找当初给我分配服务器帐号的学长搞到了 sudo
权限,所以……可执行文件、源码啥的统统删掉!然后 sudo apt install vim
……(手动狗头)