সিস্টেম প্যাকেজ পরিচালকের শনাক্তকরণ


12

ডিফল্ট সিস্টেম প্যাকেজ ম্যানেজার শনাক্ত করার জন্য কি কোনও উপায় (স্ক্রিপ্ট থেকে) রয়েছে?

পরিষ্কার করার জন্য, আমি যা করতে চাই তা একটি প্রদত্ত কমান্ড চালানো এবং ডিবিয়ান বা এর যে কোনও ডেরাইভেটিভের উপর এটি "অপ্ট" এর মতো কিছু ফিরিয়ে দেবে, ওপেনসুসে এটি "জাইপ্প" ফিরিয়ে দেবে, ফেডোরা এট এ ফিরে আসবে "ইয়াম", আর্চ লিনাক্সে এটি "প্যাকম্যান" ইত্যাদি ফিরে আসবে

আমি জানি যে আমি নিম্নলিখিতগুলির মতো কিছু দিয়ে এটি করতে পারি, আমি কেবলই ভাবলাম যে আরও একটি শক্ত পদ্ধতি আছে যদি একই নামের সাথে এক্সিকিউটেবল হওয়ার সাথে সাথে ভেঙে যায় না।

which apt >/dev/null 2>&1
if [ $? -eq 0 ]
then
    echo "apt"
fi
# etc...

উত্তর:


9

এই প্রশ্নের গ্রহণযোগ্য উত্তর দিয়ে শুরু করুন: আমি কীভাবে একটি সাধারণ শেল স্ক্রিপ্টে বিতরণ নাম এবং সংস্করণ নম্বর পেতে পারি? । তারপরে, সনাক্ত করা বিতরণের ভিত্তিতে আপনি কোন প্যাকেজ ম্যানেজারটি ব্যবহার করতে চান তা স্থির করুন।


বিভিন্ন বিতরণের জন্য প্যাকেজ পরিচালকদের সহজেই উপলব্ধ তালিকা রয়েছে? বিশেষত প্রচুর পরিমাণে ডেবিয়ান ক্লোন রয়েছে।
ডা

সহজেই উপলভ্য তালিকা সম্পর্কে নিশ্চিত নন, তবে সমস্ত দেবিয়ান ক্লোন ব্যবহার করবে apt-get
জিম প্যারিস

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

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

ডিস্ট্রো সনাক্তকরণ কেবল জনপ্রিয়গুলির জন্য কাজ করবে। কম জ্ঞানের সকল বিতরণের জন্য একটি শ্বেতলিস্ট আপডেট করা যাবে না। সরঞ্জামগুলির উপস্থিতি সরাসরি পরীক্ষা করা এটির কাজ করার একমাত্র উপায়। যদি এটি হাঁসের মতো দেখতে লাগে, হাঁসের মতো সাঁতার কাটায় এবং হাঁসের মতো কোঁক দেয় তবে সম্ভবত এটি একটি হাঁস is
স্বাধীনতাকাল

8

বাইনারি প্রোগ্রামগুলি সনাক্ত করার পরিবর্তে, আপনাকে বিতরণগুলি সনাক্তকরণ থেকে শুরু করা উচিত,

কেবল আপনাকে কয়েকটি লাইন দিন যা বাশ স্ক্রিপ্টিংয়ে কাজ করে:

declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get

for f in ${!osInfo[@]}
do
    if [[ -f $f ]];then
        echo Package manager: ${osInfo[$f]}
    fi
done

এই অংশগুলিতে অন্যথায় বিশ্বাস করা যায় না, তবে সাধারণত লোকেরা তা করে না।


1

আমি অন্যদের পর্যালোচনা করে এই রুটে যেতে পছন্দ করেছি। অনেক ডকারের পাত্রে চালানোর সময় এবং কার্ল / জকিউয়ের দরকার পড়ে এবং চাকরী থেকে চাকরীতে কী পাওয়া যায় তার উপর নির্ভর করতে সক্ষম না হয়ে আমার জন্য এটি প্রকাশিত হয়েছিল।

script:
 - if [ -x "$(command -v apk)" ]; then apk add --no-cache curl jq; fi
 - if [ -x "$(command -v apt-get)" ]; then apt-get install curl jq; fi
 - if [ -x "$(command -v dnf)" ]; then dnf install curl jq; fi
 - if [ -x "$(command -v zypper)" ]; then zypper install curl jq; fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.