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 often interested in the installation triggers (postinst, postrm) or certain parts of packages (like /usr/share and /etc). Currently, I am running the next command to retrieve the source code:

apt-get source [package-name]

The downside is, this file is often much bigger than the binary package and does not reflect the installation tree.

Right now, I am downloading the packages through http://packages.ubuntu.com/:

  1. Search for [package-name]
  2. Select the package
  3. Click on amd64/i386 for download
  4. Download the actual file

This takes too long for me and as someone who really likes the shell, I would like to do something like the next (imaginary) command:

apt-get get-deb-file [package-name]

I could not find something like this in the apt-get manual page. The most close I found was the --download-only switch, but this puts the package in /var/cache/apt/archives (which requires root permissions) and not in the current directory.

share|improve this question
add comment

3 Answers

up vote 16 down vote accepted

The "aptitude" program provides this feature. For example, if $PKG is the package you want:

aptitude download $PKG

This doesn't require root privileges. And, in case you don't have aptitude installed, the same can also be approximated using "apt-get" and "wget":

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

This will, however, fetch all packages required to install the package, so you can attempt to limit it instead:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

You can also put a wget line into a function, to be able to use it as a command apt-download with the package name as a parameter:

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq $1 | cut -d"'" -f2); }

Note the modifications: The $PKG is replaced with $1 and the -c parameter enables continuing interrupted downloads.

share|improve this answer
1  
Excellent, this is what I'm looking for. Another reason to keep aptitude on my system, the other useful command that is not provided by apt is aptitude changelog $PKG. –  Lekensteyn Mar 16 '11 at 12:27
1  
Update: from Natty (apt version 0.8.11 to be precise), the aptitude download feature is available in apt as well: apt-get download $PKG. –  Lekensteyn Apr 29 '11 at 19:22
    
sweet, works despite my ancient apt v0.8.10 –  rogerdpack Dec 12 '13 at 23:29
add comment
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

Note:

You need to create an folder named partial in destination folder.

share|improve this answer
    
Doesn't sound that bad. The options seems to be described by man apt.conf. I would like to avoid the creation of the folder. –  Lekensteyn Mar 15 '11 at 15:02
    
I'm just curious, why would you avoid creating the folder? –  mount.cifs Mar 16 '11 at 7:44
    
I do not need to store the package forever and avoid creating the folder saves time too. –  Lekensteyn Mar 16 '11 at 12:26
    
Just wanted to note that this solution will also insist on package removal (e.g. if you change version via /etc/apt/sources.list to a newer one, with the intent to download later packages) - in such a case, the wget method above may be more useful, if you don't want to remove anything... –  sdaau Feb 17 at 18:45
add comment

/var/cache/apt/archives is world readable. After apt-get -d, just extract it from there to your home directory. Run dpkg -e /var/cache/apt/archives/foo_version.deb foo while in your home directory and the control files will be dumped into foo/.

share|improve this answer
    
I think the problem with this method is that the download still requires administrative privileges. It seems silly to go to such extremes just to get a file into your home directory. –  ændrük Mar 15 '11 at 14:56
    
Opening the .debs is not the problem, downloading it is. It might be a bug or not, but the packages in /var/cache/apt/archives` are affected by umask too. I've set an umask of 027 and therefore, the packages in /var/cache/apt/archives cannot be read by me. As I need just to examine the package contents, I just need to download it once: to /tmp. –  Lekensteyn Mar 15 '11 at 15:01
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.