当前位置: 首页 > 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讲解及实战(超详细 附源码和演示视频)
  • 电视剧里的代码真能运行吗?
  • 让我们进入面向对象的世界(三)
  • JS 中的深拷贝与浅拷贝
  • Android Studio:GIT提交项目到远程仓库
  • C++11: atomic 头文件
  • JS学习笔记——闭包
  • mysql外键的使用
  • scala基础语法(二)
  • spring + angular 实现导出excel
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 初识 webpack
  • 工作中总结前端开发流程--vue项目
  • 简析gRPC client 连接管理
  • 使用 QuickBI 搭建酷炫可视化分析
  • 跳前端坑前,先看看这个!!
  • 用 Swift 编写面向协议的视图
  • 用element的upload组件实现多图片上传和压缩
  • 与 ConTeXt MkIV 官方文档的接驳
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • #### go map 底层结构 ####
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (图)IntelliTrace Tools 跟踪云端程序
  • ./configure,make,make install的作用(转)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET MVC之AOP
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET基础篇——反射的奥妙
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .pop ----remove 删除
  • /var/log/cvslog 太大
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @property括号内属性讲解
  • [.NET]桃源网络硬盘 v7.4
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [FT]chatglm2微调
  • [IDF]啥?
  • [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治