linux普通用户编译,Linux下非root用户安装软件至本地

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

在团队或小组中,免不了会多人使用同一台服务器。由于是多人使用,机器的环境肯定是预先配置好了最基本的软件或工具,但对于单个用户来讲,这些工具很可能远远不足以满足要求。此时,便需要非root用户自己根据所需去安装个性化的应用或工具。有些工具可能比较好装,但是大部分软件或工具的安装,均需要管理员权限。此时,便需要一些技巧去避开这些权限的要求。

2. Python 工具包

本章节有个前提就是不考虑Anaconda。

Python 的工具包分为两类:一类是python-dev,python-pip等管理员已经安装好了的,另一类便是缺少这些必要的包的。前者好理解,这些都是python基础环境所必需的,管理员一般都会安装好。但是,不排除一些管理员默认只配置python2,对于python3不管不顾(系统是 Ubuntu 16.04 及以下)。

¶2.1 依赖包齐全

这种情况最好解决,加一个--user全解决:1pip3 install pkg --user

¶2.2 依赖包缺失

首先,安装pip:1

2wget https://bootstrap.pypa.io/get-pip.py

python3 get-pip.py --user

搞定。

以 Ubuntu 16.04 为例,在包管理网站,下载python-dev的deb包(注意不止一个,相关的都下载下来)。然后通过 dpkg 命令将这些 deb 文件解包:1dpkg -x package.deb

最后,在 路径下,将解包好的程序或文件组织好,mv 到 $HOME/.local 文件夹下即可。

注意,对于wheel格式的python包安装同 2.1 介绍的一样。但是,对于一些源码编译的包可能会有问题。因为,有些包可能会用到 Python.h 之类的头文件,在源码的 setup.py 中(其实是 setuptools 默认的)这些头文件都是默认在根目录下的。因此,需要修改 setup.py 文件,添加这些头文件路径以及一些 lib 路径。

3. C/C++ 软件

¶3.1 源码编译

源码编译,咋都好说,按照官方的教程来就好,有些需要 configure 的,需要先执行 configure,记得配置 PREFIX 选在 $HOME/.local 即可。

有些可能是 CMake 的就更好设置了。

¶3.2 预编译的二进制包

对于预编译的二进制包,不同的 Linux 发行版有着不同的包管理工具。

¶3.2.1 Ubuntu

Ubuntu 的包管理工具为 apt,其可以在非 root 用户下下载制定的包,遗憾的是它不会像安装那样把所有依赖包都下载下来,需要手动的去下载所有依赖包。1apt-get download

下载完所有的 deb 包后,接下来的工作同 2.2 节提到的。

¶3.2.2 CentOS

CentOS 的包管理工具为 yum,其除了查询等操作外,其他的操作均需要管理员权限。因此,这里指望不上它。(可能是我太挫了。)

CentOS 的二进制预编译包为 apm 打包,因此可以效仿 deb 包那样,进行手动解包。此外,对于一些允许重定位(relocatable)的包还可以使用 apm 命令手动重定位安装,安装命令如下(本人不用 CentOS 尚未见过可重定位的包)1rpm -ivh --nodeps .rpm --prefix $HOME/.local

手动解包命令1rpm2cpio .rpm | cpio -idvm

4. 实战演练

这里的实战是在 CentOS 系统下安装 R 软件。源码编译这一关我是死活过不去 bzip2 这个依赖的 check,源码编译可参考

首先,确定 R 二进制包的位置1yum list R

得到的结果1

2可安装的软件包

R.x86_64 3.5.2-2.el6 epel

OK,有就好了,在清华镜像源里的 epel 源里面找到了对应的一些列包,下载后,首先尝试 apm 安装,失败,因为 R 不允许重定向安装位置。

尝试解包安装:1. 解包后,发现出现两个文件夹 `usr` 和 `etc`,其中,`usr/bin/R` 执行后报错,找不到 `/usr/lib64/R/etc/ldpaths`;

2. 将 `usr` 整体 `mv` 到 `$HOME/.local` 下;

3. 修改 `$HOME/.local/usr/bin/R` 文件中的 `R_HOME`, `R_HOME_DIR`等路径,改为现在的对应的本地路径;

4. 同理修改 `$HOME/.local/usr/lib64/R/bin/R` 文件;

5. 配置 `.bashrc` 文件,添加一行 `export PATH=$PATH:$HOME/.local/usr/bin`.

搞定,执行成功。

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值