ইনস্টল না করে ডেবিয়ান প্যাকেজের ফাইলগুলি কীভাবে তালিকাভুক্ত করা যায়


284

এই কমান্ডটি কেবল ইনস্টল হওয়া প্যাকেজগুলির সামগ্রী তালিকাভুক্ত করতে পারে,

dpkg -L PACKAGENAME

তবে কীভাবে একটি ইনস্টল না করা প্যাকেজটির সামগ্রী তালিকাভুক্ত করবেন, প্যাকেজটির প্রাকদর্শন / পরীক্ষা করতে পারেন?


উবুন্টুতে অনুরূপ: Askubuntu.com/questions/32507/…
Ciro

উত্তর:


340

dpkg -c(বা --contents) একটি .deb প্যাকেজ ফাইলের বিষয়বস্তু তালিকাভুক্ত করে (এটির সামনে একটি প্রান্ত রয়েছে dpkg-deb))

dpkg -c package_file.deb

প্যাকেজ ফাইলগুলির চেয়ে প্যাকেজ নামের সাথে সরাসরি কাজ করতে, আপনি ব্যবহার করতে পারেন apt-file। (আপনার apt-fileপ্রথমে প্যাকেজটি ইনস্টল করার প্রয়োজন হতে পারে ))

sudo apt-file update        
apt-file list package_name

প্রথম মন্তব্যে যেমন বলা হয়েছে, অ্যাপ্ট-ফাইল আপনার ইতিমধ্যে কনফিগার করা এপ্ট সংগ্রহস্থলগুলির প্যাকেজগুলির সামগ্রীর তালিকা করে। কোনও নির্দিষ্ট প্যাকেজ ইনস্টল করা আছে কিনা তা অপ্রাসঙ্গিক।


17
apt-file এছাড়াও আপডেট করা প্রয়োজন ( sudo apt-file update), এবং কেবলমাত্র আপনার ইতিমধ্যে কনফিগার করা এপ্ট সংগ্রহস্থলগুলিতে প্যাকেজগুলির জন্য সামগ্রী তালিকাবদ্ধ করে।
কোয়াকোট কোয়েক্সোট

1
@ কোয়াকুইকসোট: উবুন্টু 12.04 এ এটি স্বয়ংক্রিয়
কনফিক

1
dpkg -cচমৎকার!
d -_- বি

2
অ্যাপ্ট-ফাইলের উত্তরটি ধরে নিয়েছে যে আপনার প্যাকেজটি .debআলাদাভাবে ডাউনলোড করা কোনও ফাইলের পরিবর্তে একটি কনফিগার করা সংগ্রহস্থল থেকে আসছে । মূল প্রশ্নটি যদিও অস্পষ্ট।
জোরদাচে

5
@ কনফিক, আমার পরীক্ষার দ্বারা নয়। আমি ১২.০৪.৪ চালাচ্ছি এবং এটি এখনও বলছে "ই: ক্যাশেটি খালি আছে You আপনাকে প্রথমে 'অ্যাপ্ট-ফাইল আপডেট' চালানো দরকার।"
ম্যাথু ফ্ল্যাশেন

58

এর --contentsপরিবর্তে ব্যবহার করুন -L:

dpkg --contents PACKAGENAME

যখন এই পদ্ধতিতে ব্যবহৃত হয়, তখন এর dpkgফ্রন্ট-এন্ড হিসাবে কাজ করে dpkg-deb, তাই man dpkg-debসমস্ত বিকল্প দেখতে ব্যবহার করুন।

আপনি প্যাকেজ সামগ্রী দেখতে একটি সংরক্ষণাগার ব্রাউজার ব্যবহার করতে পারেন।


2
আমি প্রথমে এটি ইনস্টল না করে এটি ইনস্টল না করে এটি কাজ করে না This
Xiè Jìléi

3
যদি আপনি এটি একটি আর্গুমেন্ট হিসাবে .deb ফাইল দেন (PACKAGENAME এর পরিবর্তে, এটি প্যাকেজ-ডিবি-ফাইল দিন) ভাল কাজ করা উচিত।
কোয়াকোট কোয়েসোট

3
এই উত্তরটি ভুল। আপনাকে প্রথমে প্যাকেজ ইনস্টল করতে হবে। আপনি যদি এটি ইনস্টল না করে থাকেন তবে আপনার কাছে একটি .deb ফাইল নেই।
নিল

এই আদেশটি আমার পক্ষে কাজ করে। উদাহরণস্বরূপ, আমি গুগল থেকে গুগল-ক্রোম-স্ট্যাবিলি_কারেন্ট_আমডি .৪.দেব ডাউনলোড করেছি। তারপরে কমান্ডটি জারি করা হয়েছে: dpkg --contents google-chrome-stable_current_amd64.debএবং এটি ইনস্টল করবে এমন সমস্ত ফাইলের তালিকাভুক্ত করেছে (বেশিরভাগ ক্ষেত্রে /opt/google/chrome), এর মধ্যে বর্তমানে কোনওটি আমার সিস্টেমে ইনস্টল করা হয়নি যেমন আমি এটি টাইপ করি। (আমি Xubuntu 11.10 চলছি যে যদি গুরুত্বপূর্ণ।)
quux00

10
@ নীল, উত্তরটি ভুল নয়। কেবলমাত্র আপনার একটি ডেব ফাইল রয়েছে এর অর্থ এটি ইনস্টল করা নেই। অ্যাপ্ট-ফাইলের জন্য সম্পূর্ণ বিল্ড-অ্যাসোসিয়েশন প্যাকেজ দরকার। ও
d -_- বি

