একটি ফাইল সরবরাহকারী প্যাকেজটি কীভাবে খুঁজে পাব?


466

সহজ যথেষ্ট প্রশ্ন: আমার সিস্টেমে কোনও ফাইলের পথ দেখিয়ে আমি এটি ব্যবহার করতে পারি এমন কোনও শেল কমান্ড (বা জিইউআই পদ্ধতি) আছে কি তা আমাকে জানায় যে এটি কোন প্যাকেজটি রেখেছিল? ধরে নিচ্ছি ফাইলটি আসলে একটি প্যাকেজ থেকে এসেছে, এটি।

বোনাস প্রশ্ন: এটি যদি আমার সিস্টেমে ইনস্টল না হওয়া কোনও ফাইল হয়? সেখানে কি আছে, বলুন, এমন একটি ওয়েবসাইট যা আমাকে একটি ফাইল সন্ধান করতে এবং কোন প্যাকেজগুলি সরবরাহ করে তা দেখতে দেয়?


6
আমি সবসময় এই নিজেকে বিস্ময়ের উদ্রেক করেছি - আমি yum সহযোগে জানি তুমি ইস whatprovides <filepath> / <ফাইলের নাম> কি করতে পারেন কিন্তু আমি কখনোই সত্যিই প্যাকেজগুলি ওয়েবসাইট ছাড়া অন্য অ্যাপটিচিউড যে বিকল্প পাওয়া যায়
মার্কো Ceppi


এখানে কোন উত্তর আসলে Provides:প্রক্রিয়াটি আবরণ করে না । আরও কিছু বিশদে, কোনও প্যাকেজে বাইনারি হিসাবে পছন্দ করা mailxবা sendmailঅন্তর্ভুক্ত নয় ; পরিবর্তে, বিভিন্ন প্যাকেজগুলি তাদের নিজস্ব বাইনারিগুলি ইনস্টল করে এবং তারপরে তাদের কিছু "ক্যানোনিকাল" নামে উপলব্ধ করে । আরও জিজ্ঞাসা করুন জিজ্ঞাসাবাবু/etc/alternatives
প্রশ্ন /

উত্তর:


438

dpkgকোন ইনস্টল করা প্যাকেজ কোনও ফাইলের মালিক তা সন্ধান করতে আপনি কমান্ডটি ব্যবহার করতে পারেন :

থেকে man dpkg:

-এস, - অনুসন্ধান ফাইলের নাম-অনুসন্ধান-নিদর্শন ...
                  ইনস্টল করা প্যাকেজগুলি থেকে একটি ফাইলের নাম অনুসন্ধান করুন।

উদাহরণ:

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

আপনি হয় পুরো পথ দিয়ে অথবা কেবল ফাইলের নাম দিয়ে অনুসন্ধান করতে পারেন।

আপনি যদি এখনও আপনার কম্পিউটারে ইনস্টল না হওয়া ফাইলগুলি অনুসন্ধান করতে চান তবে আপনি উবুন্টু প্যাকেজস অনুসন্ধান ব্যবহার করতে পারেন


5
আমি খুব দ্রুত ডলোকট ব্যবহার করার পরামর্শ দিচ্ছি যা দ্রুত দেখার জন্য প্রতিদিন আপডেট হয়।
ড্যানিয়েল টি চেন

20
ইঙ্গিত: আপনি যদি পুরো পথটি না জানেন তবে কেবল কমান্ডের নামটি ব্যবহার whichকরে তার প্রোগ্রামটি সন্ধান করতে পারেন :dpkg -S `which firefox`
লেকেনস্টেইন

1
@ ড্যানিয়েলটিচেন, তবে কাজটি dlocateকরতে পারবেন না, যদি ডলোকটের ডেটাবেস পুরানো থাকে। sudo update-dlocatedbএটি আপডেট করার জন্য আপনাকে কল করতে হবে।
জার্নো

2
যদি dpkgসঠিক পথটি কোনও কিছু না ফেরায় (উদাহরণস্বরূপ dpkg /usr/bin/java), কেবল এক্সিকিউটেবলের নাম চেষ্টা করুন (উদাঃ dpkg java)।
ড্যান ড্যাসকলেস্কু

2
এছাড়াও আপনি ব্যবহার করতে পারেন realpathএই মত symlinks সমাধান করতে: dpkg -S $(realpath $(which <command>))
লার্স ন্যাস্ট্রিম

236

apt-fileকমান্ড কমান্ড লাইন থেকে আপনার জন্য এটা করতে পারেন। উত্স থেকে প্যাকেজ তৈরি করার সময় আমি এটি প্রায়শই ব্যবহার করি। আপনার সিস্টেমে ইতিমধ্যে ইনস্টল থাকা প্যাকেজগুলির দ্বারা সরবরাহিত ফাইলগুলির জন্য, apt-cacheঅন্য একটি পছন্দ।

ইনস্টল করতে apt-file, করুন:

sudo apt-get install apt-file

তারপরে, আপনাকে এটির ডাটাবেস আপডেট করতে হবে:

apt-file update

এবং, অবশেষে, ফাইলটি অনুসন্ধান করুন:

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

তবে অনেকটা বন্ধুত্বপূর্ণ উপায় হ'ল উবুন্টু প্যাকেজস অনুসন্ধান ওয়েবসাইটটি ব্যবহার করা। নির্দিষ্ট ফাইলের নামের জন্য তাদের কাছে "প্যাকেজগুলির সামগ্রীগুলি অনুসন্ধান করার" বিকল্প রয়েছে।


