zoukankan      html  css  js  c++  java
  • Ubuntu上的apt/apt-get等命令的实质意义和区别

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

    一、前言

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

    二、APT/APT-GET

     Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 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将不能成功。
  • 相关阅读:
    PostgerSQL 回收表空间,查看占用磁盘大小
    为 Docker 添加阿里云的镜像地址
    Docker 常用命令
    CentOS 7 安装 Docker
    kafka-常用脚本2
    Nginx 端口被占用(0.0.0.0:443 failed (98: Address already in use))
    nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    检查Nginx 配置文件出否有问题
    Python2 安装虚拟环境
    记录 | 程序员技术博客平台推荐和选取
  • 原文地址:https://www.cnblogs.com/zyrblog/p/11042015.html
Copyright © 2011-2022 走看看