Есть ли механизм обновления / создания базы данных на пакете Ubuntu .deb?
-
12-12-2019 - |
Вопрос
Например, платформа Android имеет что-то вроде:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE ....");
db.execSQL("ATER TABLE ....");
onCreate(db);
}
.
Что очень хорошо обрабатывать обновления и т. Д.
Есть ли подобная стратегия для пакетов .deb?Я знаю, что я могу использовать Debian / Control, Debian / Fruinst, чтобы получить текущую версию, Debian / PostInst для обработки, затем обновления базы данных, но это не так аккуратно из раствора.
Решение
Нету, нет.Не нужно быть намного менее чистым, хотя.Ваша постинст просто должен иметь что-то вроде
case "$1" in
configure)
oldver=$2
if dpkg --compare-versions "$oldver" -lt 1.2.3; then
sqlite3 mydb.db 'DROP TABLE W...'
sqlite3 mydb.db 'ALTER TABLE X...'
fi
if dpkg --compare-versions "$oldver" -lt 1.3.4; then
sqlite3 mydb.db 'DROP TABLE Y...'
sqlite3 mydb.db 'ALTER TABLE Z...'
fi
;;
...
esac
. Не связан с StackOverflow