21
আমার মতে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। তবে উবুন্টু প্যাকেজস অনুসন্ধানের প্রতিক্রিয়ায় , আমি যুক্তি দিতে পারি যে এই শেল প্রোগ্রামটি খুব সহজ এবং খুব সহজে মনে রাখা সহজ (একবার আপনি এটি জেনে গেলে)। আপনি যদি নিজের মানক সরঞ্জাম হিসাবে ডিপি কেজি, অ্যাপটি-গেট বা প্রবণতা ব্যবহার করেন তবে ইন্টারনেট সার্ফ করার জন্য ক্রোম ফায়ার করার পক্ষে বন্ধুত্বপূর্ণ কিছুই নেই!
ব্যবহারকারী2097818

3
@ user2097818 এটি গ্রহণযোগ্য উত্তর না হওয়ার কারণটি হ'ল আমার প্রাথমিক প্রশ্নটি ইনস্টল থাকা প্যাকেজ এবং সিস্টেমে থাকা ফাইলগুলির মধ্যে সীমাবদ্ধ। apt-fileপ্রায়শই মিথ্যা ইতিবাচক অর্থাত্‍ প্যাকেজগুলি ইনস্টল হয় না। অবশ্যই এই উত্তরটি "বোনাস প্রশ্ন" এর জন্য দুর্দান্ত।
ডেভিড জেড

3
বিশ্বের রেডহাট দিক থেকে তাদের জন্য - apt-file search <>এর নিকটতম এনালগ dnf/yum whatprovides <>
fdledgling

আমি ওরফে apt-file findযেমন apt-findদীর্ঘ সময় আগে এবং এটি সত্যিই কুশলী আছে! বিটিডব্লিউ, সর্বশেষ সংস্করণগুলির জন্য মূল প্রয়োজন apt-file update
Val

43

ইনস্টল করা হয়নি এমন প্যাকেজগুলিতে ফাইলগুলি সন্ধানের জন্য এ্যাপ-ফাইলও রয়েছে। উদাহরণ স্বরূপ:

apt-file list packagename

17

আপনি উবুন্টু প্যাকেজস ওয়েবসাইটে বিভিন্ন উবুন্টু রিলিজের অন্তর্ভুক্ত প্যাকেজগুলির বিষয়বস্তু অনুসন্ধান করতে পারেন । " প্যাকেজগুলির বিষয়বস্তু অনুসন্ধান করুন " শিরোনামের নীচে দেখুন ।

উদাহরণস্বরূপ, লুসিডে (10.04) libnss3.so এর অনুসন্ধান ফলাফল এখানে রয়েছে:

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 আমাকে আমার পুরানো মাইক্রোসফ্ট উইন্ডোজ দ্যুতি সম্পর্কে মনে করিয়ে দিয়েছে, যার সাথে আমি খুব খুশি যে আমি আর জড়িত নই। আমি দেখেছি যে ট্র্যাকার গতকাল ইনস্টল করা হয়েছিল তাই মূল হিসাবে, আমি এন্টারহোটসের ক্যানোপি সহ এবং এর থেকে সমস্ত সমস্যা সমাধান হয়ে গেছে rid আমি আপনার সমস্ত সহায়তার জন্য সত্যিই আপনাকে ধন্যবাদ। এরকম সমর্থন পাওয়া এত বড় বিষয়। আবার ধন্যবাদ! কেভিন
রেকিভ

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ফলেই এটি হয়েছিল:

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না হওয়ার জন্য কেবল বাইনারি নাম । এটি আমাকে আবিষ্কার করতে সহায়তা করেছিল যে আমাকে https://packages.ubuntu.com/#search_contentsdnsutils অনুসন্ধানের প্রয়োজন ছাড়াই ইনস্টল করা দরকার


এটি আমার একটি ভাল উত্তর যে আমার মুছে ফেলা উচিত!
অ্যালেক্সেক্স রোচে

3

আমি whichআমার সিস্টেমে কী ইনস্টল করা হয়েছিল তা ট্র্যাক করার চেষ্টা করছিলাম। কিছুক্ষণ কাজ করার পরে আমি এপ-হোয়াটপ্রোভাইড তৈরি করেছি

#!/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/… এ একটি ব্যাকআপ তৈরি করেছি এবং আপনি যদি তা প্রত্যাহার / প্রত্যাখ্যান করেন তবে আমার নিজের উত্তর তৈরি করব।
ব্রুনো ব্রোনোস্কি

আপডেট: পাস্তা এই উত্তরটি অনুলিপি করাতে এবং এতে সূক্ষ্ম পরিবর্তন করা স্বল্প বলে মনে হচ্ছে, তবে আমার সম্পাদনা প্রত্যাখ্যান হয়েছে। আমি আশা করি আপনি আমার উত্তরটির অখণ্ডতা বজায় রেখেছেন বলে মনে হয় ।
ব্রুনো ব্রোনোস্কি

সম্পাদনা বা হ্যাক করতে নির্দ্বিধায়; আপনার পক্ষে এটি আরও ভাল করে তোলে এমন কিছু, (এজন্যই আমি এমআইটি লাইসেন্স যুক্ত করেছি! এমনকি আমারও credit
ণের

2

আপনার এটি করার একটি কারণ হ'ল আপনি যদি এমন সফ্টওয়্যার সংকলন করে যা ইতিমধ্যে একটি উবুন্টু প্যাকেজ রয়েছে, আপনি চালাতে পারেন apt-get build-dep $PACKAGENAME। এটি আপনাকে সংকলনের জন্য প্রয়োজনীয় সমস্ত প্যাকেজ ইনস্টল করবে $PACKAGENAME

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.