Lineu中 .deb 包的使用,修改。

为何物

.deb 是 Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。

怎么用

制作.deb包

  • 原理
  1. deb包通常包含两部分:控制信息(DEBIAN目录)、安装内容(模拟”/“目录)
  2. 通过解开已有的 deb 包看其中内容
    • 释放安装内容到dirname目录中
      1
      dpkg -X xxx.deb dirname
    • 释放控制信息到当前目录下的DEBIAN子目录中
      1
      dpkg -e xxx.deb

准备

1
sudo apt-get install dh-make checkinstall

下载软件源码包

  • 使用checkinstall方法创建deb包
    • checkinstall 不仅可以生成 deb 包,还可以生成 rpm 包,使用简单。
      1
      2
      3
      4
      tar xvjf fceu-0.98.12.src.tar.bz2 # 解包
      cd fceu;./configure;make # 编译
      checkinstall -D -install=no --pkgversion=0.98 --pkgname=fceuxy make install
      # 制作deb包 此时当前目录下生成了deb包。
  • 使用dpkg方法创建deb包
    • dpkg是最基本的制作deb包的方法,推荐使用
      1
      2
      3
      4
      5
      tar xvjf fceu-0.98.12.src.tar.bz2 # 解包
      mv fceu fceu-0.98 # 改目录名为 包名-版本号
      cd fceu-0.98
      dh_make -f ../fceu-0.98.12.src.tar.bz2
      # 生成制作deb包所需的默认信息
      此时当前目录下生成了debian目录,此时通常修改两个文件: 1. 修改debian/control文件,配置你的信息,具体字段见参考资料部分 2. 修改debian/rules脚本,它决定编译参数(也可以不改)
      1
      2
      :::bash
      dpkg-buildpackage -rfakeroot
      此时可以看到,上层目录中已建立了deb包。

修改已有deb包

  • 自己创建deb所需目录结构(控制信息和安装内容),然后打包,一般使用这种方法来修改已有的deb包,而不是新建deb包,命令如下:
    1
    2
    3
    4
    mkdir -p test
    dpkg -X xxx.deb test # 解包安装内容
    cd test
    dpkg -e ../xxx.deb # 解包控制信息
  • 修改DEBIAN目录下的内容,然后重新打包:
    1
    2
    cd ../
    dpkg -b test xxx_new.deb # 重新打包
  • 修改DEBIAN目录下的内容,然后重新打包:
    1
    2
    cd ../
    dpkg -b test xxx_new.deb # 重新打包

deb包常用命令

  • 查看deb包含有哪些文件

    1
    2
    dpkg -c xxx.deb # 安装前根据deb文件查看
    dpkg -L debname # 安装后根据包名查看
  • 查看某个文件属于哪个deb包

    1
    dpkg -S filefullpath
  • 根据软件包名模糊检索

    1
    2
    3
    4
    dpkg -l|grep xxx
    # 在已安装的软件包列表中搜索
    apt-cache search xxx
    # 在源中的所有软件包列表中搜索
  • 下载源码包

    1
    apt-get source packagename

安装

  • 安装deb包
    1
    dpkg -i xxx.deb

卸载

  • 卸载deb包

    1
    dpkg -r debname
  • 完全卸载deb包(包含配置文件)

    1
    dpkg -P debname

Via


本站由 VITAN 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。