• Ubuntu 软件管理学习笔记


    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

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

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

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

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

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

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

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

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

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

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

      dpkg --configure package | -a
      
      • 1

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

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

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

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

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

      dpkg --unpack package.deb
      
      • 1

    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/
    
    • 1
    • 2

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

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

    $ sudo apt update
    
    • 1

    apt 命令操作日志:

    /var/log/dpkg.log
    
    • 1

    示例:

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

    $ apt show apache2
    
    $ sudo apt install apache2
    
    $ curl localhost
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    MySQL三大日志——binlog、redoLog、undoLog详解
    你真的会写Restful API吗?
    各种免费好用的api整理分享
    靶场上新:Openfire身份认证绕过
    IDEA的快捷键大全
    文字雨特效
    买阿里云服务器,实操搭建nginx+php+mysql+thinkphp5全过程(6)
    标签上有什么defer和async属性?<script>
    SSTables和LSM-Tree
    如何准备银行秋招春招?
  • 原文地址:https://blog.csdn.net/qq_39785418/article/details/128039975