Debian/Ubuntu Linux都使用apt,升级时都是:

apt-get update
apt-get upgrade
apt-get dist-upgrade

安装或升级系统分下面几个步骤。

第一步,获得最近的软件包的列表;列表中包含一些包的信息,比如这个包是否更新过。

第二步,如果这个包没有发布更新,就不管它;

如果发布了更新,就把包下载到电脑上,并安装。

apt-get update对应的就是第一步。

apt-get upgrade 与apt-get dist-upgrade对应的是第二步。

由于包与包之间存在各种依赖关系。upgrade只是简单的更新包,不管这些依赖,它不和添加包,或是删除包。而dist-upgrade可以根据依赖关系的变化,添加包,删除包。

一般在运行upgrade或dist-upgrade之间,要运行update.

但是常常有人会问,
upgrade和dist-upgrade有何不同,仔细查查,似乎大家对upgrade和dist-upgrade的解释都有点不同,在此也纪录自己的看法.

我认为apt-get
upgrade和dist-upgrade的差别:

upgrade:系统将现有的Package升级,如果有相依性的问题,而此相依性需要安装其它新的Package或影响到其它Package的相依性时,此Package就不会被升级,会保留下来.

dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的Package,就会试着去安装/移除它.
(所以通常这个会被认为是有点风险的升级)

apt-get upgrade 和 apt-get dist-upgrade 本质上是没有什么不同的。

只不过,dist-upgrade
会识别出当依赖关系改变的情形并作出处理,而upgrade对此情形不处理。

例如软件包 a 原先依赖 b c d,但是在源里面可能已经升级了,现在是 a 依赖 b c
e。这种情况下,dist-upgrade 会删除 d 安装 e,并把 a 软件包升级,而 upgrade 会认为依赖关系改变而拒绝升级 a
软件包。

man apt-get的解释:

upgrade: upgrade is
used to install the newest versions of all packages currently installed on the
system from the sources enumerated in /etc/apt/sources.list. Packages currently
installed with new versions available are retrieved and upgraded; under no
circumstances are currently installed packages removed, or packages not already
installed retrieved and installed. New versions of currently installed packages
that cannot be upgraded without changing the install status of another package
will be left at their current version. An update must be performed first so that
apt-get knows that new versions of packages are available.
dist-upgrade: dist-upgrade in addition to performing
the function of upgrade, also intelligently handles changing dependencies with
new versions of packages; apt-get has a "smart" conflict resolution system, and
it will attempt to upgrade the most important packages at the expense of
less

What Doesn't Kill Me Makes Me Stronger

apt-get upgarde 和dist-upgrade的差别的更多相关文章

  1. Linux for python教程02

    目录 1. Linux用户及权限管理 1.1. who 1.2. 查看当前用户: whoami 1.3. 添加用户账号: useradd 1.4 切换用户 su 2.用户组 3. 修改文件权限: ch ...

  2. kali2016.2安装后配置

    接触kali有几个月了,总是有一种浅尝辄止的感觉.因为不常用,一些常用操作时常想不起来了.为日后查找方便,特通过写博客方式来记录. 新建虚拟机,和安装其它操作系统差别不大,按提示一步一步安装.第1次安 ...

  3. Python_在Ubuntu中搭建科学计算环境

    本文针对 Ubuntu 下搭建 Python 科学计算的环境,罗列了关键词和部分链接,最后附上了自己的一点分享. 1.升级 关键词: python ubuntu 升级 推荐: ubuntu16.04下 ...

  4. django(channel)到 ubuntu

    1.准备工作 删除各app/migrations/下的以数字开头的数据库同步日志文件: 假设你使用的是Pycharm,我们要生成环境包: pip freeze > requirements.tx ...

  5. django部署笔记

    在开发机上的准备工作: 确认项目没有bug. 用pip freeze > requirements.txt将当前环境的包导出到requirements.txt文件中,方便在部署的时候安装. 将项 ...

  6. Ubuntu sudo apt-get 安装下载更新软件包命令详解

    sudo apt-get install package                    安装软件包sudo apt-get install package - - reinstall 重新安装 ...

  7. 【数据分析】Superset 之四 直接安装

    apt install python-pip pip install --upgrade pip apt-get install build-essential libssl-dev libffi-d ...

  8. 用platformio编写arduino程序

    哈哈,今天浏览arduino.cc官网,找到一个好东东,以后,在ubuntu下用终端编程在也不发愁了. platformio.org是一个物联网全能的IDE,甚至还贴心的提供了在命令行下编程的版本:p ...

  9. Ubuntu 16.04 LTS软件包管理基本操作

    前文 Ubuntu 16.04 新特性中我们已经介绍过,随着 Ubuntu 16.04 LTS 的发布,Ubuntu 的软件包管理命令也发生了变化,新系统采用了 Debian 项目中所使用的 APT( ...

  10. Flask实战第68天:项目上线部署

    在开发机上的准备工作 1.确认项目没有bug 2.用pip freeze >requirements.txt将当前环境的包导出到requirements.txt文件中,方便部署的时候安装 3.将 ...

随机推荐

  1. 【剑指offer】 和为s的连续正数序列,C++实现

    原创博文,转载请注明出处! # 题目 # 思路 设置两个辅助变量small和big,small表示序列的最小值,big表示序列的最大值.如果sum(small ~ big) > s,则增大sma ...

  2. 【剑指offer】反转链表,C++实现(链表)

    1.题目 输入一个链表的头结点,首先反转链表后,然后输出链表的所有元素(牛客网). struct ListNode { int val; struct ListNode *next; }; 2.思路 ...

  3. kettle连接oracle出现Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)

    jdbc驱动,下载jdbc14.jar文件放入   pdi-ce-5.3.0.0-213\data-integration\libswt\win64里 之后重启kettle即可 jdbc14.jar文 ...

  4. BJOI 2019 模拟赛 #2 题解

    T1 完美塔防 有一些空地,一些障碍,一些炮台,一些反射镜 障碍会挡住炮台的炮, 反射镜可以 90° 反射炮台的光线,炮台可以选择打他所在的水平一条线或者竖直一条线 求是否有一组方案满足每个空地必须要 ...

  5. 实现一个web服务器, 支持php

    暂时还很不完善, 不过框架已经写出来了. https://github.com/tw1996/studyHttpd/

  6. 「GXOI / GZOI2019」简要题解

    「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...

  7. testem方便的web tdd 测试框架使用

    备注:    单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行.    主要特性:    a. 支持的测试框架有:jasmine quint mocha buster ...

  8. MkDocs 搭建试用

    http://www.mkdocs.org/备注:    在平时的开发中文档管理是一个比较重要的部分,同时集成在 平时开发的持续集成中,可以加速开发   1. 安装 pip install mkdoc ...

  9. worldpress自定义页面

    一:wordpress制作自定义页面的方法 有时候我们需要制作一些个性化的页面,而不是直接用wordpress的page页面模板.这时候我们就需要自已写一个页面出来.下面介绍一下制作流程: 第一步:制 ...

  10. myeclipse部署maven项目到tomcat,src/main/resources里面配置文件部署不到webapp下classes

    解决myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是 ...