जवाबों:
dpkg -c
(या --contents
) एक .deb पैकेज फ़ाइल की सामग्री को सूचीबद्ध करता है (यह एक फ्रंट-एंड टू है dpkg-deb
।)
dpkg -c package_file.deb
पैकेज फ़ाइलों के बजाय पैकेज नामों के साथ सीधे काम करने के लिए, आप उपयोग कर सकते हैं apt-file
। (आपको apt-file
पहले पैकेज स्थापित करने की आवश्यकता हो सकती है ।)
sudo apt-file update
apt-file list package_name
जैसा कि पहले टिप्पणी में कहा गया है, आपके पहले से ही कॉन्फ़िगर किए गए Apt रिपॉजिटरी में संकुल के लिए apt-file सूची सामग्री है। यह अप्रासंगिक है कि कोई विशेष पैकेज है या स्थापित नहीं है।
sudo apt-file update
), और आपके पहले से कॉन्फ़िगर किए गए Apt रिपॉजिटरी में संकुल के लिए सामग्री को सूचीबद्ध करता है।
dpkg -c
अच्छा!
.deb
आपके द्वारा अलग से डाउनलोड की गई फ़ाइल के बजाय कॉन्फ़िगर किए गए रिपॉजिटरी से आ रहा है । हालांकि मूल प्रश्न अस्पष्ट है।
--contents
इसके बजाय का उपयोग करें -L
:
dpkg --contents PACKAGENAME
जब इस तरीके का उपयोग किया जाता dpkg
है dpkg-deb
, तो फ्रंट-एंड के रूप में कार्य करता है , इसलिए man dpkg-deb
सभी विकल्पों को देखने के लिए उपयोग करें।
आप पैकेज सामग्री देखने के लिए एक संग्रह ब्राउज़र का उपयोग कर सकते हैं।
dpkg --contents google-chrome-stable_current_amd64.deb
और यह उन सभी फाइलों को सूचीबद्ध करेगा जो इसे स्थापित करेगी (ज्यादातर /opt/google/chrome
), इनमें से कोई भी वर्तमान में मेरे सिस्टम पर इस प्रकार स्थापित नहीं है। (मैं Xubuntu 11.10 चला रहा हूँ अगर यह मायने रखता है।)
dpkg --contents
आपको अनइंस्टॉल किए गए पैकेज को देखने देगा। यदि .deb अभी तक आपके सिस्टम पर नहीं है, तो करें
apt-get --download-only install pkgname
पैकेज डाउनलोड हो जाएगा, /var/cache/apt/archives
लेकिन इंस्टॉल नहीं किया जाएगा।
सबसे अच्छा तरीका सीधे पैकेज रिपॉजिटरी ब्राउज़ करना होगा:
http://packages.debian.org/[distro name]/all/[package name]/filelist
उदाहरण:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(बशर्ते आपने lynx
स्थापित किया हो)।
मैंने @ baldoz के http आइडिया को लिया और उबंटू और डेबियन के लिए इसे सामान्यीकृत किया, थोड़ा जोड़ा sed
और एक बैश फंक्शन वन-लाइनर में लपेटा:
function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]\+>//g' -e '/^$/d'; }
उपयोग:
$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz
कई लाइनों पर एक ही कार्य:
function deb_list () {
curl -s $(lsb_release -si \
| sed -e 's Ubuntu https://packages.ubuntu.com ' \
-e 's Debian https://packages.debian.org '
)/$(lsb_release -sc)/all/$1/filelist \
| sed -n -e '/<pre>/,/<\/pre>/p' \
| sed -e 's/<[^>]\+>//g' -e '/^$/d';
}
व्याख्या की:
https://packages.ubuntu.com
या के साथ बदल देता हैhttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
और </pre>
टैग के बीच ) है; किसी भी HTML टैग से दूसरी स्ट्रिप्स; तीसरा किसी भी खाली लाइनों को हटाता है।नोट: यह पीपीए, वैकल्पिक स्रोतों रेपो को नहीं खोजता है और आपके द्वारा चलाए जा रहे डेबियन / ubuntu के रिलीज के लिए केवल आधिकारिक पैकेज उपलब्ध हैं।
उन सभी लोगों के लिए जो अभी भी जनवरी 2017 में इस मुद्दे को भूल रहे हैं, आप कुछ भी डाउनलोड किए बिना डेबियन 8.5 में apt और dpkg के हाल के संस्करणों के साथ कुछ अच्छा सामान रख सकते हैं।
डाउनलोड के बिना देब फ़ाइल की सूची सामग्री:
सबसे पहले डिबेट फ़ाइल का पूर्ण यूआरएल खोजें:
root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4
PS: --print-uris स्विच डिब पैकेज के url को प्रिंट करता है लेकिन डिबेट डाउनलोड नहीं होता है।
फिर इसे डाउनलोड किए बिना डिबेट पैकेज की सामग्री प्रदर्शित करें:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................
पुनश्च: एक ही परिणाम के साथ प्राप्त किया जा सकता है
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
डाउनलोड किए बिना, उपरोक्त डिबेट पैकेज से एक फ़ाइल निकालें।
उदाहरण के लिए हम पैकेज के मैन पेज को इस पैकेज को स्थापित किए बिना पढ़ना चाहते हैं और बिना डेबिट पैकेज को डाउनलोड किए भी पढ़ना चाहते हैं।
जैसा कि सलाह के अनुसार डिब पैकेज के अंदर मैन पेज का नाम dpkg -c
है./usr/share/man/man1/yade.1.gz
मक्खी पर मैन पेज पढ़ने के लिए:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin
मैन एप्लिकेशन को सही ढंग से मैन एप्लिकेशन का उपयोग करके प्रदर्शित किया जाता है।
पुनश्च: उपरोक्त पाइप ar कमांड के साथ काम नहीं करते हैं।
root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29
लगता है कि इसे पहले स्थापित करना या .deb
फ़ाइल से सूची निकालना संभव नहीं है ।
निम्नलिखित कमांड आज़माएं:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
language-pack-en
अपने पैकेज के नाम के साथ बदलें ।
यह मूल रूप से इसके .deb
माध्यम से निकाली गई फ़ाइल पढ़ता है curl
और इस dpkg --contents FILE
पर चलता है।
आप पैकेज फ़ाइल डाउनलोड किए बिना भी सामग्री की जांच कर सकते हैं।
इसलिए यदि आप .deb
फ़ाइल का URL जानते हैं , तो निम्नलिखित शेल कमांड सभी पैकेज फाइलों को सूचीबद्ध करेगा:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
कर्ल params: -s
- चुप, -L
- स्थानांतरित लिंक का पालन करें।
यदि आप URL नहीं जानते हैं, तो इसके द्वारा प्राप्त करें: apt --print-uris
उदा
apt --print-uris install avis | grep avis