আমি কীভাবে ইনস্টল করা সমস্ত প্রোগ্রামের তালিকা করব?


48

আমার বিতরণ এবং আমি ম্যানুয়ালি ইনস্টল করা উভয় প্রোগ্রামকে আমি কীভাবে তালিকাভুক্ত করব?


8
কোন বিতরণ? প্রতিটি বিতরণে বিভিন্ন ইনস্টল করার সরঞ্জাম রয়েছে।
মেটেও

এইচএম, আমি রেড হ্যাট, উবুন্টু এবং সাইগউইনের প্রতি আগ্রহী। কিছু কমান্ড লাইনের যুক্তি সহ প্রোগ্রামগুলি তালিকাভুক্ত করার জন্য কি কোনও বিতরণ-মুক্ত উপায় আছে?
InquilineKea

1
না, প্যাকেজ পরিচালকরা পৃথক হিসাবে আছে।
ক্রিস ডাউন

উত্তর:


71

এটি আপনার বিতরণের উপর নির্ভর করে।

  • প্রবণতা ভিত্তিক বিতরণ (উবুন্টু, দেবিয়ান, ইত্যাদি): dpkg -l
  • আরপিএম ভিত্তিক বিতরণ (ফেডোরা, আরএইচইল, ইত্যাদি): rpm -qa
  • পিকেজি * ভিত্তিক বিতরণ (ওপেনবিএসডি, ফ্রিবিএসডি, ইত্যাদি): pkg_info
  • পোর্টেজ ভিত্তিক বিতরণ (জেন্টো ইত্যাদি): equery listবাeix -I
  • প্যাকম্যান-ভিত্তিক বিতরণ (আর্চ লিনাক্স, ইত্যাদি): pacman -Q
  • Cygwin: cygcheck --check-setup --dump-only *
  • স্ল্যাকওয়্যার: slapt-get --installed

এই সমস্ত প্রোগ্রামের পরিবর্তে প্যাকেজগুলি তালিকাভুক্ত করবে । আপনি যদি প্রোগ্রামগুলি সত্যই তালিকাভুক্ত করতে চান তবে আপনি সম্ভবত আপনার মধ্যে এক্সিকিউটেবলের তালিকা করতে চান যা বাশের ব্যবহারের মতো করা যেতে পারে :$PATHcompgen

compgen -c

অথবা, যদি আপনার না থাকে compgen:

#!/bin/bash
IFS=: read -ra dirs_in_path <<< "$PATH"

for dir in "${dirs_in_path[@]}"; do
    for file in "$dir"/*; do
        [[ -x $file && -f $file ]] && printf '%s\n' "${file##*/}"
    done
done

4
এবং আরপিএম ভিত্তিক সিস্টেমগুলির জন্য (রেড হ্যাট, সুএসই, সেন্টোস ইত্যাদি):rpm -qa
নম্বর

1
দেবিয়ান / উবুন্টু হ'ল dkpg -l | grep ^ii
রলফ

1
@ রল্ফ, আপনার অর্থ ডিপি কেজি
হার্কুলি গ্রেজি


1
@ কুসালানন্দ হু? এই উত্তরের কোনও পর্যায়ে এটি বলে না যে বিএসডিগুলি লিনাক্স বিতরণ, তবে তারা বিতরণ । আক্ষরিকভাবে বিএসডির "ডি" বলতে বোঝায়।
ক্রিস ডাউন

13

প্রশ্নের দ্বিতীয় অংশের উত্তর দেওয়া ( প্রথম অংশের জন্য ক্রিসের উত্তরে সত্যিই কিছু যুক্ত করার দরকার নেই ) :

সেখানে সাধারণত হয় কোন ম্যানুয়ালি ইনস্টল করা প্রোগ্রামের এবং তাদের উপাদান তালিকা প্রণালী। আপনি যদি প্যাকেজ পরিচালক ব্যবহার না করেন তবে এটি কোথাও রেকর্ড করা হয় না। আপনি যা করতে পারেন তা হ'ল স্ট্যান্ডার্ড লোকেশনগুলিতে বাইনারিগুলি খুঁজে পাওয়া (যেমন ক্রিসের পরামর্শ দেওয়া হয়েছিল) এবং একইভাবে, অনুমান করুন যে কোনও পাঠাগার বা কিছু ম্যানুয়াল পৃষ্ঠা ইত্যাদি কোথা থেকে এসেছে। এ কারণেই, যখনই সম্ভব, আপনার প্যাকেজ ম্যানেজারটি ব্যবহার করে সর্বদা প্রোগ্রাম ইনস্টল করা উচিত


3

প্রোগ্রামগুলি PATH এর মাধ্যমে অ্যাক্সেসযোগ্য হওয়া উচিত, সুতরাং কেবলমাত্র সমস্ত কিছু তালিকাতে করুন:

ls ${PATH//:/ }

প্রায় 3k-4k প্রোগ্রামের ফলাফল আশা করে।

মিথ্যা ধনাত্মক সম্ভাব্য সংখ্যালঘু বাদ দেওয়ার জন্য, আপনি পদ্ধতির পরিমার্জন করতে পারেন:

for d in ${PATH//:/ } ; do 
    for f in $d/* ; do  
        test -x $f && test -f $f && echo $f
    done
done

এটি আমার জন্য কোনও পার্থক্য তৈরি করেনি।


2
নোট করুন যে এটি সম্ভাব্য বিভিন্ন নন-প্রোগ্রামগুলিও তালিকাভুক্ত করবে (ডিরেক্টরিতে ডিরেক্টরিগুলির উপ-ডিরেক্টরিগুলি $PATHইত্যাদি)।
ক্রিস ডাউন

1
আমি একটি পরীক্ষা যোগ করেছি, তবে এটি আমার পক্ষে কোনও তাত্পর্যপূর্ণ হয়নি (পথের ডিরেক্টরিতে ডিরেক্টরিটি ডিরেক্টরিতে কীভাবে দরকারী, যা নিজেই সেই পথে নেই?) তবে ক্ষেত্রে, যেখানে আপনি নির্ভুলতার উপর নির্ভর করছেন, এটি কার্যকর হতে পারে।
ব্যবহারকারী অচেনা

1
অসাধারণ! আমি লিনাক্সের সংস্করণটি জানতে পারি না (দীর্ঘ গল্প - তবে অপরাধী কিছুই নয়) তবে এই কোডটি আমার দিনটি সংরক্ষণ করেছিল :)
ওবেনজিও

2

অন্যান্য সমস্ত উত্তর (এখনও অবধি) প্যাকেজ এবং বাইনারিগুলির সাথে সম্পর্কিত। যদি আপনি "ডেস্কটপ অ্যাপ্লিকেশন" বলতে চান তবে এটি আপনার সূচনা মেনুতে প্রদর্শিত হয়, আপনি চেষ্টা করতে পারেন:

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

আরো সমাধানের আরেকটি প্রশ্ন

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