Ubuntu 软件管理学习笔记

本文介绍了Ubuntu系统中的软件管理工具dpkg和apt。dpkg是基础的包管理器,用于安装、删除和构建软件包,但不处理依赖问题;apt则是一个强大的前端工具,能处理依赖并升级系统。文章详细列举了dpkg的各种用法,包括安装、卸载、配置等,并介绍了apt命令的常用功能,如安装、升级、配置包等。
摘要由CSDN通过智能技术生成

Ubuntu 软件管理学习笔记


Debian 软件包通常为预编译成后缀 '.deb' 的二进制文件。类似于 rpm 文件,可以快速安装。包文件包括特定功能或软件所需的文件、元数据和指令。

类似于 rpm 和 dnf(yum),也有两个包管理工具:

  • dpkg:PacKaGe manager for Debian,是 Debian 系统的包管理工具。可以安装、删除和构建软件包。但是也不能很好处理依赖包问题。

  • apt:Advanced Packaging Tool,功能强大的软件前端管理工具,甚至可以升级整个 Ubuntu 系统,也是基于客户/服务器架构。

1. Apt 工作原理

服务器端,先得到所需的 deb 包,然后利用工具 genbasedir 对所有 deb 包的头(Header)信息进行分析,并将分析结果记录至文件夹 base 内的一个 DEB 索引清单文件中,一旦 deb 包有所变动,就会触发分析记录操作。

客户端,在进行安装或升级时,先查询 DEB 索引清单文件,并下载至本地 /var/cache/apt/ 目录中,以获取需要哪些包及其相互依赖包,然后一起下载所需的包到客户端进行安装或升级。

2. dpkg 包管理工具

帮助参看:man dpkg 或 dpkg --help。

dpkg是一个中间层次的工具,用于安装、构建、删除和管理 Debian 软件包。作为 CLI(命令行接口)的 apt(8>) 是主要和对用户更友好的的前端工具,而作为 TUI(终端用户接口)的前端工具是 aptitude(8)。dpkg本身完全由命令行参数控制,这些参数由一个操作和零个或多个选项组成。动作参数告诉 dpkg 要做什么,而选项以某种方式控制动作的行为。

dpkg 也可以作为 dpkg-deb(1) 和 dpkg-query(1) 的前端。如果使用其支持的动作参数,则 dpkg 仅传递参数并调用 dpkg-deb 或 dpkg-query。

该工具直接使用的机会不太多,原因也是不能很好地解决包的依赖问题。用于包的查询比较多。

2.1 dpkg 常见用法

  • 安装包,如果指定 -R 选项,package.file 必须引用目录。

    dpkg -i package.file...     # i for install
    

    安装操作由以下步骤组成:

    1. 提取指定包的控制文件。
    2. 如果在本次安装前已经安装了其他版本的相同包,则执行老包的 prerm(预删除)脚步。
    3. 如果提供了 preinst 脚步,则执行它。
    4. 解开新包,且备份旧文件,因此如果出现问题,可以恢复。
    5. 如果在新的安装前已安装了其他版本的相同包,则执行老包的 postrm 脚步。注意,该脚本是在新包的 preinst 脚本之后执行,因为新文件写入的同时老文件被删除。
    6. 配置包。有关如何配置详见 --configure 选项。

  • 卸载包,不会自动删除依赖的包

    dpkg -r package             # r for remove
    
  • 清除包,包括清除配置文件

    dpkg -P package             # P for purge
    
  • 列出当前已安装的包,类似于 rpm -qa

    dpkg -l
    
  • 显示指定包的简要说明,类似于 rpm -qi

    dpkg -l package             # l for list package-name-pattern
    
  • 列出指定包的状态,包括详细信息,类似于 rpm -qi

    dpkg -s package             # s for status
    
  • 列出指定包包含的文件,类似于 rpm -ql

    dpkg -L package             # L for list files
    
  • 搜索包含 pattern 的包,类似于 rpm -qf

    dpkg -S <pattern>           # S for search
    
  • 配置包,如果使用 -a,则配置所有没有配置过的包

    dpkg --configure package | -a
    

    配置已经解开的但尚未配置的包。如果想要重新配置已经配置过的包,使用 dpkg --configure 命令。

    配置操作由以下两步骤组成:

    1. 解开conffiles(配置文件),同时备份老的配置文件,因此如果出现问题,可以恢复它们。
    2. 运行 postinst 脚本,如果包提供的话。

  • 列出 deb 包(未安装的)的内容,调用 dpkg-deb -c,类似于 rpm -qpl

    dpkg -c package.deb         # c for contents
    
  • 解开 deb 包的内容

    dpkg --unpack package.deb
    

