コンテキスト:
ロックを追加したい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-install
Etckeeper内部スクリプトは、以下のようにロックファイルとは見なされません。
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
クローン作業はインストール
/var/cache/etckeeper/packagelist.pre-install
が処理されているという証拠と見なされるため、まだ何も保管してはいけません。このファイルはロックファイルではありませんが、cronジョブはそれを代替ファイルとして使用しています。しかし、
etckeeper
ロックファイルがあるかどうか、特に心配しません。管理されたツリーの一貫したバックアップが必要な場合は、etckeeper
VCS機能を使用してください(ただし、無視されるファイルも忘れないでください)。これらの
dpkg
ロックはパブリックインターフェイスとして文書化されています(簡単ですが)。frontend.txt
(/usr/share/doc/dpkg-dev/frontend.txt
存在するdpkg-dev
)。