# Linux非root用户安装一些包
最近常用公用服务器运行代码,作为强迫症重度患者,首先配置工作环境,需要很多包,但没权限。因此,小探究了下,目前主要知道如下两种方案,一些场景下需结合使用。
# 编译安装
如果会编译安装,那么无需root权限也可安装对应的软件包
常用操作流程:
git clone xxx.git [or wget xxx.tar.gz & tar xvf xxx.tar.gz]
cd xxx
./configure --prefix=<path>
make
make install
下面是一些示例:
非特权用户安装zsh和Oh-My-Zsh (opens new window)
Announcing ncurses 6.2 (opens new window)
# Debian包提取(只适用于Debian/Ubuntu)
有时也可以通过apt-get来下载debian仓库里的预编译二进制包,然后解压,放进对应环境变量中
apt-get download <pkg-name> # 获取预编译的二进制包
dpkg -x package.deb <pkg_dir> # 解压获取的包
# 实践
安装tmuxv3.2版本并用以覆盖服务器中的低版本2.x:
https://github.com/tmux/tmux (opens new window) 中列出了编译前需要的依赖
- libevent 2.x
- nucrses
apt-get download libevent-dev获取仓库中的预编译包libevent-dev_2.0.21-stable-3_amd64.debdpkg -x libevent-dev_2.0.21-stable-3_amd64.deb ~/.apps/libevent_dev终端添加环境变量
#gcc找到头文件的路径 C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/chenzhongming/.local/include export C_INCLUDE_PATH # # #g++找到头文件的路径 # CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib # export CPLUS_INCLUDE_PATH # # #gcc和g++在编译的链接(link)阶段查找库文件的目录列表 LIBRARY_PATH=$LIBRARY_PATH:/home/chenzhongming/.local/lib export LIBRARY_PATH这样编译时,编译器就能按照环境变量中的路径去寻找相关的头和库
此处参考:https://blog.csdn.net/liuxiao723846/article/details/97617681 (opens new window)
注:这里使用
libevent-dev,而不是libevent的原因是,前者提供了后者不带有的头文件等,更适用于编译有时还需要添加运行时动态库:
export LD_LIBRARY_PATH=$NCURSES_HOME/lib:$LD_LIBRARY_PATH./configure --prefix=/home/xxxx/.apps/mytmux然后make &make install将bin目录添加到path:
export PATH=/home/xxxx/.apps/mytmux/bin:$PATH注:为了覆盖自带的tmux,所以bin目录在
$PATH前。
# 参考
http://ijinjay.github.io/blog/2016-04/非特权用户安装zsh和Oh-My-Zsh.html (opens new window)
https://stickcui.github.io/2019/05/07/Linux下非root用户安装软件至本地/ (opens new window)
https://blog.csdn.net/liuxiao723846/article/details/97617681 (opens new window)