.deb package conffiles problem
I am distributing one of my applications using a .deb package, but have a problem relating to one of the files.
The distribution includes a database file which is constantly updated by the app, on a fresh install I want the installer to copy a new, empty db file onto the users system, but on an upgrade I want the installer to leave the existing copy in place (overwriting it would result in all the users data getting lost).
Currently I have included the file in the 'conffiles' file, so the installer always asks the user whether to overwrite the ex开发者_开发技巧isting file or not, but this isn't the behaviour I want - overwriting the file is never the right thing to do and I'm concerned that a user may pick the wrong option during an upgrade and hose their data.
Is there any way to tell the installer that if the db file already exists just leave it alone and don't ask the user what to do?
Yes, use a preinst/postinst script. The usual method is to name the file in the package with a special name ending with dpkg-new, for instance /var/lib/myapp/mydb.data.dpkg-new. Then write a 'postinst' script to put in the DEBIAN directory of your package to check for the existence of the database, and rename or delete the dpkg-new file accordingly, something like:
#!/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
精彩评论