ما هو أفضل وسيلة للتحقق من توفر التطبيقات الخارجية المتاحة؟

StackOverflow https://stackoverflow.com/questions/406966

سؤال

ولدي الطلب الذي كان الإضافات الاختيارية اعتمادا على ما إذا كان المستخدم لديه تركيب البرمجيات.

في لينكس ما هو أفضل وسيلة لتحديد ما إذا تم تثبيت شيء من هذا القبيل الثعبان وPyUsb؟

وأنا تطوير تطبيق C ++ كيو تي اذا كان ذلك يساعد.

هل كانت مفيدة؟

المحلول

وهذا غير فعالة (يتطلب التفرع وexec'ing <م> / بن / ش ). حتما توجد طريقة افضل! ولكن كنهج عام ... هناك دائما <م> النظام () .

و(تذكر أن استخدام <م> WEXITSTATUS () ! احترس من جعل البرامج مصادر الطاقة غير المنقطعة!)

#define SHOW(X)  cout << # X " = " << (X) << endl

int main()
{
  int status;

  SHOW( status = system( "which grep > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );

  SHOW( status = system( "which no_matching_file > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );
}

وهناك أيضا <م> popen () ، والتي يمكن أن تكون مفيدة لاقتناص الإخراج من برامج للتحقق من أرقام الإصدارات والمكتبات، أو غيرها.

إذا كنت تحتاج ثنائي الاتجاه (قراءة وكتابة) الوصول إلى فرعي أو جانبي، وأفضل استخدام <م> الأنابيب () ، <م> شوكة () ، <م> إكسيك () ، <م> قريب () ، و<م> dup2 () .

نصائح أخرى

ويمكنك يقتضي أن تكون في المسار، وما تحقق من وجود الملفات القابلة للتنفيذ سوف تتطلب (باستخدام which أو ما شابه). يمكنك أيضا استخدام الحجج الملفات القابلة للتنفيذ "والتحقق من وجود إصدارات المطلوبة وكذلك، إذا لزم الأمر.

وأنا لست على علم وسيلة للقيام بذلك لينكس بشكل عام، لأن كل توزيعة يمكن أن يكون مدير مجموعة خاصة بها. ولكن على افتراض انك تريد دعم التوزيعات الأكثر شعبية، يمكنك الاستعلام مدير مجموعة من أجل تركيب البرمجيات (أنا أقترح كبداية لدعم الرابطة بين الحصول على، دورة في الدقيقة و يم) وتحليل الإخراج للبحث عن الحزم التي تعترف. كل مدير لديه وسيلة لسرد الحزم المثبتة، اقتراحي كبداية:

apt-get --no-act check
rpm -qa
yum list installed

واحد الاحتمال الاخر هو لتقديم كافة الميزات للمستخدم وتدفعهم لتثبيت إضافات اذا حاولوا استخدامها (انظر على سبيل المثال http://0install.net ).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top