linux下非root用户安装软件入门

转载 2018年04月17日 19:00:39

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处:

https://www.tlanyan.me/work-with-linux-without-root-permission

从windows转移到Linux的用户最开始有各种不适,因使用习惯水土不服而放弃Linux的不在少数。还没有领略到Linux的美好就退却,对于这类人只能说可惜。还有部分人在个人电脑上用Linux,总体感觉还不错;工作时只能使用无特权的普通账户,会遇到“没root权限 -> 出现问题 -> 找答案 -> 提示用root”的死循环,不免感到沮丧和抓狂。本文主要面向对象第二类人,简要介绍没有root权限时,如何安装所需软件推动正常工作。

推荐阅读:程序的运行流程

===============分割线======================

许多人都非常熟悉Windows,毫无疑问是目前桌面操作系统的王者。随着高富帅和土豪种群的增长,Mac OS的份额也逐步提升。无论是windows还是Mac OS,用户接触的都是图形界面(Graphical User Interface,GUI)。转向Linux之后,大部分人会优先使用带图形界面的系统作为过渡。比如本人最开始使用Ubuntu,熟悉后才慢慢转向CentOS和Fedora。许多优秀的Linux桌面图形发行版,如Debian/Ubuntu/Mint,Fedora,OpenSUSE等,图形界面华美,桌面体验良好,可以给Windows用户很好的过渡。这些Linux系统基本都开源且可免费使用(支持服务可能要付费),是Linux入门级操作系统的首选。

Windows上安装软件相当傻瓜化,下载exe后双击运行,点击鼠标一直next就完事。安装过程中,小白用户一般不会看引导页面种的内容(估计字都认识,连在一块不知道什么意思),附带安装其他软件或者对系统做了额外改动也毫不知情。当有人(一般是女生)说电脑开机后反应很慢/失去响应,过去一看电脑上瑞星、360、金山毒霸、腾讯安全管家等各种软件都在右下角托盘刷着存在感。对于这种情形,只能表示理解,进入安全模式把不用的软件都卸载掉,电脑基本上就正常了。

回到Linux安装软件,情况稍有不同。首先是软件一般从软件仓库中获取,即现在熟悉的应用市场;再次基本上用命令行安装软件,不是双击安装包(Mac OS可以这样做)。熟悉命令行安装软件,是迈向Linux世界基础的一步。apt/yum/dnf等软件包管理工具,会自动解决依赖问题,让用户一行命令就获取到所需软件。例如安装g++,执行sudo apt-get install g++/sudo yum install -y gcc-c++即可。

有些软件是别人自行写的,给的源代码,也没有提交到仓库,apt-get/yum/dnf的安装方式就行不通。这时需要先下载源代码,解压(不能点右键解压,对不少人是个难题),然后按照说明文档make && make install。不管是从软件仓库,还是手工编译源代码的方式,对有root权限的用户问题都不大(问题常出现在依赖)。倒霉的是没有root权限,还不得不安装软件才能正常工作的普通账号。对这些普通账号,需要额外的软件或依赖库时,该如何自救解脱?

问题在权限,有必要先了解一下Linux中文件和用户的权限。对任意一个文件(Linux下一切皆文件,包括目录、CPU内存等设备),可以使用ls -l查看其权限。命令的每行首列输出类似(d|-)rwxrwxrwx,这就是文件的权限标志。第一个字母是文件类型,d表示目录,-表示普通文件,s套接字,l链接文件,等等;接下来有9列,每3列一组,总共3组,对应文件属主(owner)、属主组员(group)和其他用户(other)对该文件的权限。每组的标志类似rwx。rwx是读(read),写(write)和执行(execute)三种权限的缩写。如果没有某种权限,对应标志位是-。例如某个文件foo.txt,只有属主可读写,其权限标志就是:-rw——-。注意,非root用户下,文件夹必须要有执行(x)权限才能进入。

再看用户的权限。root用户是bug,电脑上所有的文件都是它的,权限位设置对其无效。非root用户默认 只对家目录有完全的控制权限,对/tmp目录有读写的权限。/tmp目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有root用户和属主有写入的权限。

了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin 或 /usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到root模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非root用户,(几乎)只能安装软件到家目录下。

下面是Linux下非root用户安装软件的一般流程:

获取源代码,常用wget方式直接从url下载,ubuntu可以用apt-get source来获取仓库中软件源代码;

