शीर्ष पर टिप्पणी से:
- मैं अगर ओएस (ओपन) SUSE है ताकि सही पैकेज इंस्टॉलर का उपयोग करने के लिए (zypper जानने की जरूरत)। यदि यह डेबियन (उदाहरण के लिए) है, तो मैं एपीटी-गेट का उपयोग करूंगा ...
मेरा सुझाव है कि आप सीधे वास्तविक समस्या को हल करें। ओएस की पहचान करने के बजाय, उपलब्ध पैकेज प्रबंधक की पहचान करें।
import os
def file_exists(fname):
try:
os.stat(fname)
return True
except OSError:
return False
if file_exists('/usr/bin/zypper'):
... # do the SUSE case
elif file_exists('/usr/bin/apt-get'):
... # do the Debian/Ubuntu case
elif file_exists('/usr/bin/yum'):
... # do the Red Hat case
else:
raise OSError, "cannot find a usable package manager"
संपादित करें: हालांकि कोड यहाँ पैकेज प्रबंधक कार्यक्रम का पता लगाने से पता चलता है, यह बेहतर हो सकता है मुख्य पैकेज रजिस्ट्री ही पता लगाने के लिए। उदाहरण के लिए, dpkg
, का उपयोग करने वाले डेबियन/उबंटू सिस्टम पर पैकेज निर्देशिका रखने वाले /var/lib/dpkg
निर्देशिका होगी; यह एक निश्चित संकेत है कि dpkg
या apt-get
उपयुक्त हैं। मुझे नहीं पता कि एसयूएसई और रेड हैट के लिए समकक्ष निर्देशिकाएं क्या हैं, लेकिन यदि आप उन लोगों का समर्थन कर रहे हैं तो आप इसका पता लगा सकते हैं।
apt-get
को Red Hat सिस्टम पर पोर्ट किया गया है, और alien
नामक प्रोग्राम के माध्यम से आप rpm
डेबियन सिस्टम पर प्राप्त कर सकते हैं, और इसी तरह। पैकेज डेटाबेस का पता लगाने का यह पता लगाने का सबसे मूर्ख तरीका है कि कौन सा पैकेज सिस्टम उपयोग में है।
यदि आप पैकेज प्रबंधक का पता लगाते हैं, तो आपका कोड स्वचालित रूप से सभी संबंधित distros पर काम करेगा।यदि आप dpkg
डेटाबेस का पता लगाते हैं, तो आपका कोड डेबियन, उबंटू, लिनक्स मिंट और डेबियन के आधार पर कई अन्य डिस्ट्रोज़ पर काम करेगा। यदि आप rpm
डेटाबेस का पता लगाते हैं, तो आपका कोड RP Hat पर आधारित Red Hat, Centos, Fedora, Mandriva और अन्य कई अन्य distros पर काम करेगा।
'बिल्ली/proc/version'? – ChristopheD
यह पहली जगह में उपयोग करना खतरनाक है। आपकी _actual_ समस्या क्या है? क्या आप केवल विशिष्ट क्षमताओं की जांच नहीं कर सकते हैं? – hop
मुझे यह जानने की जरूरत है कि ओएस (ओपन) एसयूएसई है ताकि सही पैकेज इंस्टॉलर (ज़िप्पर) का उपयोग किया जा सके। यदि यह डेबियन (उदाहरण के लिए) है, तो मैं एपीटी-गेट का उपयोग करूंगा ... यही कारण है कि मुझे इसकी आवश्यकता है .... – ant0nisk