文档章节

dpkg工具之dpkg-checkbuilddeps

大培哥
 大培哥
发布于 2016/03/17 16:47
字数 1200
阅读 741
收藏 1
点赞 1
评论 0

一、dpkg-checkbuilddepsman手册)

作用:该命令行工具是用来检查依赖和冲突的。

大纲:dpkg-checkbuilddeps [option ...] [control file]

描述:

该程序用来检查列举在控制文件中的依赖和冲突,如果这当中的任何一个依赖未满足,它将列出这些包的名称并且返回一个非零的返回值。

默认情况下,debian/control文件被读取,但是你同样可以在命令行中指定一个可替代的配置文件名。

选项:

--admin-dir = dir 

这里用来改变dpkg数据库的默认位置,当前默认位置是在/var/lib/dpkg位置处。
-A
忽略Build-Depends-Arch和 Build-Conflicts-Arch行,当架构独立的包被构建的时候可以使用这个参数,或者当源码包需要被构建时和-B参数一起使用。
-B
忽略Build-Depends-Indep 和 Build-Conflicts-Indep行,使用当架构依赖的包被建立的时候使用,或者当源码包需要被编译时和-A参数一起使用
-d
用户手动指定建依赖包的列表
-c
用户手动指定冲突字符串的列表
使用给定的构建依赖和冲突而不是包含在debian/control文件中的依赖和冲突。

-a arch
 假设用户想要检查指定架构系统的依赖和冲突而不是本机系统架构所缺少的依赖和冲突,用户可以使用-a参数来检查构建依赖和冲突列表。
-p  profile [] 
caveats:该参数选项没有理解,日后理解会进一步补充~
-? --help
  显示使用信息并退出
--version
  显示版本号,并且退出

说明:该部分主要为man手册的理解翻译部分

二、dpkg-checkbuilddeps执行流程

注意:该部分为查看dpkg-checkbuilddeps的执行过程,但是为了流程图的美观中间执行步骤做了简单的修饰(并不影响主要的执行流程)。

可能仅仅看流程图还是有点晦涩难懂,我下面举个简单的例子来说明一下这个过程:

三、dpkg-checkbuilddeps执行流程

dpkg-checkbuilddeps示例说明

Debian/control文件内容如下:

Source: dpkg

Section: admin

Priority: required

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

XSBC-Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>

Uploaders: Guillem Jover <guillem@debian.org>, Raphaël Hertzog <hertzog@debian.org>

Origin: debian

Bugs: debbugs://bugs.debian.org

Homepage: https://wiki.debian.org/Teams/Dpkg

Vcs-Browser: http://anonscm.debian.org/gitweb/?p=dpkg/dpkg.git

Vcs-Git: git://anonscm.debian.org/dpkg/dpkg.git

Standards-Version: 3.9.5

Build-Depends: debhelper (>= 7), pkg-config, flex,

 gettext (>= 0.18), po4a (>= 0.41),

 zlib1g-dev, libbz2-dev, liblzma-dev,

 libselinux1-dev (>= 1.28-4) [linux-any],

 libncursesw5-dev,

 libtimedate-perl, libio-string-perl

下面说明一下通常情况下(dpkg-checkbuilddeps debian/checkbuilddeps )的处理步骤:

1)首先会去默认读取debian/control文件,如果未读取到,那么终止,反之,进入步骤2,此时能读取到,那么进入步骤2;

2)读取长参数内容,检查是否bd_value(依赖字符串)并且bc_value(冲突字符串),用户已经自定义,如果都已经自定义,那么进入步骤步骤8和步骤9,反之,进入步骤3,这里很明显长参数中并未指定-d-c参数,那么此处进入步骤3;

3)获得build-depends字段的字符串,获得build-conflicts字段的字符串;

4)判断长参数列表中参数-A是否指定,如果-A,已经指定,那么忽略build-depends-arch的内容,如果没有指定-A参数,那么进入步骤5,此时未指定-A参数,那么进入步骤5;

5)build-depends-arch字段连接到build-depends中去,将build-conflicts-arch字段连接到build-conflicts中去;

6)判断长参数列表中参数-B是否指定,如果-B,已经指定,那么忽略build-depends-indep字段的内容,反之,进入步骤7;此时未指定-B,那么进入步骤7;

7)build-depends-indep字段连接到build-depends中,形成依赖列表,将build-depends-indep连接到build-conflicts字段中,形成冲突列表;

8) 判断依赖列表是否为空,如果为空,那么进入步骤 ,反之,从包名和版本号对比/var/lib/dpkg数据库中已经安装二进制包的列表,列出缺少的依赖包;

9) 判断冲突列表是否为空,如果为空,那么进入步骤, 反之,从包名和版本号对比/var/lib/dpkg数据库中已经安装的二进制包的列表,列出冲突包;

10) 结束

Caveats:另外如果以后在dpkg-checkbuilddeps 长选项的时候,可以参照流程图去推理。

 

 




© 著作权归作者所有

共有 人打赏支持
大培哥
粉丝 5
博文 25
码字总数 29758
作品 0
浦东
程序员
Ubuntu14.04 Mininet中将Openvswitch升级步骤

首先下载Mininet 出现以上问题的解决办法是将linux的内核从4.x降到3.x就可以了降低内核版本 下载Openvswitch对应的版本 Openvswitch下载对应的版本 由于版本问题,最后完成后会出现ovs-contr...

原子_弹 ⋅ 2016/12/18 ⋅ 0

[Ubuntu]安装原生迅雷,让下载更简单

1.安装编译环境 sudo apt-get install git build-essential devscripts 安装编译环境 2.选定一个自己的目录,下载源代码 git clone git://github.com/Xinkai/XwareDesktop.git 下载源代码 3....

xinke0802 ⋅ 03/26 ⋅ 0

ubuntu安装迅雷软件

1.安装编译环境 sudo apt-get install git build-essential devscripts 2.下载源代码,自己找一个目录执行以下指令 git clone git://github.com/Xinkai/XwareDesktop.git 3.此时,看到目录下...

小浩浩2015 ⋅ 2016/12/25 ⋅ 0

ubuntu12.04--无法获得锁 /var/lib/dpkg/lock - open (1...

结果终端提示: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?” 解决办法如下: 1.终端输入 ps -aux ,列出进...

cookqq ⋅ 2012/11/10 ⋅ 0

dpkg 的常规用法

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。 下面是它的一些命令解释: 1)安装软件 命令行:dpkg -i <.deb file name> 示例:dpkg -i avg71flmr...

独钓渔 ⋅ 2013/06/18 ⋅ 0

apt-get出现失败时

apt-get出现失败的情况 任何安装失败可能导致dpkg工具不可以用了,总是提示xxx依赖问题不能解决。提供以下解决办法: cd /var/lib/dpkg/info/ ls | grep "你的软件名" #查看到的哪些就是必须...

winter199 ⋅ 2017/03/17 ⋅ 0

ubuntu安装和查看已安装

说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。 一、Ubuntu中软件安装方法...

pumpkinHua ⋅ 2014/03/29 ⋅ 0

Ubuntu 中软件的安装、卸载以及查看的方法总结(转)

说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。 一、Ubuntu中软件安装方法...

晨曦之光 ⋅ 2012/04/12 ⋅ 0

Debian 软件包的管理

一、debian软件管理工具 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb或者直接双击此文件dpkg 是Debian Package的简写,是为Debian 专门开发...

__稻草人__ ⋅ 2015/09/10 ⋅ 0

dpkg 与apt-get

dpkg -i package.deb sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = ——fix-missing" 显示该包的版......

Oscarfff ⋅ 2016/07/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部