2.2 部分选项

所有的选项都可以用在命令行和 dpkg 配置文件中,配置文件位于 /etc/dpkg/dpkg.cfg 或 /etc/dpkg/dpkg.cfg.d/ 下对应的片段文件。

  • –abort-afer=number

    修改在多少次错误后 dpkg 将会放弃。默认是 50。

  • –force-things | --no-force-things, --refuse-things

    强制或拒绝做一些事件(things),而 things 是由逗号分割的 thing 组成。–force-help 显示描述它们的信息。使用 (*) 标记的 things 默认被强制。

    • all:启用或禁用所有强制的选项。
    • downgrade(*):即使新版本已经安装,也有安装包。警告:在降级时不做任何依赖检查,因此可能打断其他包的依赖。
    • configure-any:配置任何已经解开的包及其依赖的包。
  • –no-act, --dry-run, --simulate

    干跑,不会实际改变。

  • -R, --recursive

    在指定的目录及其子目录上匹配模式 *.deb 的所有普通文件上进行递归处理。

  • -G

    如果新版本相同的包已经安装,不要安装该包。这是 --refuse-downgrade 的别名。

  • –root=dir

设置 root 目录至 dir,这设置安装目录至 dir ,且管理目录至 dir/var/lib/dpkg。

3. apt 工具

Debian 使用 apt 工具来管理包,之前最常用的 Ubuntu 包管理命令分散在 apt-get、apt-cache 和 apt-config 三个命令中。

Ubuntu 16.04 引入新特性之一是 apt 命令,其解决了命令过于分散的问题,包括了 apt-get 命令出现以来使用最广泛的选项,以及 apt-cache 和 apt-config 命令中很少使用的功能。apt 相当于这三个命令最常用命令选项的集合。

apt 命令用法

查看帮助:man apt 或 apt help

apt为包管理系统提供了一个高级命令行接口。它旨在作为一个最终用户接口,与更专门的 APT 工具(如APT-get(8)和APT-cache(8))相比,默认情况下支持一些更适合交互使用的选项。

apt 与 apt-get 对比:

apt 命令被取代的命令
命令的功能
apt installapt-get install安装软件包
apt removeapt-get remove卸载软件包
apt purgeapt-get purge清除软件包及配置文件
apt updateapt-get update刷新仓库的索引,相当于 dnf clean all; makecache
apt upgradeapt-get upgrade升级所有可升级的包
apt autoremoveapt-get autoremove自动删除不需要的包
apt full-upgradeapt-get dist-upgrade在升级包时自动升级依赖关系
apt searchapt-cache search搜索软件
apt satisfyapt-get satisfysatisfy 满足依赖字符串,好像用于 Build-Depends(构建依赖)。通过前缀"Conflicts: ",也可处理冲突。
apt showapt-cache show显示安装信息

apt 特有的命令:

命令
说明
apt list列出符合指定条件的包列表。支持通配符以匹配包名,也支持选项列出已安装(–installed)、可升级的(–upgradeable)或所有可用的(–all-versions)版本。
apt edit-sources (work-in-progress)该命令允许使用您喜欢的编辑器编辑 sources.list(5) 文件,同时也支持健全性检查。

apt 包索引配置文件:

/etc/apt/sources.list
/etc/apt/sources.list.d/

如果想要设置成仓库的国内镜像,可以使用阿里云镜像:阿里云镜像 https://developer.aliyun.com/mirror,上面有详细的说明。

修改后,使用以下命令更新仓库的元数据文件:

$ sudo apt update

apt 命令操作日志:

/var/log/dpkg.log

示例:

安装 apache2,相当于 CentOS 中的 httpd:

$ apt show apache2

$ sudo apt install apache2

$ curl localhost
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值