linux包管理(1)初步认识Debian包和apt-get命令

概述

在本教程中,学习使用 Debian 包管理工具来管理 Linux 系统上的包。学习:

  • 安装、重新安装、升级和删除 Debian 二进制包
  • 寻找包含特定文件或库的包(即使该包未安装)
  • 获取版本、内容、依赖关系、包完整性和安装状态等包信息(即使该包未安装)

包管理简介

过去,许多 Linux 程序以源代码的形式发行,用户将源代码构建为所需的程序或程序集,源代码还附带所需的手册页、配置文件,等等。现在,大多数 Linux 发行商都使用称为 的预先构建的程序或程序集,这些包便于在该发行版上安装。在本教程中,学习帮助安装、更新和删除包的 包管理 工具。

RPM/DPKG 两大阵营简介

在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。

RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。二者之具体比较不在本文范围之内。

本教程主要关注 Advanced Package Tool (APT),APT 是 Debian 以及从 Debian 衍生出的发行版(比如 Ubuntu)使用的包管理系统。

从用户的角度讲,基本的包管理功能是通过命令提供的。Linux 开发人员一直致力于让 Linux 更容易使用,基本工具已得到了其他工具(包括 GUI 工具)的补充,它们为用户隐藏了基本工具的一些复杂性。在本教程,我主要关注基本工具,但也会提到其他一些工具,以便您能够继续研究它们。

安装 Debian 包

在安装 Linux 系统时,通常会安装大量的包。可以针对系统的预期用途(比如服务器、桌面或开发人员工作站)自定义这个包集合。有时候,可能还需要安装新包来添加新功能,更新已有的包,甚至删除不再需要或已被新包所取代的包。让我们来看看如何执行这些任务,以及如何解决一些相关的难题,比如寻找哪个包可能包含某个特殊的命令。

假设您想要编译一个 Fortran 程序,一位同事告诉您使用 gfortran 命令。您可以尝试使用 gfortran --help ,也可以尝试使用 which gfortrantype gfortran 。 但是,如果系统无法找到 gfortran ,您可能会看到类似 找不到 gfortran 命令 的输出。

找不到 gfortran 命令
ian@attic-u14:~$ gfortran --help
The program 'gfortran' is currently not installed.You can install it by typing:
sudo apt-get install gfortran

ian@attic-u14:~$ which gfortran

ian@attic-u14:~$ type gfortran
-bash: type: gfortran: not found

如果没有从 找不到 gfortran 命令 中的输出表中获得有帮助的建议,您可能会与您的同事进行核实,确定要安装哪个包。否则,您可以猜测 gfortran 命令在 gfortran 包中。这种猜测通常是对的,但也不一定。您稍后将会看到如何寻找正确的包。在这里,您使用了 gfortran 包,并使用带有 install 选项的 apt-get 命令安装它,如 使用 apt-get 安装 gfortran 中所示。请注意, apt-get 会确定需要哪些额外的包才能满足依赖关系,然后为您提供将要安装的所有包的列表。这时,您会获得继续操作的提示。在我们的示例中,我们响应 y 来安装 gfortran 和所需的其他包:gfortran-4.8、libgfortran-4.8-dev 和 libgfortran3。

使用 apt-get 安装 gfortran
ian@attic-u14:~$ sudo apt-get install gfortran
Reading package lists...Done
Building dependency tree
Reading state information...Done
The following extra packages will be installed:
  gfortran-4.8 libgfortran-4.8-dev libgfortran3
Suggested packages:
  gfortran-multilib gfortran-doc gfortran-4.8-multilib gfortran-4.8-doc
  libgfortran3-dbg
The following NEW packages will be installed:
  gfortran gfortran-4.8 libgfortran-4.8-dev libgfortran3
