GNU/Linux >> Linux の 問題 >  >> Ubuntu

パッケージの最初のインストール時にのみスクリプトを実行し、アップグレード中には実行しない方法は?

最近、ソフトウェアの一部をパッケージ化し、Launchpadで公開し始めました。インストールと削除は正常に機能しますが、パッケージをあるバージョンから次のバージョンにアップグレードするのは問題があります。

問題は、パッケージの最初のインストール時にのみ実行する必要のあるスクリプトがいくつかあることです。これらのスクリプトは、DBにデータを入力したり、ユーザーを作成したりします。現在、package.postinst configure)で呼び出されています。 セクション。ただし、これにより、アップグレード中に呼び出され、図に示されます。

パッケージの最初のインストール中にのみ実行され、アップグレード中には実行されないメンテナスクリプトを.debパッケージに含める方法はありますか?または、初期設定スクリプトを.debパッケージに含めるための洗練された方法は何でしょうか?

承認された回答:

debian/preinstを使用 インストール時にアクションを実行できるが、アップグレードはできないファイル。

#!/bin/sh
set -e

case "$1" in
    install)
        # do some magic
        ;;

    upgrade|abort-upgrade)
        ;;

    *)
        echo "postinst called with unknown argument `$1'" >&2
        exit 0
        ;;
esac

#DEBHELPER#

exit 0

名前が示すように、これはパッケージがインストールされる前に実行されます。したがって、ここで必要なことを実行できない可能性があります。ほとんどのパッケージは、postinstの構成段階でテストするだけです。 ユーザーがすでに作成されている場合。こちらがcolord

$ cat  /var/lib/dpkg/info/colord.postinst
#!/bin/sh

set -e

case "$1" in
    configure)

# create colord group if it isn't already there
    if ! getent group colord >/dev/null; then
            addgroup --quiet --system colord
    fi

# create the scanner group if it isn't already there
    if ! getent group scanner >/dev/null; then
        addgroup --quiet --system scanner
    fi

# create colord user if it isn't already there
    if ! getent passwd colord >/dev/null; then
            adduser --system --ingroup colord --home /var/lib/colord colord 
        --gecos "colord colour management daemon"
        # Add colord user to scanner group
        adduser --quiet colord scanner
    fi

# ensure /var/lib/colord has appropriate permissions
    chown -R colord:colord /var/lib/colord

    ;;
esac    



exit 0

Ubuntu
  1. CentOS8にPythonをインストールして実行する方法

  2. シロアリをインストールする方法は?

  3. 再開後および画面のロック解除後にスクリプトを実行するにはどうすればよいですか?

  1. Ubuntu20.04にSnapPackageManagerをインストールして使用する方法

  2. UbuntuでDockerをインストールしてDockerコンテナを実行する方法

  3. キックスタート インストール中に RPM パッケージをインストールする方法

  1. Ubuntu 18.04にChefサーバー、ワークステーション、Chefクライアントをインストールする方法

  2. スクリプトを実行する方法??

  3. サブディレクトリではなく現在のディレクトリのみで「find」コマンドを実行する方法