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

时间:2022-01-27 23:18:10

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

从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数。对于这类人只能说可惜,还没有领略到linux的美好就过早放弃了。还有就是用着Linux还不错,但是因为熟悉了在个人电脑上使用,有着各种权限。突然发现工作的时候只能使用普通账户,许多sudo命令都不能再使用,然后各种不适应和各种纠结。本文主要面向对象是第二类人群,简要的介绍在没有root权限的情形下良好的使用Linux来工作。


windows毫无疑问是PC操作系统的王者,许多人都非常熟悉。当然随着高富帅和土豪的普及,Mac OS的份额正在加重。无论是windows还是Mac OS,用户接触的都是图形界面(GUI)。转向Linux之后,大部分会优先使用带有图形界面的系统作为过渡。比如我最开始使用的就是Ubuntu,折腾熟悉了之后才慢慢转向RHEL和CentOS。有许多优秀的Linux桌面图形发行版,如Ubuntu,fedora,opensuse等,图形界面华美,提供了类似的桌面体验,可以给windows用户很好的过渡。这些Linux系统一般都是开源且可免费使用,如果需要支持服务可能要付费。

这类图形界面操作系统一般安装在个人电脑上,用户都能轻易拿到所有权限(切换到root用户即可)。这诚然是让用户从GUI(Graphical User Interface)转向CLI(Command Line Interface)的一个很好的开始,但是如果仅限于这种形式将会在后续的非root用户的日常使用上带来很大的困惑。windows上安装软件那是相当的傻瓜,点击鼠标一直next就OK。稍微高级一点的用户可能会看看中间出现的选项,然后做一些自定义。小白用户一般不会看,一路next下去,在这个过程中安装了其他软件也不知道。当有人(一般是女生)告诉你开机电脑就失去响应,你过去一看电脑上瑞星,360,金山毒霸,腾讯安全管家等各种软件都安装了,对于这种情形你应该能过给予理解。对于这种情形,我只能默默的在安全模式下把这些软件删了,然后表示系统太久没清理,多喝点热水重启一下就好了。

嗯,现在回到Linux安装软件上来。Linux刚入门的用户能够使用命令行安装软件是一个很大的进步。但是由于使用的是易用的Linux桌面发行版,并且有着所有的权限,所以一般人安装软件提示权限不够的时候二话不说立马切换到root模式,然后一切问题就OK了。想当年我在Ubuntu下那也是毫不犹豫直接sudo过去,权限什么都是浮云了。

另外就是安装形式问题,Ubuntu,opensuse,debian这类的系统提供了软件仓库,里面有直接编译好的软件包可用。要安装g++?没问题!sudo apt-get install g++,两分钟见效,效果杠杠的。依赖问题自动帮你解决了,至于版本估计就不再考虑范围之内,能用才是王道!话说当年我也这样使用Linux好多年。这么看来,Linux安装软件也不是那么难的嘛,安装完之后直接敲命令就可以运行了。

但是不是所有的软件都是能在软件仓库里找到的。难免有些软件是别人写的,给出的是源代码。这种情形下需要下载下来,解压(对很多人也是一个难题,不能点右键直接解压!)之后,按照里面说make && make install就可以了。如果碰到权限问题,咱有root权限咱怕谁啊?如果稍微高级一点的,可能还需要在make之前执行./configure,这个也还是很简单吗,一切都没问题的。虽然暂时不知道这几句代表了什么,但是只要程序没有错误,依赖的软件或者包都有,事情进展还是很顺利的。

首先需要解释一下程序是怎样运行的。在Linux下,用户在终端下输入一个命令,比如ls,这个命令是怎样被执行的呢?大致流程为:在当前用户的path路径文件夹下查找名为ls的可执行文件名,如果找到,则执行ls文件;如果找不到,则提示未安装或者找不到。这里很重要的就是path路径的内容,如果没有指定路径,则会在path路径里寻找。可以echo $PATH看看里面的内容。在以冒号分割的文件夹下,你会发现你平时执行的程序都在。所以要执行一个程序,首先要保证这个文件存在,然后:1.如果告诉了程序的路径,系统会到指定目录下寻找该程序并执行,如 ./helloworld 就是执行当前目录下的helloworld程序;2.如果没有指明路径,则需要保证需要执行的程序在path变量里面的任意一个目录下。在windows上也是同样的,不过windows一般是以鼠标点击方式,因而关注的人很少。在任意一个快捷方式上点右键,属性里面有个“目标”,指明的就是该程序的位置(一般给出的都是绝对位置)。

接着要说明的是如果不是root用户,会拥有哪些权限。对任意一个目录,可以使用ls -l查看对其的权限。会看到(d|-)rwxrwxrwx这样的权限说明,其中d代表这是一个目录,-则表示是文件,rwx分别对应读写和执行。一般的目录都有r和x权限,正常情况下非root用户只对 主目录和/tmp创建的目录有写的权限。当然/tmp指明了其属性,里面都应该只能放临时性的东西,重要的东西都不应该放里面,说不定什么时候就被清走了,或者系统一重启就清除了。综上所述:用户可以执行很多目录下的程序,但是其工作目录(一般程序都有输出)应该只限于用户的家目录。

