23

So I'm building a .deb, and I need to do a few post-install commands (linking libraries paths, and a few other things).

Is there a way to have it so when you do a sudo dpkg -i <pacakage-name>.deb, a script runs?

1 Answer 1

28

You can execute commands after installation using the postinst shell script located in the debian folder in the source.

This is a normal shell script containing all the commands to be executed (in order) after the installation of the package. dpkg will run this automatically. So, all you need to do is create a shell script before packing your source package into a binary package, name it as 'postinst' and put it in the debian directory.

For more info, visit the Ubuntu Packaging Guide.

5
  • The page doesn't exist anymore... Dec 28, 2014 at 19:21
  • 2
    The page exists, the link is just wrong (it has a duplicate '/html' at the end). Correct link is packaging.ubuntu.com/html . But perhaps the page has changed, because i found packaging.ubuntu.com/html/packaging-new-software.html to be more useful.
    – Knetic
    Apr 29, 2015 at 16:53
  • Be careful, postinst isn't executed after "installation of the package" it's executed after "extracting the files from the deb package" the install process may fail and the postinst is still being executed. Nov 15, 2018 at 19:21
  • No @Miguel, if the installation process encounters an error before the postinst runs then the postinst isn’t executed. Nov 16, 2018 at 16:13
  • @StephenKitt I'm currently working with a deb package which didn't met the dependencies and actually executed the postinst. I'll try to update my answer with the lab info. Nov 16, 2018 at 17:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.