---
name: "apk-mkndx"
section: "8"
platform: "linux"
package: "apk-tools"
version: "3.0.8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/apk-mkndx"
---

# apk-mkndx(8)

create apkv3 repository index file from packages

## NAME

apk mkndx - create apkv3 repository index file from packages

## SYNOPSIS

**apk mkndx** \[\<*options*\>...\] *packages*...

## DESCRIPTION

**apk mkndx** creates a repository index from a list of package files. See [**apk-repositories**(5)](/apk-repositories/5.md) for more information on repository indices.

## OPTIONS

- **--description**, **-d** *TEXT*

  Add a description to the index. Upstream, this is used to add version information based on the git commit SHA of aports HEAD at the time of index generation.

- **--filter-spec** *PKGNAME\_SPEC*

  Filter previous index only. Each argument should be *PKGNAME\_SPEC* formatted name of a package to include from the index. This can be used to create a subset of existing index.

- **--hash** *HASH*

  Use *HASH* as the algorithm for apk v3 integrity. Currently supported:

  - •

    sha256 (default)

  - •

    sha256-160

  The **sha256-160** is allowed to generate index compatible with old prereleases of apkv3 that do no handle longer hashes correctly.

- **--index**, **-x** *INDEX*

  Read an existing index from *INDEX* to speed up the creation of the new index by reusing data when possible.

- **--output**, **-o** *FILE*

  Output generated index to *FILE*.

- **--pkgname-spec** *PKGNAME\_SPEC*

  Specify package name specification for downloading the packages. APK will construct the download URL relative to index file by expanding this specification with package specific values.

  If the specification contains :// it is considered an absolute URL instead of relative. This is not recommended for public repositories as using absolute package name specification would prevent mirroring. However, this is useful in build environment to create a subset of an index and have it refer to packages in another repository.

  If not specified, the default will be determined by **apk** at runtime based on how the repository is referenced:

  - •

    ${arch}/${name}-${version}.apk if referenced by repository base path URL

  - •

    ${name}-${version}.apk if referenced by repository index file URL

  Currently supported substitution variables are:

  - •

    name

  - •

    version

  - •

    arch

  - •

    hash

  Additionally a prefix of the variable can used with syntax: **${name:4}**. This truncates the substitution to maximum of 4 characters.

  The specification writer should ensure that the repository does not contain multiple packages that would expand to same package filename.
