EzDev.org

packaging interview questions

Top 15 packaging interview questions

3768 Jobs openings for packaging


Confused about building OpenStack Packages?

I found OpenStack build task on Ubuntu QA site, but I am a little confused about the build steps.

Here's the link for build steps: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText

From the jenkins build log, I know the steps how Ubuntu build a Openstack packages:

  1. get openstack code from github, use git clone
  2. build openstack tar.gz file using python setup.py sdist
  3. use bzr to get the debian control files which is maintenance by canonical
  4. use dch command to generate a new build release and commit it to local
  5. use bzr builddeb -S -- -sa -us -uc to generate source package and related control file, such like dsc
  6. sign the package
  7. use mk-build-deps to install dependency
  8. use sbuild to generate the real deb packages
  9. upload to testing repos

My questions is:

  1. In step 5, we already can generate the deb packages without -S, but why we finally use sbuild to generate it? Is this only for signature?
  2. What's the difference between bzr builddeb and sbuild?
  3. I found the build scripts which jenkins used is located here: ~openstack-ubuntu-testing/openstack-ubuntu-testing, but when I try to run any commands under bin, I always get:

    root@demo:~/openstack-ubuntu-testing/bin# ./build-package
    Traceback (most recent call last):
      File "./build-package", line 14, in <module>
        from openstack_ubuntu_testing.build.component_build import ComponentBuild
      File "/home/sysadmin/openstack-ubuntu-testing/bin/openstack_ubuntu_testing/build/component_build.py", line 11, in <module>
        from schroot.executor import SchrootExecutor
    ImportError: No module named schroot.executor
    

I tried to use pip to install schroot, but it seems they don't have a executor in it.

Please help.


Source: (StackOverflow)

How to solve dpkg-source source problem when building a package?

