[Lazarus] Deployment tool: make deb

JuuS JuuS at mykolab.ch
Fri Nov 6 09:29:41 CET 2015

On 11/05/2015 11:02 PM, Anthony Walter wrote:
> JuuS, right. I knew about apt-file builing of user database on first run. 

Super, thanks for the info, I see now where I had some confusion.

I will definitely use this, please keep us apprised of deb packager
updates (for instance the umlaut รถ problem)?

But you are right that it is ready to use now, though I'm still at a
loss as to why my program does not show up in Kub's utilities menu, your
deb packager shows up fine in development menu. Any ideas?

> Here's how it will work:
> On start of makedeb it checks if apt-file is installed. 
>   If apt-file is not installed the program will ask to install it for
> you or close.
>     If you say okay to install, it'll popup the gksudo prompt and
> install apt-file.
>     Else makedeb will terminate
> Once apt-file is detected it'll check that you have the cache has been built
>   If not it will run apt-file update without sudo, to build the local
> apt-file user cache 

I was reading about this and I, personally, prefer the manual sudo
method simply because the user permission terminal window for the
"apt-file update" hangs and never returns to a prompt. Maybe that's not
a real issue but I am reassured when I run it under sudo that the
terminal window returns to normal. The downside (if it is one), as
discussed on the sites I've read, is that once this decision is made
then the use of sudo must be consistent.

> After apt-file and its cache is working, you can then fill out the form
> with the information in you deb package:
> http://cache.getlazarus.org/images/makedeb-file.png
> Fields Explained
> Icon: Click the icon to pick a graphics file. Icons should support
> transparency, so select either a png, xpm, ico, or svg image file. They
> will all be resized as 64x64 pngs and packed into your deb, then
> deployed to /usr/local/share/icons/<package name>.png.
> Application: The path to your executable. The binary format must be
> either i386 or amd64 architecture. Any other format will be rejected.
> The binary will be stripped before being placed in the deb.
> Caption: The name of your application as seen when searching in the
> Ubuntu dash or other graphical application launcher. Will appear in the
> Name field of the generated desktop file deployed to
> /user/local/share/applications/<package name>.desktop.
> Package name: The name of the package as seen by apt-get, dpkg,
> aptitude, apt-file, and other command line package tools. I force you to
> use an identifier name, i.e. following the same rules at variables. No
> spaces, no punctuation, letters, numbers, and underscore. Must start
> with a letter or underscore.
> Package version: Should be app major version dot minor version dash
> package version. e.g. 1.0-1
> Category: Used by some systems to group applications by functionality.
> Will be inserted into the desktop file and the DEBIAN control file.
> Author: You name and email in to form of "John Doe <johnd at example.com
> <mailto:johnd at example.com>>" without the quotes.
> Website: The url where people can download the deb from or read about
> the program.
> Short description: Will appear in under next to the package name as the
> description in your package manager (apt-get, aptitude, Ubuntu Software
> Center).
> Long description: Will appear in Ubuntu Software Center after the fold.
> When you press build, make deb does the following:
> Validates the fields are filled in correctly.
> Checks that the application file is a valid amd64 or i386 executable binary.
> Your previous deb file for that architecture is deleted if it already
> exists.
> The deb folder structure is created, if it doesn't exists in the same
> directory at the application file.
> You applicate is copied to app-folder/packagename_version/usr/local/bin.
> Makedeb then locates the shared object files (.so) linked in the elf
> header of your application.
> It checks if the .so has already been cached and associated with a
> package name and version..
>   If the .so hasn't been cached, apt-file is used to lookup the package
> and version (this can take a while).
>   The .so package name and version is then cached in your
> $HOME/.config/makedeb folder.
> It copies your icon file to app-folder/packagename_version/usr/share/icons.
> It builds a desktop file and copies it to
> app-folder/packagename_version/usr/share/applications.
> It builds the app-folder/packagename_version/DEBIAN/control file.
> It builds the deb packagename_version-architecture.deb. e.g.
> my_awesome_app_1.0-1-amd64.deb
> And finally your project information is saved to the same name as your
> application file with the .mkdeb extension added. The next time you open
> the file with makedeb (using the button next to the Application field).
> It will reuse your last settings.
> You can then increment the application or package versions numbers,
> build again, and uploads the new deb file to your website. The user can
> download the new version, run "dpkg -i my_awesome_app_1.1-1-amd64.deb"
> and he will be upgraded, or double click the file to upgrade through a
> graphical interface tool.
> If you want automatic upgrades (sudo apt-get upgrade), then you'll need
> to put the debs in a PPA, but that is beyond the scope of this email.
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

More information about the Lazarus mailing list