打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ubuntu下从源码制作安装包deb包与更改deb包信息_从源码编译deb
userphoto

2023.05.29 广东

关注

我的之前的一篇博客尝试了从源码制作安装包.deb文件,通过checkinstall命令从源码编译打包了PCL库。然后我想如果我需要更改这个包的一些信息怎么办,比如这个包需要其他一些依赖项而我之前打包的时候忘了添加这个依赖项。我查了checkinstall的手册和一些博客,但貌似checkinstall并不提供更改deb包的功能(也有可能是我没有发现)。然后我发现可以使用dpkg命令进行deb包的信息查看、更改等,dpkg这个命令可以说非常强大了,具体的请man dpkg,这里只介绍我用到的功能。

文章目录

  • 查看deb包信息
  • 修改deb包信息
  • 使用dpkg重新打包

查看deb包信息

使用dpkg-deb相关命令可以查看deb包的相关信息:

  • dpkg-deb -c:列出包所含的内容
  • dpkg-deb -W:打印安装包的简明信息
  • dpkg-deb -I:打印控制信息

修改deb包信息

  1. 解压deb包内容与控制信息
    • 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打印出来的内容相似:

      该文件指定该软件包的包名、版本、依赖等信息。
  2. 修改相关文件
    想要更改包的依赖项直接在control中改就可以,比如我上面打包opencv时Depends缺了个jasper,jasper-dev,然后我在这里添上。实际上DEBIAN目录下保存包的控制信息,不仅可以修改这个control中有的信息,还有设置安装之前执行的脚本,安装之后执行的脚本以及卸载前后执行的脚本,比如在DEBIAN目录下新建:
    • preinst文件:指定安装之前执行的脚本命令,一般为正在被升级的包停止相关服务,直到升级或安装完成,参考。这里因为jasper与libjasper-dev安装时需要添加一个安装源,我的preinst脚本如下——
    #!/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
    
    • postinst文件:在deb包安装完毕后执行一些配置工作等。这里我没有创建
    • prerm文件:卸载钱执行的脚本
    • postrm文件:卸载后执行脚本

另外如果创建了脚本,需要更改其权限,给其添加执行权限sudo chmod a+x preinst

使用dpkg重新打包

完成了一上更改之后需要将其打包回一个deb文件,dpkg-deb -b ./extract opencv_4.2.0_amd64.deb
现在dpkg-deb -I opencv_4.2.0_amd64.deb查看其更改后的信息:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
输入标题提取、修改、重建deb包
ubuntu下如何获取源码包和源码
制作Ubuntu deb包的三种方法
在Debian中打造属于自己的deb包
linux下制作deb的方法总结
Ubuntu下如何安装.deb文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服