解压源代码安装包,多为gzip过的tar包,一般使用tar -zxvf xxx.tar.gz即可;

切换到解压后的目录,运行 ./configure。./configure –help可以列出配置项,非root用户最重要的配置项是安装目录prefix,例如 ./configure –prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 –with-xx-dir=xxx 的形式配置依赖库位置;

编译源代码并复制可执行文件到指定的安装目录: make && make install。这两条命令可以分开执行,make时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译GCC需要几个小时,开启并行编译后可缩短到十几分钟);

使用export PATH=/path/to/bin:$PATH更新PATH变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc或者.bash_profile中;

如果安装的是动态链接库,则需要更新动态链接库路径: export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc文件中,用户下次打开会话时自动执行。

示例可参考: Linux下非root用户安装Apache、PHP和MySQL

后记
Nodejs的出现改变了JavaScript写程序的方式,为前后端开发注入了新鲜的血液。Node开发人员可以使用npm(Node默认的包管理器)方便的安装依赖包和可执行程序。确实,非root人员可以用npm安装软件,但并不影响上文内容的正确性。非root用户,安装依赖包或程序时,不能使用-g选项,默认安装到家目录或项目的node_modules目录下,依然受权限控制。brew、composer等包管理器同理。

非root用户安装软件

参考Stack Overflow给出解决方案,适用于python2.7, python3.x安装pythonpython版本库https://www.python.org/ftp/python/,此处...
  • hello_SW
  • hello_SW
  • 2018-01-08 11:39:25
  • 145

Linux下非root用户如何安装软件

Ubuntu,opensuse,debian这类的系统提供了软件仓库,里面有直接编译好的软件包可用。要安装g++?没问题!sudo apt-get install g++,两分钟见效,效果杠杠的。依赖...
  • LIYUAN123ZHOUHUI
  • LIYUAN123ZHOUHUI
  • 2017-05-27 14:56:43
  • 4218

非root权限安装软件

参考:http://superuser.com/questions/162560/how-to-install-vim-on-linux-when-i-dont-have-root-permissio...
  • wusuopuBUPT
  • wusuopuBUPT
  • 2015-10-29 21:44:41
  • 829

centos非root用户(普通用户)安装rpm包

在centos下,普通用户是无法使用yum进行安装软件的。不过我们可以使用别的方法来安装centos仓库里大量经过测试的好软件 第一步 从仓库里面下载rpm包,比如安装ctags ,通过命令...
  • sdcxyz
  • sdcxyz
  • 2015-07-28 00:14:20
  • 10385

linux 非root用户安装 jdk 和 tomcat

现在创建一个用户 sgmm,并在其用户目录里面安装 jdk和tomcat,过程如下。 一、增加sgmm 用户 sgmm 组...
  • wuyigong111
  • wuyigong111
  • 2013-12-19 10:21:41
  • 19837

linux 忘记非root用户密码

root登陆:                passwd  user  new pa s s w
  • abc19900828
  • abc19900828
  • 2014-10-13 23:07:10
  • 624

linux无管理员权限软件安装(opencv为例)

本文主要以opencv为例,介绍在没有管理员权限情况下,进行opencv在自己账户下的安装与环境变量配置。...
  • u012905422
  • u012905422
  • 2016-09-24 22:03:37
  • 2375

非root用户 如何创建linux 服务的定时任务

rontab -e  00 06 * * * /home/tjhcc/restart_all.sh
  • nianqingren200
  • nianqingren200
  • 2014-08-19 17:17:52
  • 988

【Linux】Linux软件安装方法小结(附:rpm详解)

tar -zxvf XXX .tar.gz  然后进到解压出来的文件夹,root下  ./configure make  make install #################...
  • Joanna_yan
  • Joanna_yan
  • 2015-09-14 15:51:46
  • 1849

linux下root用户以及非root用户忘记密码的解决方案

虚拟机:redhat 1、重启系统 2、重启之后 Linux 在终端状态下回有一连串的环境检查,按下E 3.  按下e后会出现一个彩色的引导,出现下面三个选择    kernel /x...
  • luhaiyan516
  • luhaiyan516
  • 2017-08-04 13:30:06
  • 216
收藏助手
不良信息举报
您举报文章:linux下非root用户安装软件入门
举报原因:
原因补充:

(最多只允许输入30个字)