12

Is there any way (dpkg, apt?) to get a package's sources and URL to repository, if available, in Debian ?

10

for latest version:

apt-get download --print-uris package | cut -d' ' -f1

for specific version

apt-get download --print-uris package=version | cut -d' ' -f1
1
  • kept trying this, but no path was printed. Found that having already downloaded the file with apt-get download pkg it will not print anything. So deleting the file in current wd first worked Apr 26 at 20:29
5

apt-cache policy package displays which versions can be installed from which repositories.

bash$ apt-cache policy dpkg
dpkg:
  Installed: 1.16.1.2ubuntu7.1
  Candidate: 1.16.1.2ubuntu7.1
  Version table:
 *** 1.16.1.2ubuntu7.1 0
        500 http://fi.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://mirrors.nic.funet.fi/ubuntu/ precise-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     1.16.1.2ubuntu7 0
        500 http://fi.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
5

To get the source:
Check that you have a deb-src line in /etc/apt/sources.list.
As root, run apt-get build-dep package.
As normal user, run apt-get source package.

To get the URL, go to http://packages.debian.org/source/sourcepackage. Then you get a list of the different versions in the supported archives.
If the source package name differs from the binary, it's in the package description, 2nd line it seems.
grep -A1 binpackagename /var/lib/apt/*Packages |grep Source should do the trick.

5

Try:

apt-get install --yes --no-download --reinstall --print-uris package-name

You can extract just URL by adding: | tail -n1 | grep -o "http[^']\+"

3
  • does not work for me
    – lalebarde
    Feb 27 '16 at 9:02
  • Worked for me, thanks. The important part is --print-uris Oct 5 '17 at 9:55
  • Doesn't work if the package has unmet deps May 17 '18 at 2:26
4

What about sudo apt-get source packageName? It installs the newest available source tree, when available, in the current working directory.

Check man apt-get for more details.

2
  • 1
    I need just the name. Is there a way to get it ? Also, how could I get the git repo URL from where it downloads the package ? Jan 16 '13 at 19:47
  • 3
    No real need for sudo here, right?
    – sr_
    Jan 16 '13 at 21:15
1

You can use website pkgs.org where you can search for packages. It will give you package and repository path as well.

0

You can use a very simple script called apt-url, that uses apt-move behind the scene to show the package URL.

This script could be found at:

https://github.com/leitao/apt-url

0

I wonder why nobody suggests apt show <package-name>.

Example:

$ apt show docker-compose
Package: docker-compose
Version: 1.21.0-3
Priority: optional
Section: admin
Maintainer: Docker Compose Team <team+docker-compose@tracker.debian.org>
Installed-Size: 632 kB
Depends: python3-cached-property (>= 1.2.0), python3-docker (>= 3.2.1), python3-dockerpty (>= 0.4.1), python3-docopt (>= 0.6.1), python3-jsonschema, python3-requests (>= 2.6.1), python3-six (<< 2), python3-six (>= 1.3.0), python3-texttable (>= 0.9.0), python3-websocket (>= 0.32.0), python3-yaml (>= 3.10), python3:any (>= 3.6~), python3-distutils
Recommends: docker.io (>= 1.9.0)
Homepage: http://docs.docker.com/compose/
Download-Size: 108 kB
APT-Manual-Installed: yes
APT-Sources: http://deb.debian.org/debian buster/main amd64 Packages
Description: Punctual, lightweight development environments using Docker
docker-compose is a service management software built on top of docker. Define
your services and their relationships in a simple YAML file, and let compose
handle the rest.

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.