27

I would like to know, given a binary's name, which package I should install on Alpine Linux.

How can I do that?

4 Answers 4

26

You have three ways basically.

First: The package should be installed and you need to specify the full path :

apk info --who-owns /path/to/the/file

Second: Use the pkgs.alpinelinux.org website

Third: Use the api.alpinelinux.org API by filtering the json output. For this you need a json parser like jq:

apk add jq

then use the API with the instructions provided here

UPDATE on 2022-04-07

I've released a tiny utility that allows to search via CLI what can be found on pkgs.alpinelinux.org website: https://github.com/fcolista/apkfile

.: Francesco

6
  • 1
    apk info seems to be closer to dpkg -S. In my case I'm trying to answer the question "What package provides this binary that I know the name of", rather than where does this pre-existing file come from.
    – Att Righ
    Feb 15, 2017 at 20:35
  • therefore, apk info --who-owns /with/th/full/path is the tool if you have the package installed, otherwise from a CLI is not possible. You should check [pkgs.alpinelinux.org/contents] (pkgs.alpinelinux.org/contents) website. You write the binary name there, and it returns the package that contains that binary. Feb 16, 2017 at 8:02
  • Using apk info --who-owns, how do you do if you don't know the file's full path? Apr 17, 2018 at 15:20
  • No, you can't as yet...sorry Apr 18, 2018 at 17:51
  • why is --who-owns undocumented?
    – Rolf
    Apr 22, 2020 at 10:58
5

You're looking for the equivalent of Debian's apt-file for Alpine. Searching for that yields apk-file.

Basically apt-file but for alpine.

3
  • 2
    That's what I'm after. It appears that apk-file is not an alpine package, you can install it with go get github.com/jessfraz/apk-file (it happily runs on non alpine systems). The binary is likely static so can probably be copied into docker containers etc.
    – Att Righ
    Feb 15, 2017 at 20:38
  • 3
    apt-file basically parses pkgs.alpinelinux.org website...so using a JSON decode as i wrote before would be better, since does not need bloated software to reach the same goal. Jul 3, 2017 at 9:55
  • Indeed, you can see that with -d option. And it doesn't strip whitespaces. And for some reason with --arch it doesn't display all the results.
    – x-yuri
    Jun 2, 2020 at 16:56
2

Example looking for file telnet:

enter image description here

1

given a binary's name, which package I should install on Alpine Linux.

The answer to the body of the question (not the same as the answer to the title of the question) is

apk search -xqa cmd:vim (where vim is the "binary's name"). In this case, there are two packages that provide that command.

1
  • This should be the accepted answer for the question. Other solutions that propose to use apk-file or the alpine package website are also valid, but for the specific case of finding which package provides a specific command, this one is the most straight forward. Jan 6 at 12:25

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.