• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • 外设驱动重新打包

    本文使用的是富士施乐的驱动进行举例。

    首先使用fakeroot进行拆包:

    fakeroot dpkg-deb -R fxuosprint-1.0.0.4-1.amd64.deb wq 
    

    该驱动默认结构如下:

    wq
    ├── DEBIAN
    │  ├── conffiles
    │  ├── control
    │  └── md5sums
    ├── etc
    │  └── cups
    │    ├── mimefx.convs
    │    └── mimefx.types
    └── usr
      ├── lib
      │  └── cups
      │    └── filter
      │      ├── pdftopdffx
      │      ├── pdftopjlfx
      │      └── pstopdffx
      └── share
    ​    ├── cups
    ​    │  └── model
    ​    │    └── FujiXerox
    ​    │      └── fxuosprint.ppd.gz
    ​    └── doc
    ​      └── fxuosprint
    ​        ├── changelog.Debian.gz
    ​        └── copyright
    

    按照目录结构进行拆分:

    该驱动包中有以下几点不符合外设打包规范:

    1、DEBIAN/conffiles 该文件用于定义etc目录下的mimefx.convs,mimefx.types文件不会被覆盖安装;

    2、etc/cups/mimefx*文件用于定义驱动中usr/lib/cups/filter目录下的厂商自定义文件的调用。

    3、自定义文件的存放位置有问题

    4、ppd文件进行了gz压缩

    5、帮助手册的位置不对。

    根据这些问题,现在开始逐步改正:

    1、首先先确认自定义文件的位置,根据外设打包规范,这种文件应该放在/opt/厂商英文名/驱动英文名/bin。

    mv usr/lib/cups/filter/p* opt/FujiXerox/fxprint/bin/
    

    2、将ppd文件解压并放在正确的目录;

    gunzip usr/share/cups/model/FujiXerox/fxuosprint.ppd.gz 
    

    3、我看了下驱动中的doc文件,该文件应该是rpm转deb的残留文件,不是真正的帮助手册,所以这一部分先不处理,删掉就好。

    调整完的目录结构如下:

    debug/
    ├── DEBIAN
    │  ├── conffiles
    │  ├── control
    │  └── md5sums
    ├── etc
    │  └── cups
    │    ├── mimefx.convs
    │    └── mimefx.types 
    ├── opt
    │  └── FujiXerox
    │    └── fxprint
    │      └── bin
    │        ├── pdftopdffx
    │        ├── pdftopjlfx
    │        └── pstopdffx
    └── usr
      ├── lib
      │  └── cups
      │    └── filter
      │      └── FujiXerox
      │        └── fxprint
      │          └── bin
      │            ├── pdftopdffx -> /opt/FujiXerox/fxprint/bin/pdftopdffx
      │            ├── pdftopjlfx -> /opt/FujiXerox/fxprint/bin/pdftopjlfx
      │            └── pstopdffx -> /opt/FujiXerox/fxprint/bin/pstopdffx
      └── share
    ​    └── cups
    ​      └── model
    ​        └── FujiXerox
    ​          └── fxuosprint.ppd
    

    目录结构调整完成后,需要修改驱动中自定义文件的调用位置:

    在驱动中查找对应的自定义文件的文件名字段,并做出相应调整

    grep -r pdftopdffx debug/ vim debug/etc/cups/mimefx.convs application/pdf application/vnd.cups-pdfprintfx 0 pdftopdffx
    

    改为

    application/pdf application/vnd.cups-pdfprintfx 0 /usr/lib/cups/filter/FujiXerox/fxprint/bin/pdftopdffx
    

    其他两个包也一样改

    调整完成后修改control文件,创建info文件

    下面是修改后的control文件:

    vim debug/DEBIAN/control
    Package: com.FujiXerox.fxprint 
    Version: 1.0.0.4 Architecture: amd64 
    Maintainer: uos <uos@localhost> 
    Installed-Size: 150 
    Depends: libc6 (>= 2.14), libcups2 (>= 1.4.0) 
    Section: alien 
    Priority: extra 
    Description: Fuji Xerox Printer Driver for UOS
    

    修改后的info文件如下:

      "appid": "com.FujiXerox.fxprint",
      "name": "com.FujiXerox.fxprint",
      "version": "1.0.0.4",
      "arch": ["amd64"],
      "permissions": {
    ​    "autostart": false,
    ​    "notification": false,
    ​    "trayicon": false,
    ​    "clipboard": false,
    ​    "account": false,
    ​    "bluetooth": false,
    ​    "camera": false,
    ​    "audio_record": false,
    ​    "installed_apps": false
      }
    }
    

    修改后重新打包即可:

    fakeroot dpkg-deb -b debug/ com.FujiXerox.fxprint_amd64.deb