如何使用checkinstall管理多个包依赖项?

Jef*_*ger 13 bash debian checkinstall

我有一个我已经使用checkinstall了一段时间的包,我想自动化它(通过命令行传递值而不是键入选择,粘贴值等等)

我不确定这是否是一个checkinstall错误,但是如何通过命令行--requires选项包含多个包.如果我包括最小版本的包(例如--requires="libvte9 (>= 0.28.2)")或多个包(例如--requires "libvte9, libc6"),它似乎是barf

有没有人用多个包的命令行参数获得更好的成功?我做错了什么,或者这是一个错误.

注意:如果我运行脚本,并选择requires选项(10),并使用多个软件包和最低版本粘贴我的整行(例如libvte9 (>= 0.28.2), libc6 (>= 2.13),它工作正常,它似乎在命令行上它有问题.这也是使用该-D选项构建debian包.

Édo*_*pez 21

阅读了Aleks-Daniel Jakimenko-A.的回答,Reallumpi 的回答,并对现实案例进行了一些测试,这是你应该做的:

  1. 使用,(逗号)没有空格来分隔所需的包;
  2. ()指定包的版本时转义括号 ;
  3. >指定包的版本时转义(更大的符号) ;

make && sudo -k checkinstall \
    --pkgsource="https://github.com/raboof/nethogs/" \
    --pkglicense="GPL2" \
    --deldesc=no \
    --nodoc \
    --maintainer="$USER\\<$USER@$HOSTNAME\\>" \
    --pkgarch=$(dpkg \
    --print-architecture) \
    --pkgversion="0.8.1" \
    --pkgrelease="SNAPSHOT" \
    --pkgname=nethogs \
    --requires="libc6 \(\>= 2.4\),libgcc1 \(\>= 1:4.1.1\),libncurses5 \(\>= 5.5-5~\),libpcap0.8 \(\>= 0.9.8\),libstdc++6 \(\>= 4.1.1\),libtinfo5" \
    make install
Run Code Online (Sandbox Code Playgroud)

产量

*****************************************
**** Debian package creation selected ***
*****************************************

This package will be built according to these values:

0 -  Maintainer: [ elopez<elopez@> ]
1 -  Summary: [ Net top tool grouping bandwidth per process ]
2 -  Name:    [ nethogs ]
3 -  Version: [ 0.8.1 ]
4 -  Release: [ SNAPSHOT ]
5 -  License: [ GPL2 ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ https://github.com/raboof/nethogs/ ]
9 -  Alternate source location: [  ]
10 - Requires: [ libc6 (>= 2.4),libgcc1 (>= 1:4.1.1),libncurses5 (>= 5.5-5~),libpcap0.8 (>= 0.9.8),libstdc++6 (>= 4.1.1),libtinfo5 ]
11 - Provides: [ nethogs ]
12 - Conflicts: [  ]
13 - Replaces: [  ]
Run Code Online (Sandbox Code Playgroud)


Ale*_*-A. 10

checkinstall用于,分隔多个包.就是这个,一个逗号,周围没有任何空格.


小智 7

你需要逃避括号,例如 --requires "package \(= 1.0\)"