ගොනුවක් සපයන පැකේජය සොයා ගන්නේ කෙසේද?


512

ප්‍රමාණවත් තරම් සරල ප්‍රශ්නය: මගේ පද්ධතියේ ගොනුවකට මාවත ලබා දී මට එය භාවිතා කළ හැකි ෂෙල් විධානයක් (හෝ GUI ක්‍රමයක්) තිබේද? ගොනුව ඇත්ත වශයෙන්ම පැකේජයකින් පැමිණියේ යැයි උපකල්පනය කිරීම, එනම්.

පාරිතෝෂික ප්‍රශ්නය: එය මගේ පද්ධතියේ ස්ථාපනය කර නොමැති ගොනුවක් නම් කුමක් කළ යුතුද? ගොනුවක් බැලීමට සහ එය සපයන පැකේජ තිබේදැයි බැලීමට මට ඉඩ දෙන වෙබ් අඩවියක් තිබේද?


6
මම හැම විටම මෙම කල්පනා කරනවා මම - මම ඔයාට yum whatprovides <filepath> / <ගොනු> කරන්න පුළුවන් YUM සමග නොදන්නා නමුත්, මම ඇත්තටම පැකේජ වෙබ් අඩවිය හැර වෙනත් අභිෙයෝග තා බව විකල්පයක් සොයා ගෙන ඇත කවදාවත්
මාර්කෝ Ceppi


මෙහි කිසිදු පිළිතුරක් ඇත්ත වශයෙන්ම Provides:යාන්ත්‍රණය ආවරණය නොකරයි. තවත් විස්තරාත්මකව, ඕනෑම පැකේජයක ද්විමය ලෙස වැනි mailxහෝ sendmailඇතුළත් කර නැති විධානයක් ; ඒ වෙනුවට, විවිධ පැකේජයන් තමන්ගේම ද්විමයන් ස්ථාපනය කර ඒවායින් සමහරක් “කැනොනිකල්” නමක් යටතේ ලබා ගත හැකිය . Askubuntu.com/questions/366135/… ද බලන්න/etc/alternatives
ත්‍රිත්ව

Answers:


470

dpkgකුමන ස්ථාපිත පැකේජයක් ගොනුවක් සතුව ඇත්දැයි සොයා ගැනීමට ඔබට විධානය භාවිතා කළ හැකිය :

සිට man dpkg:

-S, - සෙවුම් ගොනු නාමය-සෙවුම් රටාව ...
                  ස්ථාපිත පැකේජ වලින් ගොනු නාමයක් සොයන්න.

උදාහරණයක්:

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

ඔබට සම්පූර්ණ මාර්ගයකින් හෝ ගොනු නාමයෙන් සෙවිය හැකිය.

ඔබේ පරිගණකයේ තවම ස්ථාපනය කර නොමැති ගොනු සෙවීමට ඔබට අවශ්‍ය නම්, ඔබට උබුන්ටු පැකේජ සෙවීම භාවිතා කළ හැකිය


6
වේගවත් සොයා ගැනීම සඳහා දිනපතා යාවත්කාලීන වන dlocate භාවිතා කිරීම මම තරයේ නිර්දේශ කරමි.
ඩැනියෙල් ටී චෙන්

20
ඉඟිය: ඔබ සම්පූර්ණ මාර්ගය නොදන්නේ නම්, නමුත් විධාන නාමය පමණක් නම්, whichඔහු වැඩසටහන සොයා ගැනීමට භාවිතා කරන්න:dpkg -S `which firefox`
Lekensteyn

1
D ඩැනියෙල්ටෙන්, නමුත් dlocateඩොලොකේට්ගේ දත්ත සමුදාය යල් පැන ගියහොත් එම කාර්යය නොකළ හැකිය. sudo update-dlocatedbඑය යාවත්කාලීන කිරීමට ඔබට ඇමතිය යුතුය.
jarno

