重新打包deb

| 分类 linux  | 标签 重新打包deb 

前言

有些时候需要重新打包deb文件。比如近期升级了内核,而linux-firmware中的固件版本太老,找到一个firmware_bnx2x deb 包,但是无奈有些文件和linux-firmware的文件冲突,因此,需要剔除掉重复的文件。这就牵扯的如何重打包。

方法

1 创建工作台目录,会讲deb的内容解压到extract目录

mkdir -p extract/DEBIAN

2 提取deb中的某些文件到extract目录

root@node-186:~# dpkg-deb -x firmware-bnx2x_20160110-1_all.deb  extract/
root@node-186:~# ll extract/
total 28
drwxr-xr-x  5 root root  4096 Jan 11  2016 ./
drwx------ 11 root root 12288 Jul 19 18:03 ../
drwxr-xr-x  2 root root  4096 Jul 19 18:03 DEBIAN/
drwxr-xr-x  3 root root  4096 Jan 11  2016 lib/
drwxr-xr-x  3 root root  4096 Jan 11  2016 usr/

3 提取control文件到extract/DEBIAN

dpkg-deb -e firmware-bnx2x_20160110-1_all.deb extract/DEBIAN

4 此事,所有的文件都已经就位,做你想做的任何修改

root@node-186:~/extract/lib/firmware/bnx2x# ll
total 3224
drwxr-xr-x 2 root root   4096 Jan 11  2016 ./
drwxr-xr-x 3 root root   4096 Jan 11  2016 ../
-rw-r--r-- 1 root root 161368 Jan 11  2016 bnx2x-e1-7.0.29.0.fw
-rw-r--r-- 1 root root 164392 Jan 11  2016 bnx2x-e1-7.10.51.0.fw
-rw-r--r-- 1 root root 170192 Jan 11  2016 bnx2x-e1-7.12.30.0.fw
-rw-r--r-- 1 root root 170096 Jan 11  2016 bnx2x-e1-7.13.1.0.fw
-rw-r--r-- 1 root root 163592 Jan 11  2016 bnx2x-e1-7.8.19.0.fw
-rw-r--r-- 1 root root 168680 Jan 11  2016 bnx2x-e1h-7.0.29.0.fw
-rw-r--r-- 1 root root 173016 Jan 11  2016 bnx2x-e1h-7.10.51.0.fw
-rw-r--r-- 1 root root 178984 Jan 11  2016 bnx2x-e1h-7.12.30.0.fw
-rw-r--r-- 1 root root 178992 Jan 11  2016 bnx2x-e1h-7.13.1.0.fw
-rw-r--r-- 1 root root 171920 Jan 11  2016 bnx2x-e1h-7.8.19.0.fw
-rw-r--r-- 1 root root 289848 Jan 11  2016 bnx2x-e2-7.0.29.0.fw
-rw-r--r-- 1 root root 321456 Jan 11  2016 bnx2x-e2-7.10.51.0.fw
-rw-r--r-- 1 root root 321320 Jan 11  2016 bnx2x-e2-7.12.30.0.fw
-rw-r--r-- 1 root root 320936 Jan 11  2016 bnx2x-e2-7.13.1.0.fw
-rw-r--r-- 1 root root 310440 Jan 11  2016 bnx2x-e2-7.8.19.0.fw

#下面文件,在Linux-firmware deb中也存在,所以冲突了,删除之,并重新打包
root@node-186:~/extract/lib/firmware/bnx2x# rm bnx2x-e1h-7.0.29.0.fw 
root@node-186:~/extract/lib/firmware/bnx2x# rm bnx2x-e1-7.0.29.0.fw
root@node-186:~/extract/lib/firmware/bnx2x# rm bnx2x-e2-7.0.29.0.fw

5 创建build子目录,并重新打包deb到build子目录下

mkdir build
dpkg-deb -b extract/ build

结尾语

注意,本文的终点是重新打包deb,并非处理deb包的冲突,其实本文重打包firmware-bnx2x并非优雅解决之道。


上一篇     下一篇