che*_*ers 7 debian package-management deb
有没有办法轻松编辑 deb 包中的控制文件。在哪个系统(Linux、Mac OS X 等)上无关紧要也许有人知道一个很好的脚本来使其自动化?
syo*_*kit 10
看看这个:http : //ubuntuforums.org/showthread.php?t=636724 以防万一该线程被删除,我也会在这里发布代码的副本:
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
vi "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -r "$TMPDIR"
Run Code Online (Sandbox Code Playgroud)
更改vi
为任何选择的编辑器。将其保存为 shell 脚本(即debcontrol.sh
),使其可执行(chmod +x
),并使用 deb 作为第一个参数(./debcontrol.sh xxxxx.deb
)
来自Ubuntu 论坛的脚本需要进行一些更改才能运行。由于我对另一篇文章的编辑未获批准,这是我的更新版本。
#!/bin/bash
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modified.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
sensible-editor "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modified.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -r "$TMPDIR"
Run Code Online (Sandbox Code Playgroud)
将其另存为 shell 脚本,使其可执行 ( chmod +x videbcontrol
),然后像这样运行它:
fakeroot videbcontrol package.deb
Run Code Online (Sandbox Code Playgroud)
使用 很重要fakeroot
,否则文件所有权将重置为当前用户。
归档时间: |
|
查看次数: |
9514 次 |
最近记录: |