2
නම් dpkgනිශ්චිත වන්න දෙයක් (උදා: ආපසු නැත dpkg /usr/bin/java), එම ක්රියාවෙහි යෙදවිය ගේ නමට පමණක් උත්සාහ කරන්න (උදා: dpkg java.)
ඩෑන් ඩස්කල්ස්කු

2
ඔබට realpathසිම්ලින්ක්ස් විසඳීමටද භාවිතා කළ හැකිය , dpkg -S $(realpath $(which <command>)).
ලාර්ස් නිස්ට්‍රෝම්

262

මෙම apt-fileවිධානය විධාන රේඛාවේ සිට ඔබ වෙනුවෙන් එය කළ හැකි වනු ඇත. ප්‍රභවයෙන් පැකේජ සෑදීමේදී මම එය නිතර භාවිතා කරමි. ඔබේ පද්ධතියේ දැනටමත් ස්ථාපනය කර ඇති පැකේජ මගින් සපයන ගොනු සඳහා, apt-cacheතවත් තේරීමකි.

ස්ථාපනය කිරීමට apt-file, කරන්න:

sudo apt-get install apt-file

එවිට, ඔබ එහි දත්ත සමුදාය යාවත්කාලීන කළ යුතුය:

sudo apt-file update

අවසාන වශයෙන්, ගොනුව සොයන්න:

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

කෙසේ වෙතත් වඩාත් මිත්‍රශීලී ක්‍රමයක් වන්නේ උබුන්ටු පැකේජ සෙවුම් වෙබ් අඩවිය භාවිතා කිරීමයි . නිශ්චිත ගොනු නාමයක් සඳහා "පැකේජවල අන්තර්ගතය සෙවීමට" ඔවුන්ට විකල්පයක් ඇත.


21
මගේ මතය අනුව මෙය පිළිගත් පිළිතුර විය යුතුය. නමුත් උබුන්ටු පැකේජ සෙවුමට ප්‍රතිචාර වශයෙන් , මෙම සරල ෂෙල් වැඩසටහන අතිශයින් මිත්‍රශීලී හා මතක තබා ගැනීමට පහසු යැයි මම තර්ක කළ හැකිය (ඔබ එය දැනගත් පසු). ඔබ ඔබේ සම්මත මෙවලම් ලෙස dpkg, apt-get, හෝ aptitude භාවිතා කරන්නේ නම්, අන්තර්ජාලයේ සැරිසැරීමට Chrome වෙඩි තැබීම ගැන මිත්‍රශීලී කිසිවක් නැත!
user2097818

3
@ user2097818 මෙය පිළිගත් පිළිතුර නොවීමට හේතුව මගේ මූලික ප්‍රශ්නය පද්ධතියේ ලිපිගොනු සහ ස්ථාපනය කර ඇති පැකේජ වලට සීමා වීමයි. apt-fileබොහෝ විට ව්‍යාජ ධනාත්මක සොයා ගනී, එනම් ස්ථාපනය කර නොමැති පැකේජ. ඇත්ත වශයෙන්ම මෙම පිළිතුර "ප්‍රසාද ප්‍රශ්නය" සඳහා විශිෂ්ටයි.
ඩේවිඩ් ඉසෙඩ්

3
ලෝකයේ රෙඩ්හැට් පැත්තේ සිටින අයට - apt-file search <>එය ආසන්නතම ඇනලොග් වේ dnf/yum whatprovides <>.
ffledgling

මම බොහෝ කලකට පෙර අන්වර්ථ apt-file findකළ apt-findඅතර එය ඇත්තෙන්ම පහසුය! Btw, නවතම අනුවාද සඳහා root අවශ්‍ය වේ apt-file update.
val පවසන්නේ නැවත

