How do I do Debian packaging of a Python package?

后端 未结 5 1191
無奈伤痛
無奈伤痛 2020-11-29 17:59

I need to write, or find, a script to create a Debian package, using package python-support, from a Python package. The Python package will be pure Python without C extensio

5条回答
  •  误落风尘
    2020-11-29 18:53

    The right way of building a .deb package is using dpkg-buildpackage, but sometimes it is a little bit complicated. Instead you can use dpkg -b , and it will create your Debian package.

    These are the basics for creating a Debian package with dpkg -b with any binary or with any kind of script that runs automatically without needing manual compilation (Python, Bash, Perl, and Ruby):

    1. Create the files and folders in order to recreate the following structure:

      ProgramName-Version/
      ProgramName-Version/DEBIAN
      ProgramName-Version/DEBIAN/control
      ProgramName-Version/usr/
      ProgramName-Version/usr/bin/
      ProgramName-Version/usr/bin/your_script
      

      The scripts placed at /usr/bin/ are directly called from the terminal. Note that I didn't add an extension to the script. Also you can notice that the structure of the .deb package will be the structure of the program once it's installed. So if you follow this logic, if your program has a single file, you can directly place it under ProgramName-Version/usr/bin/your_script, but if you have multiple files, you should place them under ProgramName-Version/usr/share/ProgramName/all your files and place only one file under /usr/bin/ that will call your scripts from /usr/share/ProgramName/.

    2. Change all the folder permission to root:

      chown root:root -R /path/to/ProgramName-Version
      
    3. Change the script's permissions:

      chmod 0755 /path/to/the/script
      
    4. Finally, you can run: dpkg -b /path/to/the/ProgramName-Version and your .deb package will be created! (You can also add the post/pre install scripts and everything you want. It works like a normal Debian package.)

    Here is an example of the control file. You only need to copy-paste it in to an empty file called "control" and put it in the DEBIAN folder.

    Package: ProgramName
    Version: VERSION
    Architecture: all
    Maintainer: YOUR NAME 
    Depends: python2.7, etc , etc,
    Installed-Size: in_kb
    Homepage: http://example.com
    Description: Here you can put a one line description. This is the short Description.
     Here you put the long description, indented by one space.
    

    The full article about Debian packages can be read here.

提交回复
热议问题