I am in the process of submitting commercial software to the Ubuntu Software Center, the packaging I am using is of Debian format. I was hoping someone could show me how to create a debian package that can be processed with as little errors as possible when the package is submitted. What is the way of means (step by step) to package commercial debian packages?

If it helps, the software packages contain a path tree similar to as follows:

  • The link mentioned by muru in you other question is the best to start with:

  • Packaging commercial software is almost the same as free software. Just few differences like you are going to publish binary deb package only (no source, no public ppa). So the Debian package building almost the same (If you are going to build it locally)

    If you use pbuilder or any other build helper, it will run by default a QA tool called lintian. Check the log very well and you gonna see some messages from it.

    As you can always rerun it against the final binary deb, here an example run on teamviewer:

    $ lintian Downloads/teamviewer_10.0.41499_amd64.deb
    W: teamviewer: hardening-no-relro opt/teamviewer/tv_bin/RTlib/libQtCore.so.4
    W: teamviewer: hardening-no-relro opt/teamviewer/tv_bin/RTlib/libQtGui.so.4
    E: teamviewer: embedded-library opt/teamviewer/tv_bin/RTlib/libQtNetwork.so.4: openssl
    W: teamviewer: hardening-no-relro opt/teamviewer/tv_bin/RTlib/libQtNetwork.so.4
    E: teamviewer: embedded-library opt/teamviewer/tv_bin/RTlib/libQtWebKit.so.4: sqlite
    W: teamviewer: hardening-no-relro ... use --no-tag-display-limit to see all (or pipe to a file/program)
    E: teamviewer: embedded-library opt/teamviewer/tv_bin/TVGuiDelegate: libjsoncpp
    E: teamviewer: embedded-library ... use --no-tag-display-limit to see all (or pipe to a file/program)
    E: teamviewer: statically-linked-binary opt/teamviewer/tv_bin/wine/bin/wine-preloader
    E: teamviewer: changelog-file-missing-in-native-package
    E: teamviewer: no-copyright-file
    E: teamviewer: description-starts-with-package-name
    W: teamviewer: extended-description-line-too-long
    W: teamviewer: extended-description-line-too-long
    W: teamviewer: unknown-section non-free/internet
    E: teamviewer: dir-or-file-in-opt opt/teamviewer/
    E: teamviewer: dir-or-file-in-opt opt/teamviewer/config/
    E: teamviewer: dir-or-file-in-opt opt/teamviewer/doc/
    E: teamviewer: dir-or-file-in-opt ... use --no-tag-display-limit to see all (or pipe to a file/program)
    W: teamviewer: extra-license-file opt/teamviewer/doc/License.txt
    W: teamviewer: extra-license-file opt/teamviewer/tv_bin/wine/COPYING.LIB
    W: teamviewer: extra-license-file opt/teamviewer/tv_bin/wine/LICENSE
    W: teamviewer: extra-license-file ... use --no-tag-display-limit to see all (or pipe to a file/program)
    W: teamviewer: duplicate-font-file opt/teamviewer/tv_bin/wine/share/wine/fonts/marlett.ttf also in fonts-wine-development
    W: teamviewer: duplicate-font-file opt/teamviewer/tv_bin/wine/share/wine/fonts/symbol.ttf also in fonts-wine-development
    W: teamviewer: duplicate-font-file opt/teamviewer/tv_bin/wine/share/wine/fonts/tahoma.ttf also in fonts-wine-development
    W: teamviewer: duplicate-font-file ... use --no-tag-display-limit to see all (or pipe to a file/program)
    W: teamviewer: file-in-unusual-dir var/log/teamviewer
    W: teamviewer: binary-without-manpage usr/bin/teamviewer
    E: teamviewer: maintainer-script-does-not-check-for-existence-of-updatemenus postrm:22
    W: teamviewer: postrm-has-useless-call-to-update-menus
    W: teamviewer: script-not-executable opt/teamviewer/tv_bin/script/tvw_aux
    W: teamviewer: script-not-executable opt/teamviewer/tv_bin/script/tvw_config
    W: teamviewer: script-not-executable opt/teamviewer/tv_bin/script/tvw_daemon
    W: teamviewer: script-not-executable ... use --no-tag-display-limit to see all (or pipe to a file/program)
    W: teamviewer: executable-not-elf-or-script opt/teamviewer/tv_bin/RTlib/doc/Qt4/TeamViewerNote.txt
    W: teamviewer: executable-not-elf-or-script opt/teamviewer/tv_bin/RTlib/doc/Qt4/WEBKIT-LICENSE.LGPL
    W: teamviewer: maintainer-script-ignores-errors postinst
    W: teamviewer: maintainer-script-ignores-errors postrm
    W: teamviewer: maintainer-script-ignores-errors preinst
    W: teamviewer: maintainer-script-ignores-errors ... use --no-tag-display-limit to see all (or pipe to a file/program)
    E: teamviewer: shlib-with-non-pic-code opt/teamviewer/tv_bin/RTlib/libQtNetwork.so.4
    E: teamviewer: shlib-with-executable-bit opt/teamviewer/tv_bin/wine/lib/libwine.so.1.0 0755

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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