If I want to make minor changes to the source code of a Debian package, how do I go about downloading, incrementing the package version, building the (modified) source, and installing it on my computer?
Asked
Active
Viewed 3.9k times
39
-
1@CiroSantilli六四事件法轮功 This question is not a duplicate of mine. It doesn't touch on modifying and rebuilding the deb package, incrementing the package version etc. It's just about downloading the source. – sashoalm May 17 '15 at 08:16
-
I think it does ask for how to build as well: "get the source code for these applications as well as update them?", "I would like to add features". This one is better phrased of course :-) – Ciro Santilli OurBigBook.com May 17 '15 at 08:59
-
@sashoalm: Please read the top answer of that question: “To build a package from source, first […]. Then use `dpkg-buildpackage` to create a `.deb` file.” That sounds a lot like instructions to (re-)build Debian packages to me. – David Foerster May 19 '15 at 07:32
1 Answers
47
Here are two ways to do it. The first one is the classic form, you'll get the source with apt-get. The second is the new [ubuntu] way uses the bzr command.
Classic
$ apt-get source package
Then you'll be able to modify it:
$ cd package
$ vim some_file
Rebuild it:
$ sudo apt-get build-dep package
$ dch -i (which will open your editor to edit the changefile, here's where you can increment the package version)
$ debuild -us -uc -b
And install it:
$ sudo dpkg -i ../package.deb
New Ubuntu Approach
The new way (the Ubuntu way) is by using bzr branches, you'll get the code by using:
$ bzr branch lp:ubuntu/package #which will download the latest ubuntu package (the precise one)
$ bzr branch lp:ubuntu/oneiric/package #to get the package in oneiric
You can also get the code using:
$ pull-lp-source package #lp-source is part of the ubuntu-dev-tools pkg
pull-lp-source used to be called just lp-source in older versions.
Then you'll be able to edit it:
$ cd package
$ vim some_file
Rebuild it:
$ dch -i
$ debcommit
$ bzr bd -- -b -us -uc
And install it:
$ sudo dpkg -i ../package.deb
I recommend that you check the Ubuntu packaging guide out to know the details.
Also you might encounter problems if the package depends of others.
Alexis Wilke
- 2,632
- 2
- 21
- 33
Javier López
- 1,436
- 2
- 19
- 29
-
Using `apt-get source openjdk-7` took around 2 minutes for me, while using `bzr branch` took over an hour and I decided to kill the process. I'm wondering what would be the usefulness of this "new approach". – Andrea Lazzarotto Oct 07 '14 at 10:19
-
many thanks I did it, just need to install before: apt-get install dpkg-dev apt-get install dchroot devscripts apt-get install fakeroot – Sérgio Jan 14 '15 at 18:28
-
3You need `sudo apt-get install devscripts` to get the debuild command. – benjaoming Apr 08 '15 at 10:28
-
`debuild` doesn't create a delta source package while `dpkg-buildpackage` does... – Daniel Alder Dec 01 '15 at 11:30
-
`bzr branch lp:ubuntu/xenial/lightdm bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/xenial/lightdm/".` `bzr branch lp:ubuntu/lightdm bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".` [Ubuntu packaging guide](http://packaging.ubuntu.com/html/), specifically [4.2. Getting the source](http://packaging.ubuntu.com/html/udd-getting-the-source.html#id1) says: `bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".` What a mess. :-( – Stéphane Gourichon Aug 15 '16 at 16:56