it-swarm-ja.com

debパッケージの制御ファイルを簡単に編集する方法

Debパッケージの制御ファイルを簡単に編集する方法はありますか?どのシステム(Linux、Mac OS Xなど)でもかまいません。自動化するための優れたスクリプトを誰かが知っているかもしれません。

7
cheers

これをチェックしてください: 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"

viを任意のエディターに変更します。シェルスクリプトとして保存します(つまり、debcontrol.sh)、実行可能にします(chmod +x)、最初のパラメータとしてdebを使用します(./debcontrol.sh xxxxx.deb

10
syockit

buntuフォーラム のスクリプトを実行するには、いくつかの変更が必要です。他の投稿への編集が承認されなかったため、これが私の更新バージョンです。

#!/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"

シェルスクリプトとして保存し、実行可能にします(chmod +x videbcontrol)、次のように実行します。

fakeroot videbcontrol package.deb

fakerootを使用することが重要です。そうしないと、ファイルの所有権が現在のユーザーにリセットされます。

5
Tobu