Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I am assuming that all application installed through apt-get are open source; but for those that are available in that manner, where can I get the source code for these applications as well as update them?

I have a couple applications I use regularly that aren't being actively developed any longer and I would like to add features. Where would I go to get the rights to update these applications?

In this case specifically, I am referring to the hellanzb package

share|improve this question
1  
apt-get does support closed-source programs as well, so your initial assumption is incorrect. –  Flimm Jan 7 '13 at 14:47
add comment

3 Answers 3

up vote 65 down vote accepted

Use the command apt-get source <package> (don't use sudo with it) to download the source of a package.

From man apt-get:

   source
       source causes apt-get to fetch source packages. APT will examine the
       available packages to decide which source package to fetch. It will then
       find and download into the current directory the newest available version of
       that source package while respect the default release, set with the option
       APT::Default-Release, the -t option or per package with the pkg/release
       syntax, if possible.

       Source packages are tracked separately from binary packages via deb-src type
       lines in the sources.list(5) file. This means that you will need to add such
       a line for each repository you want to get sources from. If you don't do
       this you will properly get another (newer, older or none) source version
       than the one you have installed or could install.

       If the --compile option is specified then the package will be compiled to a
       binary .deb using dpkg-buildpackage, if --download-only is specified then
       the source package will not be unpacked.

       A specific source version can be retrieved by postfixing the source name
       with an equals and then the version to fetch, similar to the mechanism used
       for the package files. This enables exact matching of the source package
       name and version, implicitly enabling the APT::Get::Only-Source option.

       Note that source packages are not tracked like binary packages, they exist
       only in the current directory and are similar to downloading source tar
       balls.

To build a package from source, first install the build dependencies:

sudo apt-get build-dep <package>  

Then use dpkg-buildpackage to create a .deb file. From APT and Dpkg Quick Reference Sheet:

dpkg-buildpackage Builds a Debian package from a Debian source tree. You must be in the main directory of the source tree for this to work. Sample usage:

 dpkg-buildpackage -rfakeroot -uc -b

Where -rfakeroot instructs it to use the fakeroot program to simulate root privileges (for ownership purposes), -uc stands for "Don't cryptographically sign the changelog", and -b stands for "Build the binary package only"

In a terminal, cd into the directory containing the package source (e.g ~/code/hellanzb-0.13) and run the following command:

dpkg-buildpackage -rfakeroot -uc -b

If the build is successful, there will be a .deb file located in the parent
directory (e.g ~/code/hellanzb_0.13-6.1_all.deb).

share|improve this answer
    
how can I install from the modified source. as well as commit it back for other users to use. Thanks! –  myusuf3 Feb 28 '11 at 5:32
1  
@dustyprogrammer Updated my answer with instructions on creating a .deb package from the source code. As for getting your modified package into the repositories, you should talk to a MOTU about that. –  Alvin Row Feb 28 '11 at 6:48
    
@DoR is there a way to create a deb that installs by default in a custom directory? the same way we can install using the --prefix during the configure process? actually i cant find the tarballs for the source of a library,thats why i cant configure --prefix,and make install it.. but that pakages source is available through apt,so i was thinking to install the source package in the desired prefix. –  ashishsony Jan 16 '13 at 8:06
    
If you don't want to use apt-get source (for example when building a package taken from other distro) download the 3 source files and use 'dpkg-source -x [fine].dsc' to extract the files and apply the diffs before dpkg-buildpackage. (ftp.debian.org/debian/doc/source-unpack.txt) –  Shlomi Loubaton Mar 23 at 10:33
add comment

In general, you can get the source of an installed package by following this procedure:

  1. Enable the source repositories. Open the dashboard (top left button) and search for sources. That should bring up the Software & Updates program, run that and make sure you have the "Source code" option selected:

    enter image description here

  2. Open a terminal and run this command:

    sudo apt-get source vlc
    

That will download vlc's sources to your current directory and you can view them at your leisure.

Of course, in the case of vlc, you can also download them directly from the videolan.org website: https://www.videolan.org/vlc/download-sources.html

share|improve this answer
add comment

You can use apt-get source --compile directly:

sudo apt-get build-dep <package>
sudo apt-get source --compile <package>

Worked for me. The .deb winds up in the directory you ran the command from.

share|improve this answer
1  
Worked for me as well, thanks. Just one extra detail: you can install the .deb with sudo dpkg -i <package>.deb –  waldir Nov 23 '13 at 18:00
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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