apt-get
而这个步骤全要用户亲力亲为可能又有些麻烦,懒是科技发展的重要推动力。所以软件厂商自己编译好了很多二进制文件,只要系统和环境对应,下载之后就能直接安装。

但是如果下载了很多软件我想要管理怎么办?

下载器中一个软件还需要依赖很多别的软件怎么办?

想要及时更新怎么办?

那么把自己下载的历史信息记录下来,软件也记录自己的版本信息和依赖包。

服务器也记录这些信息,这就是软件管理器了。

redhat主要是rpm和更高级的yum,debian主要是dpkg和更高级的apt。

源和软件仓库实际上是一个意思,厂商将编译后的二进制文件和软件信息存放至服务器,用户需要安装软件时,包管理器自动分析本机和容器(repository)内的信息,下载需要的包并自动安装,安装后将新安装的软件信息存放至本地数据库。如果有前置软件没有安装,rpm和dpkg会提示安装失败,也可以强制安装,yum和apt会自动安装全部需要的依赖包。更新和卸载也同理。
这些源的位置记录在/etc/apt/sources.list,我们可以手动修改这些文件,但是修改重要系统配置前先备份是一个好习惯(sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup)。

apt-get相关目录

  • /var/lib/dpkg/available
    文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 ubunt 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.

  • /var/cache/apt/archives
    目录是在用 apt-get install 安装软件时,软件包的临时存放路径

  • /etc/apt/sources.list
    存放的是软件源站点

  • /var/lib/apt/lists
    使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录

安装位置

而我自己编译,自己手动安装软件的时候,喜欢将该文件的根目录放到/usr/local下,这样安装的好处是卸载方便,直接删除就基本完成了,而且不同的软件泾渭分明,不会说大家的文件混一起不好找。如果是那样的话,只能使用locate或者find之类的命令辅助查询了。

但是手动这样安装也有不好的地方,就是会导致man命令和一些二进制命令不能直接使用,这也是为什么我们安装完以后需要配置PATH的原因。

man命令同理,如果有需要可以在/etc/manpath.config文件中定义,这样就能查询该软件的man手册了。

apt-get update

sudo apt-get update 执行这条命令后计算机做了什么?
无论用户使用哪些手段配置APT软件源,只是修改了配置文件——/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本地主机知晓可以申请哪些资源。

用户可以使用“apt-get update”命令刷新软件源,建立更新软件包列表。在Ubuntu Linux中,“apt-get update”命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。 使用apt-get执行安装、更新操作时,都将依据这些索引文件,向软件源服务器申请资源。因此,在计算机设备空闲时,经常使用“apt-get update”命令刷新软件源,是一个好的习惯。

 apt-get install

sudo apt-get install XXX 后计算机做了什么?

使用“apt-get install”下载软件包大体分为4步:

  • 扫描本地存放的软件包更新列表(由“apt-get update”命令刷新更新列表,也就是/var/lib/apt/lists/),找到最新版本的软件包;
  • 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;
  • 从软件源所指 的镜像站点中,下载相关软件包,并存放在/var/cache/apt/archive;
  • 第四步,解压软件包,并自动完成应用程序的安装和配置。

apt-get upgrade

sudo apt-get upgrade 后计算机做了什么?

使用“apt-get install”命令能够安装或更新指定的软件包。而在Ubuntu Linux中,只需一条命令就可以轻松地将系统中的所有软件包一次性升级到最新版本,这个命令就是“apt-get upgrade”,它可以很方便的完成在相同版本号的发行版中更新软件包。

在依赖关系检查后,命令列出了目前所有需要升级的软件包,在得到用户确认后,便开始更新软件包的下载和安装。当然,apt- get upgrade命令会在最后以合理的次序,安装本次更新的软件包。系统更新需要用户等待一段时间。

最新文章

  1. Restful API
  2. ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程
  3. ES5和ES6中的继承 图解
  4. Python 3 —— 控制语句
  5. 屏蔽Enter触发的事件
  6. 为什么重新设计 ASP.NET?
  7. MIT 2012 分布式课程基础源码解析-底层通讯实现
  8. delete table 和 truncate table
  9. Java实现折半(二分)插入排序
  10. jquery的事件绑定
  11. winserver2008下创建计划任务注意点
  12. StringWriter/PrintWriter在Java输出异常信息中的作用
  13. POJ2187(旋转卡壳)
  14. MySQL中索引的基础知识
  15. SGU180(树状数组,逆序对,离散)
  16. 第一章 python介绍、变量、数据类型、流程控制语句等
  17. scala的map操作
  18. RSA算法的C++string实现(模幂算法和欧几里得算法的使用)后附思路
  19. jquery学习总结12-24
  20. pythonj基础(五)元组和集合

热门文章

  1. jvm面试题 新生代和 老年代的区别
  2. ajax结合sweetalert实现删除按钮动态效果
  3. 《MySQL数据库》MySQL数据库安装(windows)
  4. JUC-7-lock接口
  5. Ansible配置批量推送公钥到被管理端
  6. Linux配置免密登陆
  7. vue项目简单菜单排序
  8. echart的legend不显示问题
  9. 错题本:ConstraintLayout 不能正常显示
  10. html和css的基本功