---
name: "pk4"
section: "1"
platform: "linux"
package: "pk4"
version: "5+nmu1+b8"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pk4"
---

# pk4(1)

make available the Debian source package producing the specified package

## NAME

pk4 - make available the Debian source package producing the specified package

## SYNOPSIS

**pk4** \[**options**\] *package*...

## DESCRIPTION

**pk4** resolves the specified argument(s) as either:

- 1\. the name of a Debian binary package, and selects its Debian source package.

  - 2\. the name of a Debian source package, and selects it.

  - 3\. or a file path, and selects the Debian source package of the owning package.

  The source package version is either the installed version (if any) or the installation candidate, as per *apt-cache policy*.

Then, pk4 downloads the entire selected source package (every file referenced by — and including — its .dsc file) and prints the output directory path.

## OPTIONS

- **-allow\_unauthenticated**

  Whether to allow unauthenticated source packages, i.e. disable signature checking.

- **-bin**

  Restrict search to binary packages only.

- **-complete**

  Whether to return shell completions. Should usually be set by shell completion functions only.

- **-dest *string***

  Directory in which to store source packages (default *~/.cache/pk4*).

- **-file**

  Interpret the argument as a file name and operate on the package providing the file.

- **-resolve\_only**

  Resolve the provided arguments to source package and source package version, then print them to stdout in %s\\t%s\\n format and exit.

- **-shell *string***

  Which shell to start in the output directory after downloading the source (default *$SHELL*)

- **-src**

  Restrict search to source packages only.

- **-verbose**

  Whether to print messages to stderr.

- **-version *string***

  Use the specified source package version (default: installed package version, or latest known if not installed).

## EXAMPLES

- \# Avail the current Linux kernel sources:

  ```
  pk4 -src linux
  ```

  \# Avail the sources which produced Debian binary package libbz2-1.0 pk4 libbz2-1.0

  \# Avail the sources of whichever package currently provides vi: pk4 -file $(which vi)

  \# Fetch the i3 source, apply a bugfix, rebuild and replace installed packages: pk4 i3 patch -p1 \< /tmp/myfix.patch pk4-replace

  \# Avail all debhelper build system implementations: pk4 -allow\_unauthenticated $(grep '^dh-\*' /var/cache/pk4/completion.both.txt) # Grep through their sources: grep -r option ~/.cache/pk4/dh-\*

## CONFIGURATION FILE

The following attributes can be configured in *~/.config/pk4/pk4.deb822*:

- **Disk-Usage-Limit *bytes***

  Example:

```
Disk-Usage-Limit: 2GiB
```

## HOOKS

The following hooks can be configured:

- **after-download**

  after-download hooks are run after the package was successfully downloaded. Examples:

```
# Automatically create a git repository for each package:
mkdir -p ~/.config/pk4/hooks-enabled/after-download/
ln -s /usr/share/pk4/hooks-available/after-download/git-init \
~/.config/pk4/hooks-enabled/after-download/
```

- **unpack**

  unpack hooks replace the unpack phase: as soon as one or more unpack hooks are found, pk4 will run them instead of running dpkg-source -x. Examples:

```
# Unpack source into a new git-buildpackage repository:
apt install git-buildpackage
mkdir -p ~/.config/pk4/hooks-enabled/unpack/
ln -s /usr/share/pk4/hooks-available/unpack/gbp \
~/.config/pk4/hooks-enabled/unpack/
```

## SEE ALSO

- *[pk4-generate-index(1)](/pk4-generate-index/1.md)*

  (Re-)generate index files for pk4

- *[pk4-replace(1)](/pk4-replace/1.md)*

  build sources and replace currently installed packages

## AUTHOR

Michael Stapelberg \<stapelberg at debian.org\>
