您当前的位置:首页 > 计算机 > 系统应用 > Linux

直接生成deb软件包的方法

时间:07-20来源:作者:点击数:

1、有现成的二进制deb包想修改内容后再打包

  1. 先解压deb包出来
actionchen@actionchen-PC:~/deb-test$ dpkg-deb -R libfaudio0_20.01-0_buster_i386.deb libfaudio
actionchen@actionchen-PC:~/deb-test$ ls
libfaudio  libfaudio0_20.01-0_buster_i386.deb
actionchen@actionchen-PC:~/deb-test$ tree .
.
├── libfaudio
│   ├── DEBIAN
│   │   ├── control
│   │   ├── md5sums
│   │   ├── shlibs
│   │   ├── symbols
│   │   └── triggers
│   └── usr
│       ├── lib
│       │   └── i386-linux-gnu
│       │       ├── libFAudio.so.0 -> libFAudio.so.0.20.01
│       │       └── libFAudio.so.0.20.01
│       └── share
│           ├── doc
│           │   └── libfaudio0
│           │       ├── changelog.Debian.gz
│           │       ├── copyright
│           │       └── README
│           └── lintian
│               └── overrides
│                   └── libfaudio0
└── libfaudio0_20.01-0_buster_i386.deb

10 directories, 12 files

可以看到用-R解压会把控制文件解压出来,在DEBIAN目录,如果用-x只会解压出实际安装到系统中的文件,当然如果在非deb系的系统上,解压deb包可以用ar解压,因为他用ar压缩的,ar vx xxx.deb这样的格式。

  1. 修改实际的二进制文件后,或者控制文件信息后,重新打包回来
actionchen@actionchen-PC:~/deb-test$ dpkg-deb -b libfaudio/ libfaudio.deb
dpkg-deb: 正在 'libfaudio.deb' 中构建软件包 'libfaudio0'。
actionchen@actionchen-PC:~/deb-test$ ls
libfaudio  libfaudio0_20.01-0_buster_i386.deb  libfaudio.deb
actionchen@actionchen-PC:~/deb-test$ ls -l
总用量 284
drwxr-xr-x 4 actionchen actionchen   4096 1月   7 22:05 libfaudio
-rw-r--r-- 1 actionchen actionchen 141776 1月   7 22:04 libfaudio0_20.01-0_buster_i386.deb
-rw-r--r-- 1 actionchen actionchen 141756 1月   7 22:16 libfaudio.deb
actionchen@actionchen-PC:~/deb-test$ dpkg -I libfaudio.deb
 新格式的 Debian 软件包,格式版本 2.0。
 大小 141756 字节:主控包=4724 字节。
     830 字节,   18 行      control              
     365 字节,    5 行      md5sums              
      23 字节,    1 行      shlibs               
   23058 字节,  680 行      symbols              
      67 字节,    2 行      triggers             
 Package: libfaudio0
 Source: faudio
 Version: 20.01-0~buster
 Architecture: i386
 Maintainer: action chen  <xxx@xxx.com>
 Installed-Size: 416
 Depends: libavcodec58 (>= 7:4.0), libavutil56 (>= 7:4.0), libc6 (>= 2.7), libsdl2-2.0-0 (>= 2.0.9), libstb0 (>= 0.0~git20180212.15.e6afb9c)
 Breaks: libfaudio0 (<< 19.03-0), libfaudio0-amd64 (<< 19.03-0), libfaudio0-i386 (<< 19.03-0)
 Replaces: libfaudio0 (<< 19.03-0), libfaudio0-amd64 (<< 19.03-0), libfaudio0-i386 (<< 19.03-0)
 Section: libs
 Priority: optional
 Multi-Arch: same
 Homepage: https://github.com/FNA-XNA/FAudio
 Description: XAudio sound processing reimplementation - library
  FAudio is a sound processing library that aims to support fully accurate
  DirectX audio capabilities including XAudio2, X3DAudio, XAPO, and XACT3.
  .
  This package provides the library itself.

这个包我就手工修改了控制文件里面的Maintainer字段,可以看到修改后的包查询出来维护者的名字和邮箱都是我修改后的信息了。

2、 没有现成二进制deb包,只想打包你想要的文件为deb

  1. 要想打包你想要的一堆文件或者目录结构为想要的deb格式方便安装,那么必须要的目录结构如下:
actionchen@actionchen-PC:~/deb-test$ tree script/
script/
├── DEBIAN
│   └── control
└── opt
    └── test.sh

2 directories, 2 files

其中控制文件可以从其他软件包里面解压一个出来自己修改就行。

  1. 然后就是直接打包了
actionchen@actionchen-PC:~/deb-test$ dpkg-deb -b script/ script-1.0.deb
dpkg-deb: 正在 'script-1.0.deb' 中构建软件包 'script'。
actionchen@actionchen-PC:~/deb-test$ ls -l
总用量 292
drwxr-xr-x 4 actionchen actionchen   4096 1月   7 22:05 libfaudio
-rw-r--r-- 1 actionchen actionchen 141776 1月   7 22:04 libfaudio0_20.01-0_buster_i386.deb
-rw-r--r-- 1 actionchen actionchen 141756 1月   7 22:16 libfaudio.deb
drwxr-xr-x 4 actionchen actionchen   4096 1月   7 22:24 script
-rw-r--r-- 1 actionchen actionchen    804 1月   7 22:27 script-1.0.deb
actionchen@actionchen-PC:~/deb-test$ dpkg -I script-1.0.deb 
 新格式的 Debian 软件包,格式版本 2.0。
 大小 804 字节:主控包=368 字节。
     209 字节,   13 行      control              
 Package: script
 Source: 
 Version: 1.0
 Architecture: all
 Maintainer: action chen  <xxxn@uh.com>
 Installed-Size: 416
 Depends: 
 Breaks: 
 Replaces:
 Section:
 Priority: optional
 Homepage: 
 Description: test scripts

  1. 最后就是安装验证一下了
actionchen@actionchen-PC:~/deb-test$ sudo apt install ./script-1.0.deb 
请输入密码
[sudo] actionchen 的密码:
验证成功
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
注意,选中 'script' 而非 './script-1.0.deb'
下列软件包是自动安装的并且现在不需要了:
  libddcutil0 libspectre1
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  script
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 0 B/804 B 的归档。
解压缩后会消耗 426 kB 的额外空间。
获取:1 /home/actionchen/deb-test/script-1.0.deb script all 1.0 [804 B]
正在选中未选择的软件包 script。
(正在读取数据库 ... 系统当前共安装有 318294 个文件和目录。)
准备解压 .../deb-test/script-1.0.deb  ...
正在解压 script (1.0) ...
正在设置 script (1.0) ...
actionchen@actionchen-PC:~/deb-test$ ls /opt/
apps  baidunetdisk  containerd  google  kingsoft  lenovo  test.sh  Xilinx

可以看到test.sh已经安装到opt目录下面了。

这么一看,如果打包一些不需要编译的文件或者脚本之类,是非常方便的,就改个文件一条命令的事,当然想在安装后执行什么脚本,触发什么的就得写脚本了。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门