Ubuntu上的apt/apt-get等命令的实质意义和区别

一、前言

在使用apt和apt-get命令的时候我们常常会疑惑这两者有什么区别,因为大多数时间这两个命令能做很多相同的事情。

二、APT/APT-GET

 Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在  年,apt 命令就已经发布了第一个稳定版,只是直到  年的 Ubuntu 16.04 系统发布时才开始引人关注。随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。
Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的包管理系统,它的每个组件和应用程序都内置在系统中安装的软件包中。

  Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。在基于 Debian 的 Linux 发行版中,有各种工具可以与 Advanced Packaging Tool(APT) 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小工具。除此之外,apt-cache、apt-config 这些命令都比较低级又包含众多功能,普通的 Linux 用户也许永远都不会使用到。换种说法来说,就是最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令当中。apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。通过 apt 命令,用户可以在同一地方集中得到所有必要的工具,apt 的主要目的是提供一种以让终端用户满意的方式来处理 Linux 软件包的有效方式。apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。除此之外,它默认启用的几个特性对最终用户也非常有帮助。例如,可以在使用 apt 命令安装或删除程序时看到进度条。

虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。

 

apt 命令

取代的命令

命令的功能

apt install

apt-get install

安装软件包

apt remove

apt-get remove

移除软件包

apt purge

apt-get purge

移除软件包及配置文件

apt update

apt-get update

刷新存储库索引

apt upgrade

apt-get upgrade

升级所有可升级的软件包

apt autoremove

apt-get autoremove

自动删除不需要的包

apt full-upgrade

apt-get dist-upgrade

在升级软件包时自动处理依赖关系

apt search

apt-cache search

搜索应用程序

apt show

apt-cache show

显示装细节

    当然,apt 还有一些自己的命令:

新的apt命令

命令的功能

apt list

列出包含条件的包(已安装,可升级等)

apt edit-sources

编辑源列表

   总结:

需要注意的是:apt 命令也还在不断发展, 因此会在将来的版本中看到新的选项。目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?作为一个常规 Linux 用户,建议大家尽快适应并开始首先使用 apt。不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get。 apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。 apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。

三、rpm和apt-get

rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。 rpm是redhat公司的一种软件包管理机制,直接通过rpm命令进行安装删除等操作,最大的优点是自己内部自动处理了各种软件包可能的依赖关系。rpm一般都是预先编译好的文件,它可能已经绑定到某种CPU或者发行版上面了。
tar 只是一种压缩文件格式,所以,它只是把文件压缩打包而已。tar一般包括编译脚本,可以在当前环境下编译,所以具有通用性。 如果你的包不想开放源代码,你可以制作成rpm,如果开源,用tar更方便了。 tar一般都是源码打包的软件,需要自己解包,然后进行安装三部曲,./configure, make, make install. 来安装软件。

一般来说著名的linux系统基本上分两大类:

1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等

RedHat 系列

1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
2 包管理工具 yum
3 支持tar包

Debian系列

1 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
2 包管理工具 apt-get
3 支持tar包

四、apt-get

apt-get 是一个下载安装软件包的简单命令行接口。
命令:
update - 重新获取软件包列表
upgrade -
进行更新
install - 安装新的软件包
remove - 移除软件包
autoremove - 自动移除全部不使用的软件包
purge - 移除软件包和配置文件
source - 下载源码档案
build-dep - 为源码包配置编译依赖
dist-upgrade - 发行版升级
dselect-upgrade - 依照 dselect 的选择更新
clean - 清除下载的归档文件
autoclean - 清除旧的的已下载的归档文件
check - 检验是否有损坏的依赖
选项:
-h 本帮助文件。
-q 输出到日志 - 无进展指示
-qq 不输出信息,错误除外
-d 仅下载 - 不安装或解压归档文件
-s 不实际安装。模拟执行命令
-y 假定对所有的询问选是,不提示
-f 尝试修正系统依赖损坏处
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表
-b 获取源码包后编译 -V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp

     常用的命令:

apt-cache search packagename 搜索包
apt-cache show packagename 获取包的相关信息,如说明、大小、版本等
apt-get install packagename 安装包
apt-get install packagename --reinstall 重新安装包
apt-get -f install 修复安装”-f = –fix-missing”
apt-get remove packagename 删除包
apt-get remove packagename --purge 删除包,包括删除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安装的包
apt-get dist-upgrade 升级系统
apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends packagename 了解使用依赖
apt-cache rdepends packagename 是查看该包被哪些包依赖
apt-get build-dep packagename 安装相关的编译环境
apt-get source packagename 下载该包的源代码
apt-get clean 清理无用的包
apt-get autoclean 清理无用的包
apt-get check 检查是否有损坏的依赖

注意事项:

