多くの試行錯誤の後、当分の間最もうまく機能していると思われるのは次のとおりです。
sqlite db ファイルは、(ポスト) インストール時に生成されます。
postinst ファイル内で、bash スクリプトとして使用し、次のようにテーブル作成と主キー/外部キーの割り当てステートメントに定数を使用してそれを行いました
#!/bin/bash
set -e
CREATE_TBL_PROBLEMS="CREATE TABLE tblProblems(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL UNIQUE
)"
CREATE_TBL_MAIN="CREATE TABLE tblMain (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
DBVersion TEXT NOT NULL,
DBrDate TEXT NOT NULL)"
CREATE_TBL_EVENTS="CREATE TABLE tblEvents (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
User TEXT NOT NULL,
NoOfInfections INTEGER NOT NULL,
NoOfHealings INTEGER NOT NULL,
DateTime TEXT NOT NULL,
VirusDBID INTEGER NOT NULL,
FOREIGN KEY(tblMainID) REFERENCES tblMain(ID)
)"
CREATE_TBL_ISSUES="CREATE TABLE tblIssues (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
FilePath TEXT NOT NULL,
Inode INTEGER NOT NULL UNIQUE,
ScanEventID INTEGER NOT NULL,
MalwareID INTEGER NOT NULL,
FOREIGN KEY(EventID) REFERENCES tblEvents(ID),
FOREIGN KEY(ProblemID) REFERENCES tblProblems(ID)
)"
主な課題は次のとおりでした。アプリケーションは、一般的な慣行として root が所有する /usr/share/myapplication に配置する必要があり、db ファイル (sqlite) はユーザー所有のファイルにする必要がありました。したがって、後者は次のように /home/user1/.myapplication に配置されました。
USER_HOME=$(eval echo ~${SUDO_USER})
echo "USER HOME IS " ${USER_HOME}
case "$1" in
configure)
mkdir -p "${USER_HOME}"/.myapplication
echo "Creating tables needed for myapplication"
sqlite3 "${USER_HOME}"/.myapplication/mydbfile.sqlite "${CREATE_TBL_MAIN}; ${CREATE_TBL_EVENTS}; ${CREATE_TABLE_ISSUES}; ${CREATE_TBL_PROBLEMS}"
echo "Assigning myapplication.sqlite file to user " "${SUDO_USER}"
chown -R "${SUDO_USER}":"${SUDO_USER}" "${USER_HOME}"/.myapplication/
;;
abort-upgrade|abort-remove|abort-deconfigure)
exit 0
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
myapplication のインストールは、install -m を連続して呼び出すことにより、ルール ファイル内で処理されました。
依存関係については、Tshepang が正しく、制御ファイルで宣言する必要があります。しかし、私はまだそれを理解していません.いくつかのケース(マシン)では、それらが見つからない場合は自動的にインストールされ、他のパッケージでは依存パッケージが見つからないとすぐにインストールが中止されました.