大量的试验和在此错误后是什么似乎工作最好暂且:
期间(后)安装时间
我做的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的安装是照顾内规则文件的通过连续调用安装-m
关于依赖性,Tshepang是对的,就应该在控制文件中声明。 但是,我还没有弄清楚,在某些情况下(机器),如果它们丢失,它们会自动安装,而在其他情况下,只要依赖包丢失,安装就会中止。