update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能是最新的。
安装或升级系统分下面几个步骤:
第一步,获得最近的软件包的列表;列表中包含一些包的信息,比如这个包是否更新过。
第二步,如果这个包没有发布更新,就不管它;如果发布了更新,就把包下载到电脑上,并安装。
apt update对应的就是第一步。
apt upgrade 与apt dist
-upgrade对应的是第二步。
由于包与包之间存在各种依赖关系。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 软件包。

五、sudo apt --fix-broken install


-->

这个命令出来的时候一般是使用dpkg安装软件出现依赖或者源找不到的情况,会提示使用这个命令来解决依赖,删除半安装的软件,因为不使用这个软件使用 apt update或者apt upgrade将不能成功。


Ubuntu上的apt/apt-get等命令的实质意义和区别的更多相关文章

  1. 【转载】如何在Ubuntu上安装LAMP服务器系统?

    转载自:http://os.51cto.com/art/201307/405333.htm [2013年7月25日 51CTO外电头条]为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时 ...

  2. [转载]如何在Ubuntu上安装LAMP服务器系统

    [2013年7月25日 51CTO外电头条]为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时,我更偏爱在不受干扰的情况下,在我那台计算机上的开发环境下进行开发.我宁愿所犯的错误大部分是 ...

  3. 如何在Ubuntu上安装LAMP服务器系统?

    在Ubuntu上安装LAMP Ubuntu的开发人员让人们很容易安装和配置LAMP软件包,只要借助一个终端命令.所以,打开终端窗口,让我们开始入手吧. sudo apt-get install lam ...

  4. LEMP--如何在Ubuntu上安装Linux、Nginx、MySQL和PHP

    简介 LEMP是用来搭建动态网站的一组软件,首字母缩写分别表示Linux.Nginx(Engine-X).MySQL和PHP. 本文将讲述如何在Ubuntu安装LEMP套件.当然,首先要安装Ubunt ...

  5. Ubuntu上用快捷键关闭没有响应的程序

    Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...

  6. ubuntu上vritualbox为系统分配硬盘空间

    VBoxManage是virtualbox 在ubuntu上提供的管理virtualbox的命令行命令 VBoxManage modifyhd windowsDevEnv --resize VBoxM ...

  7. [转]Ubuntu上的包管理:dpkg,apt和aptitude

    一直以来对于ubuntu的包管理的概念就是apt-get,偶尔手动装个包就是dpkg -i,现在觉得是要系统地了解一下这几个包管理的命令. 原文转自: http://zhouliang.pro/201 ...

  8. ubuntu下dpkg/apt的一些常用命令

    apt-get update 更新源(硬盘缓存的包的版本等)apt-get upgrade 更新包(更新系统中已安装的包,依据缓存包的版本更新)apt-get dist-upgrade 升级系统apt ...

  9. 在shell下,用命令将U盘挂载到ubuntu上,并将文件copy到U盘里面

    首先将鼠标定位到ubuntu上,然后插上U盘,这时候先用指令: fidsk -l 查看一下U盘,(这是应该有一个盘符了) 如果没有的话,就尽享下面的步骤: 首先使用命令查看是那个分区,在U盘插入前后, ...

随机推荐

  1. HTTP系列之Referer和Referrer policy简介

    目录 @ 1.前言摘要 在csdn网站随便抓个链接来看看: Referer参数: referrer policy是unsafe url的,ok,下面介绍一下Referer和referrer polic ...

  2. SWITCH练习(一年第几天的判断)

    using System; namespace program { class program1 { static void Main(string[] args) { program1 fenshu ...

  3. C#用Call代替CallVirt之后的测试用例

    一. C# 原始代码和直接结果 测试 C# 代码: class Program { static void Main(string[] args) { A c1 = new C(); c1.Foo() ...

  4. 初识Lock与AbstractQueuedSynchronizer(AQS)

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  5. MySQL,必须掌握的6个知识点

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  6. django中're_path'的用法

    1.re_path和path的作用是一样的.只不过're_path'是在写url的时候可以用正则表达式,功能更加强大.2.写正则表达式都推荐使用原生字符串.也就是以‘r’开头的字符串:r'move/' ...

  7. 缓存cache(擦车)

    第一次接触到Cache的时候,是在WebForm中,第一次接触,我就再也没能忘记,cache(擦车,的拼音) 客户端浏览器缓存https://blog.csdn.net/y874961524/arti ...

  8. Python工具库分享

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  9. Spinner在Dialog中的使用效果

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/91 背景: 记得很久以前,碰到一个需求场景,需要在Andr ...

  10. RSA 非对称加密算法的Java实现

    关于RSA的介绍Google一下很多,这里不做说明.项目开发中一般会把公钥放在本地进行加密,服务端通过私钥进行解密.Android项目开发中要用到这个加密算法,总结后实现如下: import andr ...