Jak wyszukać plik w pakietach APK

13

Chciałbym wiedzieć, biorąc pod uwagę nazwę pliku binarnego, który pakiet powinienem zainstalować na Alpine Linux.

Jak mogę to zrobić?

Antoine
źródło

Odpowiedzi:

11

Zasadniczo masz trzy sposoby.

Po pierwsze: pakiet powinien zostać zainstalowany i musisz podać pełną ścieżkę:

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

Po drugie: skorzystaj z witryny pkgs.alpinelinux.org

Po trzecie: użyj interfejsu API api.alpinelinux.org, filtrując dane wyjściowe json. Do tego potrzebny jest parser json, taki jak jq:

apk add jq

następnie użyj interfejsu API zgodnie z instrukcjami tutaj podanymi

.: Francesco

Francesco Colista
źródło
apk infowydaje się być bliżej dpkg -S. W moim przypadku próbuję odpowiedzieć na pytanie „Jaki pakiet zawiera ten plik binarny, którego nazwę znam”, a nie skąd pochodzi ten wcześniej istniejący plik.
Att Righ,
dlatego apk info --who-owns /with/th/full/pathjest narzędziem, jeśli masz zainstalowany pakiet, w przeciwnym razie z CLI nie jest możliwe. Powinieneś sprawdzić stronę [pkgs.alpinelinux.org/contents] ( pkgs.alpinelinux.org/contents ). Zapisujesz tam nazwę binarną, a ona zwraca pakiet zawierający ten plik binarny.
Francesco Colista
Korzystanie apk info --who-owns, jak się masz, jeśli nie znasz pełnej ścieżki do pliku?
Elouan Keryell-Even
Nie, jeszcze nie możesz ... przepraszam
Francesco Colista 18.04.18
3

Szukasz odpowiednika Debiana apt-filedla Alpine. Wyszukanie tego daje plik apk .

Zasadniczo apt-file, ale dla alpejskich.

Gilles „SO- przestań być zły”
źródło
1
Właśnie o to mi chodzi. Wygląda na to, że plik apk nie jest pakietem alpejskim, z którym można go zainstalować go get github.com/jessfraz/apk-file(na szczęście działa na systemach innych niż alpejskie). Plik binarny jest prawdopodobnie statyczny, więc prawdopodobnie można go skopiować do kontenerów dokerów itp.
Att Righ
1
apt-file w zasadzie analizuje witrynę pkgs.alpinelinux.org ... więc użycie dekodowania JSON, tak jak napisałem wcześniej, byłoby lepsze, ponieważ nie potrzebuje rozdętego oprogramowania, aby osiągnąć ten sam cel.
Francesco Colista,