在日常使用linux服务器的时候, 难免会遇到非root用户但需要安装软件的情况. 这时就需要我们使用源码安装了.
这篇文章将大概流程介绍的挺好: https://blog.csdn.net/bobobe/article/details/109144385
但细节部分仍可以进行补充.
下面我将以源码安装unzip
软件作为模板来介绍非root用户如何使用源码安装软件.
基本上所有的软件源码安装包都可以在清华镜像(https://mirrors.tuna.tsinghua.edu.cn/
)中找到
清华镜像中软件包的寻找方法:
这次要找linux中Ubuntu系统的unzip软件
Ubuntu
目录,鼠标放上面可以看到介绍(流行的软件安装包仓库),/pool
目录下的/main
目录中寻找即可./u
目录下找即可./u
目录下可以看到了很多的软件包了, 直接网页内搜索unzip(当然一个一个找也行)就能找到unzip软件包所在的目录(找不到的话就另行他法吧, 毕竟这里只是常见的软件包).orig
的应该就是源版本了)下载的话, 直接windows下载然后发送到远程服务器, 或者通过wget filesrc
命令直接在linux中下载也可以.
将下载下来的软件源码安装包解压出来即可
通过tar -zxvf filename
即可解压
要将默认的root安装目录修改为当前非root安装目录
首先找到linux的makefile文件,
/unix
目录下的Makefile文件(看这些目录名就明显猜到含义了,这里有macos, windows, linux各种操作系统的Makefile文件)/unix
目录下的Makefile
文件复制出来即可然后就是修改Makefile文件,
'/'+'关键字'
的方式可以在vim打开的文件中搜索关键字, 回车后通过N
来遍历搜索结果PATH
, DIR
等可以都试试, 这里直接通过DIR
就可以找到路径了manext = 1
prefix = /home/这里填非root用户的用户名/usr/local
# prefix = /usr/local
BINDIR = $(prefix)/bin# where to install executables
MANDIR = $(prefix)/man/man$(manext)# where to install man pages
INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/unzip$E $(BINDIR)/unzipsfx$E \
$(BINDIR)/zipgrep$E $(BINDIR)/zipinfo$E
INSTALLEDMAN = $(MANDIR)/funzip.$(manext) $(MANDIR)/unzip.$(manext) \
$(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipgrep.$(manext) \
$(MANDIR)/zipinfo.$(manext)
其实还是比较清楚的, prefix参数就是软件要安装的目录了, 后面的是对bin, man等目录的定义, 所以我们只需要修改prefix参数的内容即可, 为了尽量保持和root用户的参数对齐, 我就在/usr/local
前面添加了当前用户/home/当前用户的用户名
, 这样, 该软件就会安装在当前目录下的~/usr/local
目录下了.
wq
保存vim的修改即可.
修改完的Makefile可以让我们将软件安装在当前用户下的目录了, 执行make && make install
即可进行安装.
只要没报错就算安装成功.
这时候我们已经安装好软件了, 可以直接在安装目录中使用了(~/usr/local/bin
), 但想要方便的使用还是需要将软件添加到环境变量中的(毕竟, 你也不想你每次用软件的时候都敲一大堆目录的事情被别人知道吧~~)
打开~/.bashrc
文件, 在下面追加export PATH="~/usr/local/bin:$PATH"
, 这里记得用双引号, 单引号无法引用PATH.
wq
保存后通过命令激活该配置文件即可source ~/.bashrc
在终端中输入unzip
发现可以使用了, 软件安装成功