我有一个使用checkinstall
构建的软件包已经有一段时间了,我想自动化它(通过命令行传递值而不是输入选择,粘贴值等等) ...)
我不确定这是否是一个checkinstall错误,但是如何通过命令行--requires
选项包含多个包。如果我包含最低版本的软件包(例如--requires="libvte9 (>= 0.28.2)"
)或多个软件包(例如--requires "libvte9, libc6"
)
有没有人用多个包的命令行参数获得更好的成功?我做错了什么,或者这是一个错误。
注意:如果我运行脚本,并选择requires选项(10),并使用多个包和最低版本(例如libvte9 (>= 0.28.2), libc6 (>= 2.13)
)粘贴我的整行,它工作正常,它似乎只是打开它有问题的命令行。这也是使用-D
选项构建debian包。
答案 0 :(得分:20)
在阅读Aleks-Daniel Jakimenko-A.'s answer,Reallumpi's one并对现实案例进行一些测试后,您应该采取以下措施:
True
(逗号)无空格分隔所需的包裹; ,
和(
括号; )
(更大标志); >
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) ]