+
80
-

linux非root普通用户如何安装软件?

linux非root普通用户如何安装软件?我用yum install 提示:

You need to be root to perform this command.

网友回复

+
1
-

首先是软件一般从软件仓库中获取,即现在熟悉的应用市场;再次基本上用命令行安装软件,不是双击安装包(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用户安装软件的一般流程: 1、获取源代码,常用wget方式直接从url下载,ubuntu可以用apt-get source来获取仓库中软件源代码; 2、解压源代码安装包,多为gzip过的tar包,一般使用tar -zxvf xxx.tar.gz即可; 3、切换到解压后的目录,运行 ./configure。./configure –help可以列出配置项,非root用户最重要的配置项是安装目录prefix,例如 ./configure –prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 –with-xx-dir=xxx 的形式配置依赖库位置; 4、编译源代码并复制可执行文件到指定的安装目录: make && make install。这两条命令可以分开执行,make时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译GCC需要几个小时,开启并行编译后可缩短到十几分钟); 5、使用export PATH=/path/to/bin:$PATH更新PATH变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc或者.bash_profile中; 如果安装的是动态链接库,则需要更新动态链接库路径: export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc文件中,用户下次打开会话时自动执行。
我知道答案,我要回答