etckeeper、apt、および/またはdpkgロック機構の公式文書はどこにありますか?

etckeeper、apt、および/またはdpkgロック機構の公式文書はどこにありますか?

コンテキスト:

ロックを追加したいetckeeper/apt特別なバックアップ中のフック活動。

その目的は、パッケージ全体の整合性を維持することです。たとえば、パッケージのインストールが完了するのを待ち、特別なバックアップが完了するまで新しいインストールが開始されないようにします。

以下のシェルスクリプトを見つけます。予約されたことロックしようとしているようです。

/var/cache/etckeeper/packagelist.pre-install

しかし、実際には原子的に実行されないので、欠陥があります。私の考えでは予約されたことシェルスクリプトは次の一部です。Ubuntu16.04設置(の一部ではありません)マネージャーをお待ちください解放する。 欠陥のあるロックコードは次のとおりです。

探すマネージャーをお待ちください/var/cache/etckeeper/packagelist.pre-installロックファイルの使用に関するドキュメントです。文書が見つかりません。しかし、/var/cache/etckeeper/packagelist.pre-installロックされたファイルとして処理せずに書き込むことができるスクリプトファイルが見つかりました。今は、/var/cache/etckeeper/packagelist.pre-installロックファイルインターフェイスとして使用する意図ではないと仮定します。マネージャーをお待ちください/var/cache/etckeeper/packagelist.pre-installEtckeeper内部スクリプトは、以下のようにロックファイルとは見なされません。

Q1:etckeeperのロックメカニズムに関する文書がある場合(または存在する場合)、または説明を要求できる開発者ポータルがありますか?

質問も多く、議論も多かったです。スタック交換利用サイトについて

/var/lib/apt/lists/lock    (we call it apt lock below)

そして

/var/lib/dpkg/lock     (we call it dpkg lock below)

南京錠簡単そして包装袋それぞれ。すべての通信は、固定ロック、診断方法、およびロック解除方法に関連しています。しかし、正式な言及は見つかりませんでした。簡単そして包装袋これらのロックファイルは、公式インタフェースのドキュメントとして機能するように指定されています。

質問2:関連文書はありますか?簡単ロックおよび/または包装袋パブリックインターフェイスとしてのロック機構?

不良ロック試行シェルスクリプトが原因で発生する可能性がありますUbuntu16.04:

$ sudo cat /etc/cron.daily/etckeeper
#!/bin/sh
set -e
if [ -x /usr/bin/etckeeper ] && [ -e /etc/etckeeper/etckeeper.conf ]; then
    . /etc/etckeeper/etckeeper.conf
    if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then
        # avoid autocommit if an install run is in progress
        lockfile=/var/cache/etckeeper/packagelist.pre-install
        if [ -e "$lockfile" ] && [ -n "$(find "$lockfile" -mtime +1)" ]; then
            rm -f "$lockfile" # stale
        fi
        if [ ! -e "$lockfile" ]; then
            AVOID_SPECIAL_FILE_WARNING=1
            export AVOID_SPECIAL_FILE_WARNING
            if etckeeper unclean; then
                etckeeper commit "daily autocommit" >/dev/null
            fi
        fi
    fi
fi

マネージャーを待っています内部的には、シェル scipt はpackagelist.pre-installロックとして処理せずに作成するため、ロックインターフェイスとして使用する意図ではないようです。

$ sudo cat /etc/etckeeper/pre-install.d/10packagelist 
#!/bin/sh
# This list will be later used when committing.
mkdir -p /var/cache/etckeeper/
etckeeper list-installed > /var/cache/etckeeper/packagelist.pre-install
etckeeper list-installed fmt > /var/cache/etckeeper/packagelist.fmt

答え1

  1. クローン作業はインストール/var/cache/etckeeper/packagelist.pre-installが処理されているという証拠と見なされるため、まだ何も保管してはいけません。このファイルはロックファイルではありませんが、cronジョブはそれを代替ファイルとして使用しています。

    しかし、etckeeperロックファイルがあるかどうか、特に心配しません。管理されたツリーの一貫したバックアップが必要な場合は、etckeeperVCS機能を使用してください(ただし、無視されるファイルも忘れないでください)。

  2. これらのdpkgロックはパブリックインターフェイスとして文書化されています(簡単ですが)。frontend.txt/usr/share/doc/dpkg-dev/frontend.txt存在するdpkg-dev)。

関連情報