linux非root用户下载软件失败
发布网友
发布时间:2022-12-26 18:08
我来回答
共1个回答
热心网友
时间:2023-10-16 16:25
Linux下的软件安装
Linux下的软件安装,实质上有如下四种,“正规”程度依次递减:
使用标准的yum/apt/yast包管理程序安装
比如:sudo apt-get install g++/sudo yum install -y gcc-c++
使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装
直接解压软件开发者的tar.gz包
自源码编译。有些软件是别人自行写的,给的源代码,也没有提交到仓库,apt-get/yum/dnf的安装方式就行不通。这时需要先下载源代码,解压(不能点右键解压,对不少人是个难题),然后按照说明文档make && make install。不管是从软件仓库,还是手工编译源代码的方式,对有root权限的用户问题都不大(问题常出现在依赖)
非root用户安装
在linux系统下,软件包安装一般需要root权限,因为都是安装到绝对路径,需要往系统文件夹写文件。但是源码编译就看情况了,适合咱这种没有root权限的孩子……下面是Linux下非root用户安装软件的一般流程:
获取源代码,常用wget方式直接从url(一般都有官网,去官网看看啦)下载
解压源代码安装包,多为gzip过的tar包,一般使用tar -zxvf xxx.tar.gz即可
切换到解压后的目录,运行 ./configure。./configure –help可以列出配置项,非root用户最重要的配置项是安装目录prefix,例如 ./configure –prefix=/path/to/bin
编译源代码并复制可执行文件到指定的安装目录: 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中文件权限查看
对任意一个文件(Linux下一切皆文件,包括目录、CPU内存等设备),可以使用ls -lh查看其权限。命令的每行首列输出类似(d|-)rwxrwxrwx,这就是文件的权限标志。
第一个字母是文件类型,d表示目录,-表示普通文件,s套接字,l链接文件,等等
接下来有9列,每3列一组,总共3组,对应文件属主(owner)、属主组员(group)和其他用户(other)对该文件的权限。每组的标志类似rwx。rwx是读(read),写(write)和执行(execute)三种权限的缩写。如果没有某种权限,对应标志位是-
例如某个文件foo.txt,只有属主可读写,其权限标志就是:-rw-------。注意,非root用户下,文件夹必须要有执行(x)权限才能进入。
root用户是bug,电脑上所有的文件都是它的,权限位设置对其无效。非root用户默认 只对自己的home目录有完全的控制权限,对/tmp目录有读写的权限。/tmp目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有root用户和属主有写入的权限。
了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin 或 /usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到root模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非root用户,(几乎)只能安装软件到自己的家目录下。