Проблема с пакетом .deb - PullRequest
       34

Проблема с пакетом .deb

3 голосов
/ 18 ноября 2009

Я распространяю одно из своих приложений, используя пакет .deb, но у меня проблема с одним из файлов.

В дистрибутив входит файл базы данных, который постоянно обновляется приложением, при новой установке я хочу, чтобы установщик скопировал новый пустой файл БД в систему пользователей, но при обновлении я хочу, чтобы установщик оставил существующий скопируйте на место (перезапись приведет к потере всех пользовательских данных).

В настоящее время я включил файл в файл 'conffiles', так что установщик всегда спрашивает пользователя, перезаписывать существующий файл или нет, но это не то поведение, которое мне нужно - перезапись файла никогда правильная вещь, и я обеспокоен тем, что пользователь может выбрать неправильную опцию во время обновления и передать свои данные.

Есть ли способ сообщить установщику, что если файл db уже существует, просто оставьте его в покое и не спрашивайте пользователя, что делать?

1 Ответ

4 голосов
/ 18 ноября 2009

Да, используйте скрипт preinst / postinst. Обычный метод - присвоить файлу в пакете специальное имя, оканчивающееся на dpkg-new, например / var / lib / myapp / mydb.data.dpkg-new . Затем напишите сценарий ' postinst ' для помещения в каталог DEBIAN вашего пакета, чтобы проверить существование базы данных, и соответственно переименуйте или удалите файл dpkg-new, что-то вроде :

#!/bin/bash

if [ -f /var/lib/myapp/mydb.data ]; then
    rm /var/lib/myapp/mydb.data.dpkg-new
else
   mv /var/lib/myapp/mydb.data.dpkg-new /var/lib/myapp/mydb.data
fi
...