ম্যাক ওএস এক্সের কোন ফাইলটি কোন প্যাকেজের অন্তর্ভুক্ত তা কীভাবে আবিষ্কার করবেন?


8

কোন অ্যাপ্লিকেশন / প্যাকেজ নির্দিষ্ট ফাইলের মালিকানা তৈরি করে বা তৈরি করে তা খুঁজে পাওয়ার কোনও উপায় আছে কি? উদাহরণস্বরূপ, লিনাক্সে এই কমান্ডগুলি প্যাকেজটির মালিককে দেখায়

apt-file /bin/progname

rpm -qf /bin/progname

yum whatprovides /bin/progname

ওএস এক্স-এ, কোনও ফাইল কোনও দেশীয় ওএস এক্স অ্যাপ্লিকেশনের অংশ হতে পারে, বা ম্যাকপোর্টস বা হোমব্রিউ দ্বারা ইনস্টল করা যেতে পারে। এগুলি সম্পূর্ণ ভিন্ন পরিবেশ। প্রতিটি অ্যাপ্লিকেশন / প্যাকেজ একটি নির্দিষ্ট ফাইলের মালিক কিনা তা পরীক্ষা করার জন্য কি প্রতিটি পরিবেশের জন্য আদেশ রয়েছে?

উত্তর:


19

এটি কিছুটা দেরি হয়ে গেছে তবে সম্ভবত এটি অন্যদের জন্য সহায়ক হবে।

আপনি pkgutilকমান্ডটি ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, আপনি যদি জানতে চান "কম" কমান্ডটি কোন প্যাকেজটি চালায়:

pkgutil --file-info /usr/bin/less

যা আউটপুট যেমন কিছু হবে:

volume: /
path: /usr/bin/less

pkgid: com.apple.pkg.BaseSystemBinaries
pkg-version: 10.7.0.1.1.1309742044
install-time: 1310407891
uid: 0
gid: 0
mode: 755

একটি প্যাকেজে থাকা সমস্ত ফাইলের তালিকা করতে, com.apple.pkg.BaseSystemBinariesআমাদের উদাহরণে, চালান:

pkgutil --files com.apple.pkg.BaseSystemBinaries

আমি জানি যে এই সরঞ্জামটি ওএস এক্স 10.6 থেকে বিদ্যমান রয়েছে।


এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত। আপনি এটি জিইউআই অ্যাপ্লিকেশনগুলির সাথেও ব্যবহার করতে পারেন। চেষ্টা করে দেখুন pkgutil --file-info /Applications/TextEdit.appএবং এটি পেয়ে যাবেন যে এটি com.apple.pkg.Essentials এর অন্তর্গত, তবে এটিতে আপনাকে আপডেটারগুলি প্রয়োগ করা হয়েছে তাও জানাতে হবে (আমার ক্ষেত্রে, com.apple.pkg.update.os.10.10.2.14C109 .প্যাচ, com.apple.pkg.update.os.10.10.3.14D131.delta, com.apple.pkg.update.os.10.9.2.13C64.combo)।
juandesant

5

কোনও স্ট্যান্ডার্ডাইজড প্যাকেজ পরিচালনা নেই বলে এটি সত্যই সম্ভব নয়।

আপনি ম্যাকপোর্টস বা হোমব্রু আলাদাভাবে কনফিগার না করলে আপনি সর্বদা তাদের এক্সিকিউটেবল এমন জায়গায় খুঁজে পাবেন যা অন্য কেউ ব্যবহার করে না। যেহেতু ম্যাকপোর্টস এবং হোমব্রু পৃথক ব্যবহারকারীর অ্যাকাউন্টের অধীনে চলে না, তাই তারা তৈরি করা ফাইলগুলি সর্বদা আপনার ব্যবহারকারীর মালিকানাধীন থাকবে root

যা অবশিষ্ট আছে তা হ'ল আপনি কেবল নির্বাহী অবস্থানের ভিত্তিতে অনুমান করার চেষ্টা করতে পারেন। এখানে কিছু নিয়ম রয়েছে:

  • ম্যাকপোর্টস ব্যবহার করে /opt/local/binএবং /opt/local/sbinএক্সিকিউটেবলের জন্য, এর অধীনে সমস্ত কিছু পূর্বনির্ধারিত /opt/local

  • হোমব্রিউ /usr/local/binএক্সিকিউটেবলের জন্য ব্যবহার করে , সমস্ত কিছু তার অধীনে /usr/local/

  • অন্যান্য অ্যাপ্লিকেশনগুলির নিজস্ব কোথাও নিজস্ব ডিরেক্টরি তৈরি করা উচিত /usr, যেমন /usr/local/git/binগিট ওএস এক্স ইনস্টলার বা এক্স /usr/X11/bin11 এর জন্য।

  • কিছু সিস্টেমের ফ্রেমওয়ার্কগুলিতে সিলেট করুন /usr/bin, যেমন rakeপয়েন্টগুলি/System/Library/Frameworks/Ruby.framework

  • কোনও অ্যাপ্লিকেশন কখনও ব্যবহার করা উচিত নয় /binবা /sbin। কোনও তৃতীয় পক্ষের অ্যাপ্লিকেশন (যেমন কোনও ওএস এক্স ফ্রেমওয়ার্ক নয় এমন কিছু) ব্যবহার করা উচিত /usr/binনয়।


এটি সত্য নয় যে কোনও মানক প্যাকেজ পরিচালনা নেই। ম্যাক ওএস এক্স প্যাকেজগুলি থেকে প্রায় সমস্ত সফ্টওয়্যার ইনস্টল করে (ইনস্টলার ব্যবহার করে) এবং কিপস রেকর্ড করে। @ ভাবিনের কাছ থেকে উত্তর দেখুন।
নীল মেহেহে

1
তুমি ঠিক বলছো. আমি এমন প্রোগ্রামগুলির বিষয়ে আরও কথা বলছিলাম যা হয়ত স্ট্যান্ডার্ড প্যাকেজগুলি ব্যবহার না করে। আমি এই উত্তরটি লেখার সময় পিকগটিল সম্পর্কে খুব বেশি কিছু জানতাম না।
hhlh

আমি pkgutilউভয় সম্পর্কে জানতাম না , এবং এটি বেশ সহজ শোনায়।
নীল মেহেহে

ম্যাকপোর্টসের সাহায্যে আপনি কোন বন্দরটি ব্যবহার করে কোনও নির্দিষ্ট ফাইলের মালিক তা জানতে পারবেনport provides FILE
নীল মেহেজ

2

ওএসএক্সে অন্য দুটি প্যাকেজ পরিচালকের জন্য তাদের এক জায়গায় সংগ্রহ করতে:

জন্য MacPorts (যেমন উপরে মন্তব্য নিল উল্লেখ):

port provides /opt/local/bin/progname

জন্য Brew তাই না এত সহজ কিন্তু এক সাধারণত ব্যবহার প্যাকেজ পেতে পারেন:

ls -la /usr/local/bin/progname

কোনটি softlink প্যাকেজের নাম, বা অন্য এক থেকে অন্যান্য পরামর্শের ব্যবহার করতে পারেন রয়েছে সেটা দেখানো উচিত এক এগুলোর প্রশ্ন

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