Hogyan találom meg a fájlt tartalmazó csomagot?

385

Egyszerű kérdés: Van-e shell-parancs (vagy GUI-módszer), amit a rendszeremben lévő fájl elérési útja alapján használhatok? Feltéve, hogy a fájl ténylegesen egy csomagból származik, azaz.

Bónuszkérdés: mi van akkor, ha ez a fájl nincs telepítve a rendszeremen? Van egy olyan weboldal, amely lehetővé teszi számomra, hogy felnézek egy fájlt, és megnézem, milyen csomagokat, ha vannak ilyenek?

    
készlet David Z 30.07.2010 10:10
forrás

8 válasz

363

Adpkg parancs használatával megtudhatja, melyik telepített csomag tulajdonosa egy fájlnak:

man dpkg:

-S, --search filename-search-pattern...
                  Search for a filename from installed packages.

Példa:

$ dpkg -S /bin/ls
coreutils: /bin/ls

Keressen akár teljes elérési utat, akár csak a fájlnevet.

Ha olyan fájlokat szeretne keresni, amelyeket még nem telepített a számítógépre, használhatja az Ubuntu csomagok keresését

    
válasz adott Ressu 30.07.2010 10:42
forrás
189

A apt-file parancs ezt teheti meg a parancssorból. Gyakran használom, amikor csomagokat építek ki a forrásból. A rendszeren már telepített csomagok által biztosított fájlok esetében a apt-cache másik választása.

Aapt-file telepítéséhez:

sudo apt-get install apt-file

Akkor frissítenie kell az adatbázist:

apt-file update

Végül keresd meg a fájlt:

$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

Azonban sokkal barátságosabb módja az Ubuntu csomagok keresésének használata. Lehetőségük van arra, hogy "bizonyos csomagok tartalmát keressék" egy adott fájlnévhez.

    
válasz adott jbowtie 11.08.2010 04:43
forrás
35

Van egy apt-fájl is a nem telepített csomagok keresésére. Például:

apt-file list packagename
    
válasz adott ptman 30.07.2010 10:49
forrás
16

A különböző Ubuntu kiadások csomagjainak tartalmát megtalálhatja az Ubuntu csomagok webhelyen. Tekintse meg a " Keresés a csomagok tartalmát " alatt.

Itt például a libnss3.so a lucid (10.04) keresési eredményei:

link

p>     
válasz adott moberley 11.08.2010 04:42
forrás
10

Úgy érted, melyik csomagot, és nem melyik alkalmazás. Az alkalmazás a csomagkezelő, pl. Software Center.

dpkg:

használata
dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs

Példa

% dpkg -S /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

apt-file:

használata
apt-file search /usr/lib/tracker/tracker-store

vagy lehetséges is:

apt-file search --regex /tracker-extract$
apt-file search --regex /tracker-miner-fs$

Példa

% apt-file search /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

Vagy online itt , aSearch the contents of packages részben.

Példa

    
válasz adott A.B. 29.11.2015 16:57
forrás
2

Kerestem a telepítettwhich rendszert a rendszeremen. Egy kis munka után létrehoztam apt-whatprovides

#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY=$(realpath $(which $@))
PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$")
echo ${PACKAGE%:*}

Bár a legtöbb THING számára csak a

-ot használhatja
apt-file search $(realpath $(which THING))|grep 'THING$'
    
válasz adott Alexx Roche 17.03.2018 16:25
forrás
2

Ez a Alexx Roche kiváló válaszának kiterjesztése. Megpróbáltam szerkeszteni ezt a választ, de elutasították (bár nem Alexx)

Kerestem a telepítettwhich rendszert a rendszeremen. Egy kis munka után létrehoztam/usr/local/bin/apt-whatprovides

#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY="$(realpath $(which $@) 2>/dev/null)"
[ -z "$BINARY" ] && BINARY="$@"
echo Searching for $BINARY
PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
echo "${PACKAGE}"

Bár a legtöbb THING számára telepítve van, egyszerűen csak:

apt-file search $(realpath $(which THING)) | grep 'THING$'

A nem telepített THING-ok esetén a következőket teheti:

apt-file search THING | grep '/THING$'

Aapt-whatprovides szkript olyan fájloknál működik, amelyek a rendszeren vannak és nem. Például a rendszernek nem voltdig, de voltping, így ennek eredménye:

pi@raspberrypi:~ $ apt-whatprovides ping
Searching for /bin/ping
inetutils-ping: /bin/ping
iputils-ping: /bin/ping

pi@raspberrypi:~ $ apt-whatprovides dig
Searching for dig
dnsutils: /usr/bin/dig
epic4: /usr/share/epic4/script/dig
epic4-help: /usr/share/epic4/help/8_Scripts/dig
knot-dnsutils: /usr/bin/dig

Figyeljük meg, hogy aSearching for aping (telepítve) teljes elérési útja, és csak adig bináris neve nincs telepítve. Ez segített rájönni, hogy telepítenie kell adnsutils -ot anélkül, hogy keresni kellene a linket

    
válasz adott Bruno Bronosky 18.07.2018 07:45
forrás
1

Ennek egyik oka lehet, ha olyan szoftvereket állít össze, amelyek már tartalmaznak Ubuntu csomagot, futtathatja aapt-get build-dep $PACKAGENAME -ot. Ez telepíti a$PACKAGENAME összes csomagot.

    
válasz adott Rory 11.08.2010 21:31
forrás