17

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

8 Answers 8

20

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
  • 2
    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, 2021 at 20:29
6

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
6

Try:

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

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

4
  • does not work for me
    – lalebarde
    Feb 27, 2016 at 9:02
  • Worked for me, thanks. The important part is --print-uris Oct 5, 2017 at 9:55
  • Doesn't work if the package has unmet deps May 17, 2018 at 2:26
  • On Debian 11 not works. $ sudo apt install --yes --no-download --reinstall --print-uris vim Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
    – EsmaeelE
    Jun 5, 2022 at 2:33
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.

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, 2013 at 19:47
  • 6
    No real need for sudo here, right?
    – sr_
    Jan 16, 2013 at 21:15
2

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 <[email protected]>
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.
1

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

1

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .