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

时间:2013-08-21 19:02:48

标签: 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包。

4 个答案:

答案 0 :(得分:20)

在阅读Aleks-Daniel Jakimenko-A.'s answerReallumpi's one并对现实案例进行一些测试后,您应该采取以下措施:

  1. 使用 True(逗号)无空格分隔所需的包裹;
  2. 指定包的版本时,
  3. 转义,(括号;
  4. 指定包的版本时,
  5. 转义)(更大标志);
  6. 实施例

    >

    输出

    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
    

答案 1 :(得分:9)

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

答案 2 :(得分:7)

您需要转义括号,例如--requires "package \(= 1.0\)"

答案 3 :(得分:1)

这个答案详细阐述了如何在shell脚本中正确格式化标点符号,以获得多个软件包依赖关系,以便checkinstall工作。

PAK_USER='. , ? ! : + - ^ _ { } = $ % @ [ ] / ; # & * ~ ( ) < > \ |'
PAK_NEEDS='. , ? ! : + - ^ _ { } = $ % @ [ ] / ; # & * ~ ( ) < > \ |'
PAK_NEEDS=$(echo "$PAK_NEEDS" | perl -pe 's/([[:punct:]])/\\\1/g')

0 -  Maintainer: [ . , ? ! : + - ^ _ { } = $ % @ [ ] / ]
1 -  Summary: [ This is a punctuation escape test. ]
10 - Requires: [ . , ? ! : + - ^ _ { } = $ % @ [ ] / ; # & * ~ ( ) < > \ | ]

需要转义的内容似乎是shell操作符; # & * ~ ( ) < > \ |有些会返回值* ~终止行; #或将所有内容清除( ) < > | & \ }因为它是转义字符而消失。

正则表达式perl -pe 's/([[:punct:]])/\\\1/g'转义所有标点字符,这些字符过分但效果很好。单引号和双引号已经存在问题,以及$,除非被单引号包围,否则它将会扩展。

如果您不想考虑转义,请使用正则表达式并谨慎使用' " $

PAK_NEEDS="libasound2 (>= 1.0.16), libavcodec57 (>= 7:3.4.2) | libavcodec-extra57 (>= 7:3.4.2), libavformat57 (>= 7:3.4.2), libavutil55 (>= 7:3.4.2), libboost-filesystem1.65.1, libboost-system1.65.1, libc6 (>= 2.27), libcurl4 (>= 7.16.2), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgl1, libglu1-mesa | libglu1, libmad0 (>= 0.15.1b-3), libsdl2-2.0-0 (>= 2.0.8), libsdl2-image-2.0-0 (>= 2.0.2), libsdl2-net-2.0-0 (>= 2.0.1), libsdl2-ttf-2.0-0 (>= 2.0.14), libsndfile1 (>= 1.0.20), libspeex1 (>= 1.2~beta3-1), libspeexdsp1 (>= 1.2~beta3.2-1), libstdc++6 (>= 5.2), libswscale4 (>= 7:3.4.2), libvorbisfile3 (>= 1.1.2), libzzip-0-13 (>= 0.13.56), zlib1g (>= 1:1.1.4)"
PAK_NEEDS=$(echo "$PAK_NEEDS" | perl -pe 's/([[:punct:]])/\\\1/g')
10 - Requires: [ libasound2 (>= 1.0.16), libavcodec57 (>= 7:3.4.2) | libavcodec-extra57 (>= 7:3.4.2), libavformat57 (>= 7:3.4.2), libavutil55 (>= 7:3.4.2), libboost-filesystem1.65.1, libboost-system1.65.1, libc6 (>= 2.27), libcurl4 (>= 7.16.2), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgl1, libglu1-mesa | libglu1, libmad0 (>= 0.15.1b-3), libsdl2-2.0-0 (>= 2.0.8), libsdl2-image-2.0-0 (>= 2.0.2), libsdl2-net-2.0-0 (>= 2.0.1), libsdl2-ttf-2.0-0 (>= 2.0.14), libsndfile1 (>= 1.0.20), libspeex1 (>= 1.2~beta3-1), libspeexdsp1 (>= 1.2~beta3.2-1), libstdc++6 (>= 5.2), libswscale4 (>= 7:3.4.2), libvorbisfile3 (>= 1.1.2), libzzip-0-13 (>= 0.13.56), zlib1g (>= 1:1.1.4) ]