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命令会在最后以合理的次序,安装本次更新的软件包。系统更新需要用户等待一段时间。

apt-get原理的更多相关文章

  1. APT工作原理

    两篇好的文章:http://blog.csdn.net/newjueqi/article/details/6679857 http://blog.csdn.net/buguyiqie/article/ ...

  2. ubuntu APT-GET工作原理

    转 http://kurenai.elastos.org/2013/05/02/ubuntu-apt-get%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86/   先介绍几个和 ...

  3. Linux学习笔记(一)----Ubuntu下的apt命令

    一.原理与目录 先介绍几个和apt-get相关的目录: /var/lib/dpkg/available文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其 ...

  4. AS 注解处理器 APT Processor MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 9-2 yum,dnf和apt

    yum, CentOS: yum, dnf YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 ...

  6. yum安装命令的使用方法

    yum安装常用软件的命令 #yum check-update #yum remove 软件包名 #yum install 软件包名 #yum update 软件包名 yum命令常见使用方法 yum - ...

  7. Android 查阅博客2_APT

    https://mp.weixin.qq.com/s/3zrAzOUGpovRRbuYnce3uw APT(Annotation Processing Tool) 即注解处理器,是一种注解处理工具,用 ...

  8. (转)Android性能优化——工具篇

    Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理.所谓工欲善其事必先利其器,本文首先来看 ...

  9. 【Linux】- apt-get命令

    apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载软件或操作系统. Advanced Package Tool,又名apt-g ...

  10. [旧][Android] ButterKnife 浅析

    备注 原发表于2016.05.08,资料已过时,仅作备份,谨慎参考 前言 自上星期写 Retrofit 写吐之后 ... 我问大队长能不能换个其他什么东西写,大队长就说了个单词 ButterKnife ...

随机推荐

  1. Vmare 无法打开内核设备“\\.\VMCIDev\VMX”: 系统找不到指定的文件。您在安装 VMware Workstation 后是否进行了重新引导?的解决办法

    1.使用管理员省份运行cmd:net start vmx86(切记是要用管理员身份),启动服务成功问题即可解决. 2.若1操作中启动失败,则到Vmare安装目录下搜索vmx86.sys文件,并拷贝到C ...

  2. 从多核CPU Cache一致性的应用到分布式系统一致性的概念迁移

    概述 现代多核CPU的cache模型基本都跟下图1所示一样,L1 L2 cache是每个核独占的,只有L3是共享的,当多个cpu读.写同一个变量时,就需要在多个cpu的cache之间同步数据,跟分布式 ...

  3. DS-5获取License

    1.点击Eclipse for DS-5,打开DS-5,弹出workspace选择窗口   2.点击OK,打开DS-5,弹出License窗口,license需要自己去解决

  4. 【译】在React中实现条件渲染的7种方法

    原文地址:https://scotch.io/tutorials/7-ways-to-implement-conditional-rendering-in-react-applications 借助R ...

  5. ajax request 等请求的数据直接return

  6. C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务

    场景 新建一个程序,需要对数据的表进行查询并将查询结果转换为实体类,然后将多个实体类 再插入到另一个数据库的表中,执行插入的过程中要使用事务. 注: 博客主页: https://blog.csdn.n ...

  7. FCC---CSS Flexbox: Use the flex-direction Property to Make a Column

    The last two challenges used the flex-direction property set to row. This property can also create a ...

  8. 0基础-scp命令一学就会

    scp -P 22 -r  /home/server Android@192.168.1.110:/opt    将本地/home/server的文件夹上传到远端服务器192.168.1.110的目录 ...

  9. 两种最常用的 HTTP 操作方法是:GET 和 POST。

    什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...

  10. CentOS 线上搭建 jupyter_server 笔记

    一.背景 为公司负责 Data Science 的同事配置线上 jupyter_server (jupyter + jupyter_kernel_gateway)环境. 二.环境 CentOS 7.6 ...