මම ලෝකයේ මෙම ක්රියාකාරිත්වය තුළට ඉදි කර නැත ඇයි යන ප්රශ්නය බව අනුමාන apt, apt-getහෝ අනෙකුත් පෙරනිමි එක් apt-*වැඩසටහන්. එය ඕනෑම පැකේජ කළමණාකරුවෙකුගේ සෙවුම් හැකියාවන්හි ප්‍රධාන අංගයක් සේ පෙනේ.
theferrit32

44

ස්ථාපනය කර නොමැති ඇසුරුම්වල ලිපිගොනු බැලීම සඳහා apt-file ද ඇත. උදාහරණයක් වශයෙන්:

apt-file list packagename

17

උබුන්ටු පැකේජ වෙබ් අඩවියේ විවිධ උබුන්ටු නිකුතුවලට ඇතුළත් කර ඇති පැකේජවල අන්තර්ගතය ඔබට සෙවිය හැකිය . " ඇසුරුම්වල අන්තර්ගතය සොයන්න " යන මාතෘකාව යටතේ බලන්න .

උදාහරණයක් ලෙස, පැහැදිලි (10.04) හි libnss3.so සඳහා සෙවුම් ප්‍රති results ල මෙන්න:

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&arch=any


මෙය මෑතකදී දෝෂයක් ලබා දෙයි.
පවෙල් වෙසෙලොව්

13

ඔබ අදහස් කළේ, කුමන පැකේජයක්ද, කුමන යෙදුමද යන්න නොවේ. යෙදුම ඔබේ පැකේජ කළමනාකරු වේ, උදා Software Center.

භාවිතා කිරීම dpkg:

dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs

උදාහරණයක්

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

භාවිතා කිරීම apt-file:

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

හෝ හැකි ය:

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

උදාහරණයක්

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

හෝ මාර්ගගත මෙතන කොටසේ, Search the contents of packages.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

උදාහරණයක්

රූප විස්තරය මෙහි ඇතුළත් කරන්න


ඔබ අදහස් කළේ, කුමන පැකේජයක්ද, කුමන යෙදුමද යන්න නොවේ. යෙදුම ඔබේ පැකේජ කළමනාකරු, උදා: මෘදුකාංග මධ්‍යස්ථානය. හරි හරී. ඔබට ස්තුතියි! :)
රෙකෙව්

සියලු උදව්වට ස්තූතියි! මෙම / මෙම යෙදුම් ස්ථාපනය කර ඇත්තේ කුමන පැකේජයක් දැයි සොයා ගැනීමට මෙම යෝජනා කිසිවක් මට උදව් කළේ නැත. සියලුම සෙවීම් "ට්රැකර්" වෙත ආපසු ගෙන යයි. මම සැක කළේ එය එන්තොට්ස්ගේ වියන් විය හැකි බවයි. එම සැතපුම් දිගු EULA මගේ පැරණි මයික්‍රොසොෆ්ට් වින්ඩෝස් වේලාව මට මතක් කර දුන් අතර, ඒ සමඟ මම තවදුරටත් සම්බන්ධ නොවීම ගැන මම සතුටු වෙමි. ට්රැකර් ඊයේ ස්ථාපනය කර ඇති බව මම දුටුවෙමි, මූල ලෙස, මම එය ඉවත් කර, එන්තොෆ්ට්ස් වියන් සමඟ, සහ සියලු ගැටළු විසඳනු ලැබේ. ඔබගේ සියලු උදව්වට මම ඔබට ස්තූතිවන්ත වෙමි. එවැනි සහයෝගයක් ලැබීම එතරම්ම උතුම් දෙයකි. නැවත ස්තූතියි! කෙවින්
රෙකෙව්

4

මෙය ඇලෙක්ස් රොචේගේ විශිෂ්ට පිළිතුරේ දිගුවකි . මම එම පිළිතුරට සංස්කරණයක් කිරීමට උත්සාහ කළ නමුත් එය ප්‍රතික්ෂේප විය (ඇලෙක්ස් විසින් නොවේ)


