30

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

29

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
  • 2
    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
    Commented 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. Commented 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? Commented Apr 17, 2018 at 15:20
  • No, you can't as yet...sorry Commented Apr 18, 2018 at 17:51
  • why is --who-owns undocumented?
    – Rolf
    Commented Apr 22, 2020 at 10:58
6

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
    Commented 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. Commented 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
    Commented Jun 2, 2020 at 16:56
3

Example looking for file telnet:

enter image description here

2

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. Commented Jan 6, 2023 at 12:25

You must log in to answer this question.

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