lsb_release -a
সম্ভবত এই তথ্যটি খুঁজে বের করার জন্য আপনার সেরা বিকল্প হতে চলেছে এবং ধারাবাহিক উপায়ে এটি করতে সক্ষম হচ্ছি।
এলএসবির ইতিহাস
lsb
যে কমান্ড প্রকল্প ঘোরা লিনাক্স স্ট্যান্ডার্ড বেস যা একটি ছাতা প্রকল্পের দ্বারা স্পন্সর লিনাক্স ফাউন্ডেশন বিভিন্ন লিনাক্স ডিস্ট্রো উপর জিনিষ মৌলিক ধরণের করছেন জন্য জেনেরিক পদ্ধতি প্রদান।
প্রকল্পটি স্বেচ্ছাসেবী এবং বিক্রেতারা এই প্রকল্পের মধ্যে কেবল একজন ব্যবহারকারী হিসাবে এবং বিভিন্ন মডিউলগুলির চারপাশের বিভিন্ন বৈশিষ্ট্যের সুবিধার্থক হিসাবেও অংশ নিতে পারেন যা বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনগুলির মধ্যে প্রমিতকরণ চালাতে সহায়তা করে।
সনদ থেকে অংশ
এই দুটি উদ্বেগের সমাধান করার জন্য এলএসবি ওয়ার্কগ্রুপটির মূল লক্ষ্য হিসাবে রয়েছে। আমরা এমন একটি স্ট্যান্ডার্ড প্রকাশ করি যা বড় বিতরণ বিক্রেতাদের পরামর্শে একটি বিতরণকে অবশ্যই সমর্থন করতে হবে এমন ন্যূনতম এপিআইয়ের সেটকে বর্ণনা করে। আমরা টেস্ট এবং সরঞ্জামগুলি সরবরাহ করি যা মানকটির জন্য সমর্থন পরিমাপ করে এবং অ্যাপ্লিকেশন বিকাশকারীদের সাধারণ সেটকে লক্ষ্য করতে সক্ষম করে। পরিশেষে, আমাদের পরীক্ষার কাজের মাধ্যমে আমরা বিতরণগুলির মধ্যে অপ্রয়োজনীয় বিভেদ রোধ করতে চাই।
এলএসবি সম্পর্কিত দরকারী লিঙ্কগুলি
সমালোচনা
এলএসবিতে বেশ কয়েকটি সমস্যা রয়েছে যা এটি ডিবিয়ানের মতো ডিস্ট্রোসের জন্য সমস্যাযুক্ত করে তোলে। আরপিএমের জোর ব্যবহার এক। এই বিষয়ে আরও জানার জন্য উইকিপিডিয়া নিবন্ধটি দেখুন ।
নোভেল
আপনি যদি অনুসন্ধান করেন তবে আপনি সম্ভবত একটি সুনির্দিষ্ট তারিখযুক্ত পৃষ্ঠাটি দেখতে পাচ্ছেন শিরোনাম: নভেল থেকে অন্তর্নিহিত লিনাক্স ডিস্ট্রো সনাক্ত করা । আমি একটি আসল তালিকা দেখেছি এমন কয়েকটি স্থানে এটি একটি যা প্রধান কয়েকটি ডিস্ট্রোসকে দেখায় এবং আপনি কী ব্যবহার করছেন তা অন্তর্নিহিত কীভাবে সনাক্ত করতে পারে তা দেখায়।
উদ্ধৃতাংশ
Novell SUSE /etc/SUSE-release
Red Hat /etc/redhat-release, /etc/redhat_version
Fedora /etc/fedora-release
Slackware /etc/slackware-release, /etc/slackware-version
Debian /etc/debian_release, /etc/debian_version,
Mandrake /etc/mandrake-release
Yellow dog /etc/yellowdog-release
Sun JDS /etc/sun-release
Solaris/Sparc /etc/release
Gentoo /etc/gentoo-release
UnitedLinux /etc/UnitedLinux-release
ubuntu /etc/lsb-release
এই একই পৃষ্ঠায় একটি সহজ স্ক্রিপ্টও রয়েছে যা কেবল ভ্যানিলা uname
কমান্ড এবং উপরের ফাইলগুলির একটির উপস্থিতি ব্যবহার করে উপরের জন্য কোড করার চেষ্টা করে।
দ্রষ্টব্য: এই তালিকাটি তারিখযুক্ত তবে আপনি তালিকা থেকে ম্যান্ড্রেকের মতো তারিখগুলি সহজেই বাদ দিতে পারেন এবং বিকল্পগুলি দিয়ে তাদের প্রতিস্থাপন করতে পারেন। আপনি যদি সোলারিস এবং লিনাক্স ভেরিয়েন্টগুলির বৃহত সোয়াথকে সমর্থন করার চেষ্টা করছেন তবে এই ধরণের স্ক্রিপ্টের মধ্যে একটি পদ্ধতির হতে পারে।
লিনাক্স মাফিয়া
আরও অনুসন্ধানের ফলে Linuxmafia.com এ রক্ষিত নিম্নলিখিত পৃষ্ঠাগুলি চালু হবে, শিরোনাম: / ইত্যাদি / সানড্রি লিনাক্স (এবং অন্যান্য ইউনিক্স) বিতরণের জন্য সমতুল্য মুক্তি । এটি সম্ভবত আমি এখন পর্যন্ত সর্বাধিক বিস্তৃত তালিকা। আপনি এই তালিকা কেস / স্যুইচ স্টেটমেন্ট সহ কোডটিফাই করতে পারেন এবং এটি আপনার সফ্টওয়্যার বিতরণের অংশ হিসাবে অন্তর্ভুক্ত করতে পারেন।
আসলে that পৃষ্ঠার নীচে একটি স্ক্রিপ্ট রয়েছে যা ঠিক তা করে। সুতরাং আপনি কেবল আপনার সফ্টওয়্যার বিতরণে তৃতীয় পক্ষ হিসাবে স্ক্রিপ্টটি ডাউনলোড এবং ব্যবহার করতে পারেন।
লিপি
#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux
# Distribution.
OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`
GetVersionFromFile()
{
VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}
if [ "${OS}" = "SunOS" ] ; then
OS=Solaris
ARCH=`uname -p`
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
KERNEL=`uname -r`
if [ -f /etc/redhat-release ] ; then
DIST='RedHat'
PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
elif [ -f /etc/SuSE-release ] ; then
DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
elif [ -f /etc/mandrake-release ] ; then
DIST='Mandrake'
PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
elif [ -f /etc/debian_version ] ; then
DIST="Debian `cat /etc/debian_version`"
REV=""
fi
if [ -f /etc/UnitedLinux-release ] ; then
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
fi
OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
fi
echo ${OSSTR}
দ্রষ্টব্য: এই স্ক্রিপ্টটি পরিচিত দেখা উচিত, এটি নভেল একটির একটি আধুনিক সংস্করণ!
লেগরুম লিপি
আমি নিযুক্ত অন্য একটি পদ্ধতি হ'ল উপরের নভেল পদ্ধতির মতো আপনার নিজের স্ক্রিপ্টটি রোল করা তবে পরিবর্তে এলএসবি ব্যবহার করা। এই নিবন্ধটির শিরোনাম: লিনাক্স (বা ইউএনআইএক্স) বিতরণের নাম নির্ধারণের জেনেরিক পদ্ধতি , এর মধ্যে একটি পদ্ধতি দেখায়।
# Determine OS platform
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
# If Linux, try to determine specific distribution
if [ "$UNAME" == "linux" ]; then
# If available, use LSB to identify distribution
if [ -f /etc/lsb-release -o -d /etc/lsb-release.d ]; then
export DISTRO=$(lsb_release -i | cut -d: -f2 | sed s/'^\t'//)
# Otherwise, use release info file
else
export DISTRO=$(ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v "lsb" | cut -d'/' -f3 | cut -d'-' -f1 | cut -d'_' -f1)
fi
fi
# For everything else (or if above failed), just use generic identifier
[ "$DISTRO" == "" ] && export DISTRO=$UNAME
unset UNAME
কোডের এই অংশটি কোনও সিস্টেমের /etc/bashrc
বা এমন কোনও ফাইলের মধ্যে অন্তর্ভুক্ত করা যেতে পারে যা পরিবেশের পরিবর্তনশীল সেট করে $DISTRO
।
জিসিসি
এটি বিশ্বাস করুন বা না অন্য কোনও পদ্ধতিটি ব্যবহার করা gcc
। আপনি যদি কমান্ডটি জিজ্ঞাসা করেন তবে আপনি gcc --version
ডিসিস্রোটি পাবেন যেটি জিসিসি এর জন্য নির্মিত হয়েছিল, যা অদৃশ্যভাবে এটি চলমান সিস্টেমের মতো।
ফেডোরা 14
$ gcc --version
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
Copyright (C) 2010 Free Software Foundation, Inc.
CentOS 5.x
$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
CentOS 6.x
$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
Copyright (C) 2010 Free Software Foundation, Inc.
উবুন্টু 12.04
$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
টি এল; ডিআর;
তাহলে আমার কোনটি ব্যবহার করা উচিত? আমি lsb_release -a
প্রায়শই যে কোনও লিনাক্স বিতরণ করতে যাব (রেডহ্যাট, ডেবিয়ান, উবুন্টু, ইত্যাদি)। আপনি যখন এমন সিস্টেমগুলিকে সমর্থন করছেন যেগুলি সরবরাহ করে না lsb_release
আমি উপরের স্ক্রিপ্টগুলির অনুরূপ সফ্টওয়্যার বিতরণের অংশ হিসাবে আমার নিজের রোল করব।
আপডেট # 1: সুস সঙ্গে ফলোআপ
নীচের মন্তব্যে @ নীলদের সাথে কথা বলার সময় এটি নির্ধারিত হয়েছিল যে কোনও কারণেই, এসইএলইএস 11 এলএসবি ডিফল্টরূপে ইনস্টল করা থেকে বাদ দিতে দেখা গেছে। এটি কেবলমাত্র একটি বৈকল্পিক ইনস্টলেশন ছিল, যা এমন প্যাকেজটির জন্য পাল্টা মনে হয়েছিল যা এই ধরণের কী বৈশিষ্ট্য সরবরাহ করে।
তাই আমি কেন একটি ধারণা পেতে ওপেনসুএস প্রকল্পের কারও সাথে যোগাযোগ করার সুযোগ নিয়েছি।
ইমেলের অংশ
Hi Rob,
I hope you don't mind me contacting you directly but I found your info here:
https://en.opensuse.org/User:Rjschwei. I participate on one of the StackExchange
sites, Unix & Linux and a question recently came up regarding the best option
for determining the underlying OS.
http://unix.stackexchange.com/questions/92199/how-can-i-reliably-get-the-operating-systems-name/92218?noredirect=1#comment140840_92218
In my answer I suggested using lsb_release, but one of the other users mentioned
that this command wasn't installed as part of SLES11 which kind of surprised me.
Anyway we were looking for some way to confirm whether this was intentionally
dropped from SLES or it was accidental.
Would you know how we could go about confirming this one way or another?
Thanks for reading this, appreciate any help and/or guidance on this.
-Sam Mingolelli
http://unix.stackexchange.com/users/7453/slm
রব এর প্রতিক্রিয়া এখানে
Hi,
On 10/01/2013 09:31 AM, Sam Mingo wrote:
- show quoted text -
lsb_release was not dropped in SLES 11. SLES 11 is LSB certified. However, it
is not installed by default, which is consistent with pretty much every other
distribution. The lsb_release command is part of the lsb-release package.
At present almost every distribution has an entry in /etc such as
/etc/SuSE-release for SLES and openSUSE. Since this is difficult for ISVs and
others there is a standardization effort going on driven by the convergence to
systemd. The standard location for distribution information in the future will
be /etc/os-release, although Ubuntu will probably do something different.
HTH,
Robert
-- Robert Schweikert MAY THE SOURCE BE WITH YOU
SUSE-IBM Software Integration Center LINUX
Tech Lead
Public Cloud Architect
uname -s
লিনাক্সের বাইরে যথেষ্ট পরিমাণে হওয়া উচিত (সম্ভবত বিএসডিগুলির জন্য প্রত্যাশা)।