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. CCF-CSP题解 201609-3 炉石传说

    模拟. 注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变. #include <bits/stdc++.h> using namespace std; str ...

  2. 《MySQL数据库》MySQL数据库安装(linux)

    1.  下载安装包: 百度网盘:链接: https://pan.baidu.com/s/1toGl8O9gMBpDWn0mHWwFyg 提取码: i51g 官网下载:https://dev.mysql ...

  3. AOP框架Dora.Interception 3.0 [3]: 拦截器设计

    对于所有的AOP框架来说,多个拦截器最终会应用到某个方法上.这些拦截器按照指定的顺序构成一个管道,管道的另一端就是针对目标方法的调用.从设计角度来将,拦截器和中间件本质是一样的,那么我们可以按照类似的 ...

  4. 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 ...

  5. iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置)

    iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置) 主要记录关于cookie相关的坑 1. UIWebview 1. UIWebview 相对比较简单 直接通 ...

  6. C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案

    有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用.但在PL/SQL中正常调用返回. 于是动手一试: 1.准备函数(Oralce 11g.2.0.0.4) CREATE OR R ...

  7. [转]加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用

    原文链接:http://www.cnblogs.com/sochishun/p/7028056.html 加密技术通常分为两大类:"对称式"和"非对称式". 对 ...

  8. System.out.println高并发下导致应用暂停

    今天在进行序列号压测的时候,通过调用genSeqId方法来获取序列号,100并发,16台压测机器,发现无论怎么压测,调用量达到140w左右的时候,此方法的ops直接掉到了0,具体图示如下: 从上图可以 ...

  9. Spring Boot 静态资源能加载css 不能加载js

    Spring Boot 配置拦截器的时候默认 是放行 静态资源 , 也就是说不需要进行配置 registry.addResourceHandler("/**") .addResou ...

  10. WebShell代码分析溯源(七)

    WebShell代码分析溯源(七) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['POST'],);array_map(ba ...