我的之前的一篇博客尝试了从源码制作安装包.deb
文件,通过checkinstall命令从源码编译打包了PCL库。然后我想如果我需要更改这个包的一些信息怎么办,比如这个包需要其他一些依赖项而我之前打包的时候忘了添加这个依赖项。我查了checkinstall的手册和一些博客,但貌似checkinstall并不提供更改deb包的功能(也有可能是我没有发现)。然后我发现可以使用dpkg
命令进行deb包的信息查看、更改等,dpkg
这个命令可以说非常强大了,具体的请man dpkg
,这里只介绍我用到的功能。
使用dpkg-deb相关命令可以查看deb包的相关信息:
dpkg-deb -c
:列出包所含的内容dpkg-deb -W
:打印安装包的简明信息dpkg-deb -I
:打印控制信息mkdir extract
,在当前目录下新建文件夹,用于存放解压后的内容mkdir extract/DEBIAN
,新建DEBIAN目录用于存放包的控制信息dpkg -X ./opencv_4.2.0_amd64.deb extract/
,将要修改的deb包解压到extract目录下,可以看到:dpkg-deb -e ./opencv_4.2.0_amd64.deb extract/DEBIAN/
,将deb包的控制信息提取到DEBIAN目录下,然后更改该目录下的控制信息即可。该目录下会有一个conffiles和一个control,control内容与dpkg-deb -I opencv_4.2.0_amd64.deb
打印出来的内容相似:#!/bin/bash
if cat /etc/apt/sources.list |grep '^deb http://security.ubuntu.com/ubuntu xenial-security main$';then
echo 'the source already added in /etc/apt/source.list file';
else
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
fi
另外如果创建了脚本,需要更改其权限,给其添加执行权限sudo chmod a+x preinst
。
完成了一上更改之后需要将其打包回一个deb文件,dpkg-deb -b ./extract opencv_4.2.0_amd64.deb
。
现在dpkg-deb -I opencv_4.2.0_amd64.deb
查看其更改后的信息:
联系客服