21

dpkg --contentsআপনাকে আনইনস্টল করা প্যাকেজটি দেখতে দেবে। .Deb এখনও আপনার সিস্টেমে না থাকলে, করুন

apt-get --download-only install pkgname

প্যাকেজটি ডাউনলোড হবে /var/cache/apt/archivesতবে ইনস্টল করা হবে না।


3
আমি কি কেবল বিষয়গুলি ডাউনলোড না করে তালিকাভুক্ত করতে পারি? যদি আমি খুব ধীর সংযোগে আছি, এবং প্যাকেজটি ডাউনলোডের জন্য খুব বড় হলে। .Deb ফাইলে যদি ফাইলের শিরোনাম থাকে যেখানে সামগ্রীর তালিকাগুলি চলে আসে তবে আমার ধারণা, পুরো প্যাকেজটি সম্ভবত ডাউনলোড করার দরকার নেই। এটা কি সম্ভব?
Xiè Jìléi

13

সর্বোত্তম উপায় হ'ল সরাসরি প্যাকেজ সংগ্রহস্থল ব্রাউজ করা:

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ইনস্টল করেছেন তবে)।
রুসলান

8

আমি @ বাল্ডোজের এইচটিপি ধারণাটি নিয়েছি এবং এটি উবুন্টু এবং ডেবিয়ানের জন্য সাধারণীকরণ করেছি, কিছুটা যুক্ত করেছি 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';
}

ব্যাখ্যা:

  1. lsb_release -si "উবুন্টু" বা "দেবিয়ান" এর সাথে বেস url https://packages.ubuntu.comবা প্রতিস্থাপন করেhttps://packages.debian.org
  2. lsb_ReLive -sc কোডনামটি (যেমন "বিশ্বাসযোগ্য", "সিড", ইত্যাদি) প্রদান করে পুরো ইউআরএল তৈরি করতে এটি ব্যবহার করুন: https://packages.ubuntu.com/trusty/all/curl/filelist
  3. কার্ল সহ সেই URL টি আনুন এবং তিনটি সেড কমান্ডের মাধ্যমে এইচটিএমএল পাইপ করুন। প্রথমে কেবল ফাইল তালিকা ক্যাপচার করে (এর মধ্যে <pre>এবং </pre>ট্যাগগুলির মধ্যে কী রয়েছে ); দ্বিতীয়টি যে কোনও এইচটিএমএল ট্যাগ আউট; তৃতীয়টি কোনও ফাঁকা রেখা সরিয়ে দেয়।

দ্রষ্টব্য: এটি পিপিএ, বিকল্প এপো সোর্স রেপোগুলি অনুসন্ধান করে না এবং কেবল আপনি চালাচ্ছেন এমন ডেবিয়ান / উবুন্টু মুক্তির জন্য উপলব্ধ অফিসিয়াল প্যাকেজগুলির অনুসন্ধান করে।


এটি চালানোর জন্য আমার কি রুবি দরকার?
আনোয়ার

1
@ আনোয়ার, আমি প্রথমদিকে রুবি ব্যবহার করতাম কারণ আমি অলস এবং বহু লাইন রেজিক্সগুলি সেড / অ্যাওক / গ্রেপ এ চুষে ফেলেছিলাম। তবে আমি দুটি সিড কমান্ড ব্যবহার করার জন্য এটি আবার লিখেছি, কোনও রুবির দরকার নেই।
notpeter

নিস! এই উত্তরটি আমি খুঁজছিলাম
আনোয়ার

4

এই সমস্ত লোকদের জন্য যারা এখনও জানুয়ারীতে এই সমস্যাটি গুগল করতে পারেন, আপনি কিছু না ডাউনলোড করেই ডিবিয়ান 8.5-এ অ্যাপ্লিকেশন এবং ডিপি কেজির সাম্প্রতিক সংস্করণ সহ কিছু দুর্দান্ত জিনিস রাখতে পারেন।

ডাউনলোড ছাড়াই দেব ফাইলের বিষয়বস্তু তালিকাভুক্ত করুন:

প্রথমে দেব ফাইলের সম্পূর্ণ url সন্ধান করুন:

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

পিএস: --প্রিন্ট-ইউরিস স্যুইচ ডিবে প্যাকেজের ইউআরএল প্রিন্ট করে তবে দেব ডাউনলোড হয় না।

তারপরে ডেবি প্যাকেজের সামগ্রীগুলি ডাউনলোড না করে প্রদর্শন করুন:

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 ......................

PS: একই ফলাফল সঙ্গে অর্জন করা যেতে পারে

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

ম্যান অ্যাপ্লিকেশন ব্যবহার করে ম্যান পৃষ্ঠা সঠিকভাবে প্রদর্শিত হয়।

পিএস: উপরে পাইপ আর কমান্ড দিয়ে কাজ করে না।

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

এই বিবরণটি এমন সিস্টেমগুলির জন্য কাজ করে যা কেবলমাত্র "অ্যাপ্ট" ব্যবহার করে এবং পুরানো "অ্যাপট-এক্স" কমান্ড উপলব্ধ নেই!
জন ওয়াট 20


1

দেখে মনে হচ্ছে এটি প্রথমে ইনস্টল করার আগে বা .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")

কার্ল প্যারাম: -s- নীরব, -L- সরানো লিঙ্কগুলি অনুসরণ করুন।

আপনি যদি ইউআরএলটি জানেন না, তবে এর মাধ্যমে আনুন: apt --print-urisউদাঃ

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