0 upgraded, 4 newly installed, 0 to remove and 23 not upgraded.
Need to get 0 B/5,039 kB of archives.
After this operation, 17.6 MB of additional disk space will be used.
Do you want to continue?[Y/n] y
Selecting previously unselected package libgfortran3:i386.
(Reading database ...202395 files and directories currently installed.)
Preparing to unpack .../libgfortran3_4.8.4-2ubuntu1~14.04_i386.deb ...
Unpacking libgfortran3:i386 (4.8.4-2ubuntu1~14.04) ...
Selecting previously unselected package libgfortran-4.8-dev:i386.
Preparing to unpack .../libgfortran-4.8-dev_4.8.4-2ubuntu1~14.04_i386.deb ...
Unpacking libgfortran-4.8-dev:i386 (4.8.4-2ubuntu1~14.04) ...
Selecting previously unselected package gfortran-4.8.
Preparing to unpack .../gfortran-4.8_4.8.4-2ubuntu1~14.04_i386.deb ...
Unpacking gfortran-4.8 (4.8.4-2ubuntu1~14.04) ...
Selecting previously unselected package gfortran.
Preparing to unpack .../gfortran_4%3a4.8.2-1ubuntu6_i386.deb ...
Unpacking gfortran (4:4.8.2-1ubuntu6) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up libgfortran3:i386 (4.8.4-2ubuntu1~14.04) ...
Setting up libgfortran-4.8-dev:i386 (4.8.4-2ubuntu1~14.04) ...
Setting up gfortran-4.8 (4.8.4-2ubuntu1~14.04) ...
Setting up gfortran (4:4.8.2-1ubuntu6) ...
update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...

使用 apt-get 安装 gfortran 的输出可以看到, apt-get 从某个地方读取了一个包列表(稍后进一步讨论),构建了一个依赖关系树,然后确定 gfortran-4.8、libgfortran-4.8-dev 和 libgfortran3 是所需的必备包,但目前尚未安装。您还会注意到,它建议安装一些单独的包:gfortran-multilib、gfortran-doc、gfortran-4.8-multilib、gfortran-4.8-doc 和 libgfortran3-dbg。在显示其他一些摘要信息(包括空间使用情况)后,会提示您继续,gfortran 将和这些必备包一起安装。 Debian 包通常具有扩展名 .deb,您可以在下列行中看到这些包已下载和解包:

Preparing to unpack .../gfortran-4.8_4.8.4-2ubuntu1~14.04_i386.deb ...
Unpacking gfortran-4.8 (4.8.4-2ubuntu1~14.04) ...

假设您不想安装某个包,而是想确定该包是否依赖于其他包。可以在 apt-get 上使用 -s (代表 simulate )选项。 还有其他一些具有等效功能的选项,比如 --just-print 和 \ --dry-run 。请查阅手册页了解完整的细节。 gfortran-doc 的模拟或排练式安装 显示了模拟安装 gfortran-doc 包的情况。

gfortran-doc 的模拟或排练式安装
ian@attic-u14:~$ sudo apt-get install -s gfortran-doc
Reading package lists...Done
Building dependency tree
Reading state information...Done
The following extra packages will be installed:
  gfortran-4.8-doc
The following NEW packages will be installed:
  gfortran-4.8-doc gfortran-doc
0 upgraded, 2 newly installed, 0 to remove and 23 not upgraded.
Inst gfortran-4.8-doc (4.8.4-2ubuntu1~14.04 Ubuntu:14.04/trusty-updates [all])
Inst gfortran-doc (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [i386])
Conf gfortran-4.8-doc (4.8.4-2ubuntu1~14.04 Ubuntu:14.04/trusty-updates [all])
Conf gfortran-doc (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [i386])

如您所见,gfortran-doc 文档包需要 gfortran-4.8-doc 包。但没有反向需求。自行尝试一下。

通过上面的例子我们掌握了最基本的命令:apt-get install,它需要sudo权限,它将伴随我们使用ubuntu的一生,这是一条用于安装debian包的命令。-s选项表示模拟安装,就是不是真正安装。

apt-get是个命令集,它支持的其他命令如下:

    sudo apt-get update  更新源
    sudo apt-get install package  安装包
    sudo apt-get remove package  删除包
    sudo apt-get autoremove [package] 删除包同时删除那些不再被需要的包
    sudo apt-cache search package  搜索软件包
    sudo apt-cache show package  获取包的相关信息,例如说明、大小、脚本等
    sudo apt-get install package --reinstall  重新安装包
    sudo apt-get -f install  修复安装
    sudo apt-get remove package --purge  删除包,包括配置文件等
    sudo apt-get build-dep package  安装相关的编译环境
    sudo apt-get upgrade  更新已安装的包
    sudo apt-get dist-upgrade  升级系统
    sudo apt-cache depends package  了解使用该包依赖那些包
    sudo apt-cache rdepends package  查看该包被那些包依赖
    sudo apt-get source package  下载该包的源代码
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值