当前位置: 首页 > news >正文

Ubuntu 软件管理学习笔记

目录

  • Ubuntu 软件管理学习笔记
    • 1. Apt 工作原理
    • 2. dpkg 包管理工具
      • 2.1 dpkg 常见用法
      • 2.2 部分选项
    • 3. apt 工具
      • apt 命令用法

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

相关文章:

  • python中pytest库用法详解
  • CSRF漏洞简介
  • C/C++航空客运订票系统
  • 编译原理之词法分析器随笔和简单实现
  • 47 - 父子间的冲突
  • 单片机和ARM A的区别
  • STC 51单片机40——汇编语言 串口 接收与发送
  • python破解wifi教程
  • Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
  • 【网络安全】文件上传之安全狗bypass
  • MATLAB | 世界杯来用MATLAB画个足球玩叭~
  • LeetCode | 循环队列的爱情【恋爱法则——环游世界】
  • Android App开发音量调节中实现拖动条和滑动条和音频管理器AudioManager讲解及实战(超详细 附源码和演示视频)
  • 电视剧里的代码真能运行吗?
  • 让我们进入面向对象的世界(三)
  • [译] React v16.8: 含有Hooks的版本
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 2017前端实习生面试总结
  • gf框架之分页模块(五) - 自定义分页
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Laravel 实践之路: 数据库迁移与数据填充
  • MaxCompute访问TableStore(OTS) 数据
  • Meteor的表单提交:Form
  • MySQL几个简单SQL的优化
  • PV统计优化设计
  • python学习笔记-类对象的信息
  • React组件设计模式(一)
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 构建二叉树进行数值数组的去重及优化
  • 回流、重绘及其优化
  • 基于游标的分页接口实现
  • 跨域
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 深度学习入门:10门免费线上课程推荐
  • 使用Swoole加速Laravel(正式环境中)
  • 算法---两个栈实现一个队列
  • 微信小程序填坑清单
  • 智能合约开发环境搭建及Hello World合约
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (2)STM32单片机上位机
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) optional的使用
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)u-boot-nand.bin的下载
  • ***利用Ms05002溢出找“肉鸡
  • ***原理与防范
  • .describe() python_Python-Win32com-Excel
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET框架