මම උත්සාහ whichකළේ මගේ පද්ධතියේ ස්ථාපනය කර ඇති දේ සොයා ගැනීමටයි . පොඩි වැඩකට පස්සේ මම නිර්මාණය කළා/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}"

ස්ථාපනය කර ඇති බොහෝ දේ සඳහා ඔබට භාවිතා කළ හැකිය:

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

ස්ථාපනය කර නැති දේවල් සඳහා, ඔබට මෙය භාවිතා කළ හැකිය:

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

මෙම apt-whatprovidesතිර රචනය හා ඔබේ පද්ධතිය මත නොවන බව ගොනු සඳහා ක්රියා කරයි. උදාහරණයක් ලෙස, මගේ පද්ධතියේ අඩුවක් digතිබුණත්, pingඑසේ වූයේ නම් එහි ප්‍රති ulted ලය වූයේ:

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

(ස්ථාපනය කර ඇති) Searching forසඳහා සම්පූර්ණ මාර්ගයක් pingසහ digස්ථාපනය නොකිරීම සඳහා ද්විමය නම පමණක් බව සලකන්න . සෙවීමකින් dnsutilsතොරව ස්ථාපනය කිරීමට අවශ්‍ය බව සොයා ගැනීමට මෙය මට උදව් විය https://packages.ubuntu.com/#search_contents


මෙය එතරම් හොඳ පිළිතුරක් වන අතර මා මකා දැමිය යුතුය!
ඇලෙක්ස් රොචේ

3

මම උත්සාහ whichකළේ මගේ පද්ධතියේ ස්ථාපනය කර ඇති දේ සොයා ගැනීමටයි . කුඩා වැඩ කිරීමෙන් පසු මම 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%:*}

බොහෝ දේ සඳහා ඔබට භාවිතා කළ හැකිය

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

1
ඇලෙක්ස්, මම මේ පිළිතුරට කැමතියි. මම හිතන්නේ ඔබ මගේ සංස්කරණයට කමක් නැහැ. පද්ධතියේ ස්ථාපනය කර නොමැති ගොනු සඳහාද මම එය ක්‍රියාත්මක කළෙමි. මම gist.github.com/RichardBronosky/… හි උපස්ථයක් සාදා ඇති අතර ඔබ එය ආපසු හරවා / ප්‍රතික්ෂේප කළහොත් මගේම පිළිතුරක් සාදනු ඇත.
බ un නෝ බ්‍රොනොස්කි

යාවත්කාලීන කිරීම: පැස්ටා මෙම පිළිතුර පිටපත් කර එහි සියුම් වෙනස්කම් සිදු කිරීම සිහින් බවක් දැනේ, නමුත් මගේ සංස්කරණය ප්‍රතික්ෂේප විය. මම ඔබගේ පිළිතුර අඛණ්ඩතාව පවත්වාගෙන මෙන් ඔබ දැනෙනවා බලාපොරොත්තු බෝම්බ .
බ un නෝ බ්‍රොනොස්කි

සංස්කරණය කිරීමට හෝ හැක් කිරීමට නිදහස් වන්න; ඔබට වඩා හොඳ වන ඕනෑම දෙයක්, (ඒ නිසයි මම MIT බලපත්‍රය එකතු කළේ! මට ණය පවා අවශ්‍ය නැහැ.)
ඇලෙක්ස් රොචේ

2

ඔබට මෙය කිරීමට සිදුවිය හැකි එක් හේතුවක් නම්, ඔබ දැනටමත් උබුන්ටු පැකේජයක් ඇති මෘදුකාංග සම්පාදනය කරන්නේ නම්, ඔබට ක්‍රියාත්මක කළ හැකිය apt-get build-dep $PACKAGENAME. එය ඔබට සම්පාදනය කිරීමට අවශ්‍ය සියලුම පැකේජ ස්ථාපනය කරනු ඇත $PACKAGENAME.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.