Has anyone here had some experience creating a Debian / Ubuntu package? I am trying to backport the lammps package (http://packages.ubuntu.com/quantal/lammps) from Ubuntu 12.10 (Quantal) to Ubuntu 12.04

I only need it unofficially - just need a .deb package for convenience's sake when creating custom virtual machine images for deployment to IaaS platform.

Following the Ubuntu Packaging Guide at https://wiki.ubuntu.com/PackagingGuide , I can build successfully, except when I try to rebuild using the debuild command, I usually get this error:

 dpkg-source: error: aborting due to unexpected upstream changes, see
 /tmp/lammps_0~20120615.gite442279-1.diff.aie32n dpkg-source: info: you
 can integrate the local changes with dpkg-source --commit
 dpkg-buildpackage: error: dpkg-source --include-binaries -i -b
 lammps-0~20120615.gite442279 gave error exit status 2

Running 'make clean-all' at the src directory still does not solve the problem. Is there any way to completely clean off all the files that were generated during the build process, or to ask debuild to ignore any differences in the source files?


Source: (StackOverflow)

How to make a deb file which tells the system a reboot is required?

I plan to set up a PPA or perhaps submit my package to Debian, but there is something I really need to know, I understand that packages normally do something with /var/run/reboot-required and are listed in /var/run/reboot-required.pkg, but how exactly does one create a deb file which tells the system through that method that a reboot is required to make all the necessary changes? Is there simply a flag I need to set in one of the files or is it more manual than that? I am running Ubuntu GNOME 16.04 with GNOME 3.20.


Source: (StackOverflow)

Adding post .deb install scripts

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?


Source: (StackOverflow)

How to have Debian packaging generate two packages given an upstream source archive?

I am packaging something for my PPA. The upstream source is a .tar.gz archive which is Makefile-based.

Since this package has a significant amount of architecture-independent data, it would be wise to have the build scripts generate two packages:

  • package
  • package-data

How can I set this up? I've edited my Debian control file to generate two packages, but I have no idea how to get the right files to the right package.

Since the data files are currently all installed via the Makefile, I am kind of lost here.


Source: (StackOverflow)

Why use sbuild over pbuilder?

There are numerous ways to build Debian packages in a clean and reproducible environment. Two of the most frequently used are pbuilder and sbuild. Personally, I've always used pbuilder. I find pbuilder much easier to use and maintain. I haven't been able to find any side by side comparison of the two. What am I missing out on?

What advantages are there in using sbuild over pbuilder?


Source: (StackOverflow)

What is the Snap packaging format?

I have a very little knowledge about the 'Snap packaging format'. What I know is that 'Snap' is an alternative packaging format like .deb.

What I don't know is

  • Why did Canonical chose it?
  • What are the main advantages of 'Snap' over .deb?
  • Will .deb be abandoned, or is it already abandoned?

Source: (StackOverflow)

How to apply a changelog file to packages in a PPA when building from recipe?

When my package gets build by launchpad using a recipe, it ignores the ./debian/changelog file I provide, and it generates a useless one like following:

harmonyseq (0.14~natty1) maverick; urgency=low

  * Auto build.
 -- Rafal Cieslak <rafalcieslak256@gmail.com>   Tue, 25 Jan 2011 16:56:57 +0000

It would be much better if launchpad stored the list of changes I prepared in the changelog file, rather than just putting "Auto build" there.

How do I force launchpad to use the list of changes from my changelog file, when building packages from a recipe?


Source: (StackOverflow)

How to create and administer multi-architecture PPAs?

I have a program that needs to be recompiled for every ubuntu version.

Currently I am packaging it using Ubuntu's PPA just for the current distribution.

Eventually, I have to provide packages for the previous ubuntu version.

I am not sure how to accomplish this.

How does the Ubuntu PPA build server works - does it just look at the distribution field in the most current changelog entry (in the debian/changelog file) to determine for what distribution the package should be build?

The debian specification allows to add multiple distributions into the distribution field. But this does not seam to help me.

Some ubuntu documents talk about encoding the distribution name into the version number (in the debian changelog file).

But how does this work in practice? A new version of the program is available, then what? Do I add for each distribution a new changelog entry and the PPA buildserver builds automatically for each distribution new packages after dput'ing it up? Or does the PPA buildserver just looks at the first changelog entry?


Source: (StackOverflow)

How to add dependency after submitting a proprietary app to USC?

I submitted my app "Brightness Controller" under proprietary license and it has been published. It contains an executable .py file. But the app depends on python-wxgtk2.8 I wrote it in the comments field but probably the packagers have ignored it. Is there any way I can add the dependency myself?
Please note that I had not debianized the package. I just tarred the brightness.py file and submitted it. Can I just make a .deb with the dependency file and submit it?
The app is originally open-source, but I submitted it under proprietary so that I won't have to package it.


Source: (StackOverflow)

Manually Created .deb, how do I upload to a PPA?

I have a manually created .deb, and I'd like to upload it to a PPA.

My question is as follows:

  • Is that possible?

and If so,

  • how do I do that?

Source: (StackOverflow)

How can GIMP 2.8 have two different icons together?

In Unity dash GIMP 2.8.10 has a icon and uses a different one in launcher.

GIMP in Dash

enter image description here

GIMP in Launcher

enter image description here

I searched for GIMP in "File System" and got this.

enter image description here

How can this be done while packaging other apps?


Source: (StackOverflow)

Is is possible to get a patch included in the current release? If so, how?

So a while back I reported a bug in Compiz's Place Window plugin. It's a fairly major regression for people affected by it: mainly those using Gnome-Fallback, judging by the reports.

A patch surfaced a short time later. I created a PPA for testing and everybody involved so far is reporting the issues are fixed. It even fixes another bug. I've done testing with a standard Unity desktop and can say (for my testing) no adverse effects were visible.

I want to get this pushed to Ubuntu right now for two main reasons:

  • I'm selfish. I don't want to need to update my PPA every time a new version of Compiz is pushed to 12.04.
  • I don't want Ubuntu users seeing their windows flying around because of a silly little bug.

I want this patch pushed to Ubuntu's version of Compiz as soon as possible, so we can mark these bugs fixed and move on with our lives.

Whose leg do I have to hump to get this pulled into Ubuntu right now?

I don't maintain this project and it's an upstream thing but it's fairly integral to Ubuntu. I could go to Compiz but I imagine that if they accept the patch, it'll be months (at least a release) before it's anywhere near Ubuntu.

And when I do find the right person, how can I make the process as slick as possible for them?

I want them to see my request, go "Yup, that all looks great, done" and that be it. I don't want seventeen rounds of emails addressing aspects of the patch. More importantly, I don't want to waste their time either.

And what do I have to provide them? My packaging skills are... lamentable. This was my first attempt at patching a package for redistribution so I've probably made every single packaging error known to man. Will they be happy with the original patch (so they can apply it themselves) or should I repackage things so the diff/changelog is a little cleaner (it took me a few goes and the versioning is all over the place).

Note: This question is about Compiz but I'd prefer if answers could address other styles of package too so we have an authoritative and comprehensive thread of how to get things fixed.


Source: (StackOverflow)

I've filed an ITP bug on bugs.debian.org - now how do I get the package into Ubuntu?

I've written a development library that I would like to include in the Ubuntu archives. From what I understand, the best way to do this is to first get the package into Debian and then request a package sync.

Here is the ITP bug.

What do I do now?

Looking at this page, I see horrifying things like "419 days in preparation" and "last activity 404 days ago". I get the impression that getting a package into Debian is a slow process.

Is there anything I can do to speed up the process? I've tried to do as much work as I can to smooth out the process - I've got a branch with Debian packaging (which gets by Lintian without any errors).


Source: (StackOverflow)

How and why to create -dbg, -dev, -doc packages?

I'm writing an Ubuntu package for a package which essentially provides a number of libraries and headers which then be used to build other software. The package also breaks up in smaller subpackages which are interdependent; in this sense the package is quite similar to boost.

I noticed that packages like boost provide

[...]
libboost-dbg
libboost-dev
libboost-doc
[...]
libboost-all-dev
[...]

but nothing that goes by the name boost or libboost.

  • What is the idea behind this?
  • What are the purposes of the -dbg, -dev, and -doc packages?
  • Are there any instructions provided on how to write build files for those packages?

Source: (StackOverflow)