热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ubuntu无sudo权限以及非root的用户,用apt安装软件

1、apt-get简介在Ubuntu系统中,经常要用到apt-getinstallXXX指令来安装软件,由于常常需要root权限来操作,

1、apt-get简介

在Ubuntu系统中,经常要用到apt-get install XXX指令来安装软件,由于常常需要root权限来操作,所以搭配sudo食用口感更佳,apt-get指令对于安装、卸载、升级软件提供一条龙服务,对比于源码安装,实在是业界良心。

1.1 源码安装

源码安装的流程一般是三部曲:

./configure
make
make install

  • ./configure是为了检测目标安装平台的特征,并且检查依赖的软件包是否可用或者是否缺少依赖软件包,configure事实上是个脚本,最终的目的是生成Makefile。
  • 如果第一条指令没有报错,会生成一个Makefile,make指令就是编译这个源码包
  • 正常编译完之后如果没有报错,就生成了可执行文件,make install指令就是将可执行文件放到指定目录并配置环境变量,允许我们在任何目录下使用这个软件。

1.1.1 源码安装的优点


  • 对于普通用户而言,实在是想不到什么优点…
  • 对于软件开发者而言,可以拿到源码阅读学习并修改,geek一个软件简直比找女朋友还好玩!同时也可以在一定程度上防止黑客的攻击(你知道这个版本的漏洞,但是老夫已经把它修复了!!!)

1.1.2 源码安装的缺点

其实三部曲的安装还是不那么麻烦的,前提是不报错!一旦报错,对于linux初学者而言,那也真是丈二摸不着头脑,然后各种百度各种google,按照各种江湖术士的方法来整,结果把系统整崩的情况数不胜数,即使当时能用,但是也有可能在以后的使用中出现莫名其妙问题的隐患,让我们来看看这些问题都是啥样的:

  • ./configure报错: 如果检查到缺少依赖或者依赖文件的版本不匹配呢?一般出现这种情况,就自己解决吧,一般的做法是,升级软件包或者安装缺少的依赖软件包,运气好的话,解决报错的依赖问题就行了,运气不好的话,A软件包依赖B,B又依赖A…这是比较常见的linux劝退方式,从入门到放弃!
  • make报错,由于源码包的形式多是个人用户更新维护的,所以可能出现一些平台没测试到位或者在特定平台上程序出现bug的情况,这种情况就没办法了,如果你有能力debug那当然另说
  • make install 报错,这个指令报错的形式一般仅仅是没有权限,加上sudo就行。但是同时因为源码包多由个人维护,也经常可能出现造成系统垃圾的情况,又或者你需要卸载的时候 make uninstall指令仅仅卸载可执行文件,其他配置文件和依赖文件不作处理。

2、apt-get指令管理安装包


2.1 常用操作

在上面说了那么多源码安装的缺点,聪明的盆友就要猜我我将要引出今天的主角:apt-get包管理应用软件,由apt-get管理的软件包可以轻松做到一键安装卸载。废话不多说,我们先看看它的常用用法:

sudo apt-get install XXX
sudo apt-get install -y XXX
sudo apt-get install -q XXX
sudo apt-get remove XXX
sudo apt-get purge XXX
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade

  • apt-get install XXX
    一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。
  • sudo apt-get install -y XXX
    这里主要讲的就是-y选项,添加这个选项就相当于不需要重复地确认安装
  • sudo apt-get install -q XXX
    即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。
  • sudo apt-get remove XXX
    既然有安装就会有卸载,remove指令就是卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件
  • sudo apt-get purge XXX
    卸载指令,同时卸载相应的配置文件
  • sudo apt-get autoremove
    关于这条指令,官方解释是这样的:autoremove is used to remove packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed
    在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包。
    看起来非常完美的指令,但是博主建议慎用!!这条指令很可能将你要用的依赖包同时卸载,有时候你的安装包并没有通过apt-get指令来管理,apt-get管理工具不会加入这些包的信息,所以在检索包的依赖关系时可能出问题.
    又或者是另一种情况:举个例子:在安装某个包时,这个包依赖git,但是git并非你主动下载的,而是作为依赖下载的,包安装完之后系统可能就会提示git作为依赖不再需要使用,它并不知道你是不是正在使用这个软件包。
  • apt-get update
    将所有包的来源更新,也就是提取最新的包信息,这一条我们经常使用到。
  • apt-get upgrade
    这条指令一般执行在apt-get update之后,它的作用是将系统中旧版本的包升级成最新的,慎用!

因为在linux下,由于大部分为非商业软件,所以稳定性并没有得到很好的验证,升级到最新版本需要十分慎重!

2.2 apt-get执行原理


2、ubuntu无sudo权限以及非root的用户,用apt安装软件

一般来说使用apt安装软件,必须要有root权限,因为apt安装时需要写/usr/bin、/usr/share等目录,而这些目录只有root用户(或有sudo权限)才有写入权限的,所以没有sudo权限的普通用户,要用apt安装软件的话,就只能以源码安装方式来安装了,具体操作如下:

apt source package # package是要安装的软件名,包名和sudo apt instal package 中的一样
cd package # 进入下载的package目录,这个目录不一定就是package,名字中可能有版本号# 使用--prefix是最关键的,它是用于指定安装目录的,如果没有它就可能要安装到/usr下了,此时需要sudo
# 必须是绝对路径,不能用~代表home,即必须以/开头,路径可以用双引号括起来
./configure --prefix=/path/to/install # 该目录可以是不存在的,会自动创建make -j && make install # -j选项是make并行加速,&&是指只有前一条命令成功后才运行后一条

注意: 执行第一条命令可能出现如下错误:

E: You must put some 'source' URIs in your sources.list

这是因为你的/etc/apt/source.list中将所有deb-src的条目给注释掉了,所以apt命令找不到源码安装的地址,如果出现此错误并且你有sudo权限,则将所有deb-src前面的#去掉即可,但是很有可能你没有sudo权限,这个时候就需要自己手动去下载软件的源码,然后解压,然后从上面的第二条命令开始执行就可以了。

最后: 软件安装完成后,shell解释器可能找不到该软件,此时需要将该软件安装目录添加到PATH中,并且需要注意的是,必须是添加该软件(命令)的直接父目录,比如说我刚才的/path/to/install是写的$HOME/local,则安装好后一般会在local目录下生成bin目录,此时刚才安装好的软件就是在~/local/bin目录里,所以需要将 ~/local/bin添加到PATH中,而不是 ~/local。

# 添加bin目录到PATH中
vim ~/.bashrc # 打开shell的配置文件.bashrc# 按shift+G,再按o,然后输入下面的命令
export PATH=$PATH:~/local/bin # 输入后,按ESC,然后按shift ZZ 即可保存并退出# 使刚才的修改生效即可使用了
source ~/.bahsrc

如果没有vim编辑器,或者不太会使用vim,可以将上面的命令中的vim替换成gedit,就可以使用gedit来修改bashrc文件了。


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
author-avatar
jawshan212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有