ড্যাবিয়ান প্যাকেজ উপস্থিত থাকলে বাশ থেকে কীভাবে চেক করবেন


12

আমি একটি ইনস্টলেশন বাশ স্ক্রিপ্ট লিখতে চাই, যেখানে আমি মাইএসকিউএল সার্ভার ইনস্টল করতে চাই।

লিনাক্স মিন্টে আমি কোডটি অনুসরণ করেছি:

apt-get -y --force-yes install mysql-server-5.6

তবে আমি নতুন ডেবিয়ান 8 ইনস্টল করেছি এবং সেখানে নেই mysql-server- পরিবর্তে আছে mariadb

প্যাকেজ বিদ্যমান থাকলে আমি কীভাবে তা জানতে পারি?

আমি কেবল জানি যে dpkg -sএকটি প্যাকেজ ইনস্টল করা আছে কিনা তা বলতে হবে।


3
--force-yesসমস্ত সুরক্ষা নিষ্ক্রিয় করে তোলে, যাতে আপনি সত্যিই কোনও মেরামতির বিন্দুতে আপনার সিস্টেমটি ভেঙে ফেলতে পারেন। এছাড়াও: --force-yesওভাররাইড (নিষ্ক্রিয়) -y। যেখানে উত্তরোত্তর পছন্দের বিকল্প হতে পারে: একটি দীর্ঘ রূপ -yহ'ল --assume-yes, এবং এটি সেটাই করে; মূল উপাদানসমূহ, মৌলিক --force
বিষয়াদি ইত্যাদির মধ্যে বিপদজনক

সংযোজন: আপনি আগ্রহী হতে পারে --simulateজন্য বিকল্প apt-get, একটি কি --dry-runশুধু মামলা
erch

1
কেবল স্পষ্ট করে বলতে: আপনি অনুসন্ধান করতে চান যে কোনও প্যাকেজটি কোনও রিপোজিটরির মধ্যে রয়েছে যা সংজ্ঞায়িত করা হয়েছে /etc/apt/sources.list, তাই না?
wulxz

নোট সেখানে আসলে ডেবিয়ান 8 একটি মাইএসকিউএল সার্ভার প্যাকেজ, mariadb পাশাপাশি যে: packages.debian.org/jessie/mysql-server
ড্যান Getz

উত্তর:


13

(নীচে উবুন্টু থেকে এসেছে, তবে একই কৌশল স্পষ্টতই দেবিয়ান-তেও কাজ করে)

$ apt-cache show screen
Package: screen
Priority: optional
Section: misc
Installed-Size: 950
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Axel Beckert <abe@debian.org>
Architecture: amd64
Version: 4.1.0~20120320gitdb59704-9
Depends: libc6 (>= 2.15), libpam0g (>= 0.99.7.1), libtinfo5
Suggests: iselect (>= 1.4.0-1) | screenie | byobu
Filename: pool/main/s/screen/screen_4.1.0~20120320gitdb59704-9_amd64.deb
Size: 645730
...

প্যাকেজ উপস্থিত থাকলে তথ্য প্রদর্শিত হবে। যদি তা না হয় তবে আপনি এমন কিছু দেখতে পাবেন:

$ apt-cache show foobar
N: Unable to locate package foobar
E: No packages found

অতিরিক্তভাবে, apt-cacheযদি কোনও মিলে যাওয়া প্যাকেজ না পাওয়া যায় তবে এর প্রস্থান কোডটি শূন্য হবে।

অতিরিক্ত দ্রষ্টব্য: আপনি যদি apt-cache show packageপ্যাকেজটি ভার্চুয়াল এক হিসাবে ব্যবহার করেন (যা বিদ্যমান নেই তবে এটি উদাহরণস্বরূপ, অন্যান্য প্যাকেজগুলির দ্বারা উল্লেখ করা হয়), আপনি পাবেন:

N: Can't select versions from package 'package' as it is purely virtual
N: No packages found

এর exit codeশূন্যটি (যা আমার মতে কিছুটা বিভ্রান্তিকর)


3
শুধু এই উত্তর সম্পূর্ণ করতে: আপনার থেকেও সংজ্ঞায়িত ভান্ডার অনুসন্ধান করতে পারেন sources.listএই কমান্ড সঙ্গে apt-cache search *searchstring*। এই কমান্ডটি প্যাকেজগুলির বিবরণও অনুসন্ধান করবে এবং প্যাকেজগুলির সন্ধান করতে সহায়তা করবে যেখানে আপনি সঠিক প্যাকেজের নাম জানেন না।
ওউলক্সজ

1
@ ওল্ল্যাক্স, কেবল apt-cache search ...কোনও ধরণের ম্যাচ এবং অ্যাপ্লিকেশনটি দেয়। কিছু না পাওয়া গেলেও 0 প্রদান করে যা ব্যাশ স্ক্রিপ্টে ব্যবহারিক নয়।
অ্যালেক্সিস উইল্ক

4

আমি ব্যবহার করব dpkg -l mysql-server &> /dev/null && echo "mysql-server is installed"

এটি mysql-serverপ্যাকেজ ইনস্টল করা আছে কিনা তা যাচাই করবে এবং যদি তা হয় তবে এটি সত্যটি স্ক্রিনে মুদ্রণ করে। আরও একটি পরিশীলিত সমাধানটি হ'ল, ব্যাশে (অনির্ধারিত):

function package_exists() {
    return dpkg -l "$1" &> /dev/null
}

সুতরাং কেউ স্ক্রিপ্টে করতে পারেন:

if ! package_exists mysql-server ; then
    echo Please install mysql-server!"
fi

5
আমি মনে করি তিনি প্যাকেজটি আদৌ বিদ্যমান কিনা এবং এটি স্থানীয় মেশিনে ইতোমধ্যে ইনস্টল করা আছে কিনা তা জানতে চান ...
wullxz

0

এক-লাইনে:

apt-cache pkgnames | grep -q "\<$your_package_name\>"

উপস্থিত থাকলে 0 দিয়ে প্রস্থান করে, 1 না থাকলে 1।

বোনাস: একাধিক প্যাকেজগুলির জন্য দক্ষ চেক, "প্যাকেজ_ভে_ওয়ান্ট" ফাইলটিতে তালিকাভুক্ত, প্রতি লাইনে এক, এর সাথে বাছাই করা sort:

apt-cache --no-generate pkgnames | sort | comm -13 - packages_we_wantতালিকা সমস্ত প্যাকেজ যে আপনি চান, কিন্তু না ভান্ডার রয়েছে।

apt-cache --no-generate pkgnames | sort | comm -12 - packages_we_want সংগ্রহস্থলগুলিতে আপনি চান এবং বিদ্যমান সমস্ত প্যাকেজ তালিকাভুক্ত করে।

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