再回过头来看为什么安装软件一般都需要root权限。软件默认的安装路径是 /usr/bin,普通用户对这个目录是没有写权限的。安装的时候需要将文件copy到该目录下,所以会提示无权限而操作失败。如果不使用root权限,只能而且应该将软件安装在自己的目录下。为了方便,可以将执行程序所在目录加入到path环境变量里。如果不更新path变量,则运行程序的时候需要指明路径。


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

1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码。

2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可

3. 切换到解压后的目录,运行 ./configure。其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/path/to/bin, 对于一些依赖库,可能还需要使用 ./configure  –prefix=xxx –with-xx-dir=xxx这种形式。

4. 接着是编译源代码和安装软件: make &&  make install。这两条命令可以分开来用,因为编译的时候可以指定参数 -j来并行编译,这样能够加快编译进度。。

5. 更新path路径。使用export PATH=/path/to/bin:$PATH,这句话在shell窗口运行只在本次会话中有效,可以将其写到.bashrc或者.bash_profile里面使其对当前用户有效。

6.如果安装的是动态链接库,则需要更新动态链接库路径: export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH,同样是export命令,最好将其写在.bashrc这类文件下面以便登陆的时候自动调用。

示例可参考: http://www.tlanyan.me/install-apache2-php-mysql-with-none-root/

本文内容遵从CC版权协议, 可以随意转载, 文章原始出处和作者信息及版权声明网址:

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

Linux下非root用户如何安装软件的更多相关文章

  1. [转载]Linux下非root用户如何安装软件

    [转载]Linux下非root用户如何安装软件 来源:https://tlanyan.me/work-with-linux-without-root-permission/ 这是本人遇到的实际问题,之 ...

  2. Linux 下非root用户使用docker

    Linux 下非root用户使用docker 通常我们使用linux系统的时候,最好是不要直接使用root账号,但是使用Docker的时候,默认又是不能使用非root用户的,关于原因,官方说法如下: ...

  3. Linux 下非 root 用户安装 theano(配置 GPU)

    非 root 用户,安装 Python 第三方的包,尤其像 theano,存在大量的依赖项,存在的主要问题,是安装各个包时的权限问题.所幸,存在这样一个集成工具,叫 anaconda,其已经内置了许多 ...

  4. linux下非root用户的sudo问题

    linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇 ...

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

    1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...

  6. Linux下非root用户运行Tomcat

    PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...

  7. linux下非root用户怎样改动root权限的文件

           在linux下会出现把一些配置文件參数配错.rootpassword忘记等导致系统无法启动或进入root的窘迫境界.本文以redhat  enterprise linux server ...

  8. linux下非root用户获得/dev/ttyUSB0的读写权限

    首先查看/dev/ttyUSB0的权限属性,在终端输入: ll /dev/ttyUSB0 teashaw@xiaopeiqing.com:~$ ll /dev/ttyUSB0 crw-rw—- 1 r ...

  9. linux下无root源码安装软件

    先进入源码文件夹下指定安装路径 ./configure --prefix=/public/home/ztu/usr/samtools 编译 make 安装 make install 写入环境变量 vi ...

随机推荐

  1. HUSTOJ搭建实录

    要做一个MOOC平台,要求有在线编程功能,想偷个懒,于是用了HUSTOJ...... 系统:Ubuntu14.04 Kylin 步骤: 一.搭建服务器和相应环境 apache2: sudo apt-g ...

  2. C++查询网站

    1.C++外文api查询 http://www.cplusplus.com/ 2.https://isocpp.org/ 3.Juce学习 http://www.thinksaas.cn/favori ...

  3. Linux TOP命令详解

    先来看一下执行以后的结果: 各项数值的含义如下: 第一行是任务队列信息. :: 当前时间 up days,: 系统运行时间,格式为天,时:分 user 当前登录用户数 load average: 0. ...

  4. The Name/Origin of Country names

    1.Puerto Rico (Spanish for "Rich Port"/富裕的港口/富港 ) 2.HongKong(Chinese for "香港")

  5. [LeetCode] Combinations [38]

    称号 Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exa ...

  6. C# 字典 Dictionary

    原文地址http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html  侵删

  7. C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化

    1.显示释放资源需继承接口IDisposable 什么是资源:C#中每一个类型都代表一种资源,而资源又分为以下两类. 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源 ...

  8. IntelliJ IDEA 中文乱码配置

    总共有下面几种乱码的解决方案: 工程乱码 执行main函数时,控制台乱码 运行tomcat时,控制台乱码 PS: 如果下面方案不生效时,打开IDEA安装目录找到 idea.exe.vmoptions( ...

  9. 【转】XP系统远程桌面连接2012R2提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证

    一.背景 因对方客户的服务器是内网的,需要操作更新服务器的数据库表信息,因此远程对方客户办公司的电脑远程服务器:但是在远程桌面连接出现问题. 二.错误问题 错误问题:“远程计算机需要网络级别身份验证, ...

  10. 如何安装和配置RabbitMQ(转载)

    如何安装和配置RabbitMQ 今天开始一个小小的练习,学习一下安装和配置RabbitMQ,为什么要学它,因为WCF可以完全兼容和使用RabbitMQ了.我们新的大数据系统需要使用消息队列,所以就开始 ...