Linux是如何安装和更新软件的 apt与apt-get机制详解

  • A+
所属分类:Linux

在windows下安装软件,我们只需要有EXE文件,然后双击,下一步直接OK就可以了。但在LINUX下,不是这样的。每个LINUX的发行版,比如Ubuntu,都会维护一个自己的软件仓库,我们常用的几乎所有软件都在这里面。这里面的软件绝对安全,而且绝对的能正常安装。

那我们要怎么安装呢?在Ubuntu下,我们维护一个源列表,源列表里面都是一些网址信息,这每一条网址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用。

apt-get是什么

apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统,是一款适用于Unix和Linux系统的应用程序管理器

常用指令

apt-get install

一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。

cat /etc/apt/sources.list

在这个文件里加入或者注释(加#)掉一些源后,保存。这时候,我们的源列表里指向的软件就会增加或减少一部分。

sudo apt-get update

这个命令用于更新软件列表,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。

sudo apt-get upgrade

这个命令用于更新软件,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。

安装原理

安装的软件从哪里来

所有的deb包由官方统一管理,那为什么我们能定位到这些软件包呢?这里就涉及到一个软件源的概念,在/etc/apt/目录下有一个sources.list文件,安装的时候也会用到这个文件,可以用cat /etc/apt/sources.list命令查看该文件,这里都是一些资源网站,软件包资源当然就是出自这里。所以当你指定安装某个扩展的时候,在/etc/apt/sources.list添加相应的资源网站,知道了这个,就可以直接在文件中添加源。

Linux是如何安装和更新软件的  apt与apt-get机制详解

安装前,都做了什么

例如,使用sudo apt-get install diodon命令安装diodon软件

  1. 从list文件中是检索可用的源中是否有这个diodon包
  2. 生成软件依赖树,将需要的依赖包提前列出来,在安装所需软件之前进行安装
  3. 读取状态信息
  4. 安装依赖包及软件

安装过程中遇到的问题

Linux是如何安装和更新软件的  apt与apt-get机制详解

解决方法:

这种问题的原因是apt-get被占用,无法再次使用apt-get命令操作。解决办法分为两种:

1、在终端输入ps -ef | grep “apt-get”,这个指令找出占用apt-get应用的进程,然后用sudo kill -9 PID强制结束进程

2、但是也有可能找不到这个占用的进程,很可能你在上一次安装操作的时候意外断电,没有正常退出导致的,这个时候需要做的操作就是强制删除以下文件就可以:

sudo rm /var/cache/apt/archives/lock /var/lib/dpkg/lock

从这里可以看出,其实就是删除两个锁文件;

系统在执行apt-get指令安装时,会在/var/lib/dpkg/和/var/cache/apt/archives/下生成lock文件,当指令正常退出时,系统会删除这个lock文件。

apt与apt-get的区别

在开始对比 apt 与 apt-get 命令的区别之前,我们先来看看这两个命令的背景,以及它们要试图达到的目的。

Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。

在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小工具。

如果你已阅读过我们的 apt-get 命令指南,可能已经遇到过许多类似的命令,如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 的其它命令选项,也可以实现与使用 apt-get 时相同的操作。

虽然 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-get已弃用?

目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。

我应该使用apt还是apt-get

既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?作为一个常规 Linux 用户,系统极客建议大家尽快适应并开始首先使用 apt。不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get。

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!