আমি সাধারণ ইউনিক্স সরঞ্জাম সেট ব্যবহার করে অ্যাপ্লিকেশনগুলি বিকাশ করি: একটি সংকলক make
, এবং ভাগ করা লাইব্রেরি। পদ্ধতিটি হ'ল traditionতিহ্যগতভাবে কিছু something
./configure
, যা চালিত মেশিনের বৈশিষ্ট্যগুলির জন্য উত্সগুলি উপযুক্ত করে তোলে,make
, যা আসলে ভাগ করা libs, এক্সিকিউটেবল, ইত্যাদি সংকলন করে,make check
, যা প্যাকেজ ইনস্টল করার আগে পরীক্ষা চালায় ,make install
, যদি প্যাকেজটি সঠিকভাবে আচরণ করে এবং শেষ পর্যন্ত ,চ্ছিকভাবে,make installcheck
, ইনস্টলেশন কাজ করে তা নিশ্চিত করার জন্য।
সময়কালে make
, ভাগ করা libs এবং এক্সিকিউটেবলগুলি তাদের চূড়ান্ত আকারে সংকলিত হয়: এক্সিকিউটেবলগুলি তাদের চূড়ান্ত গন্তব্যস্থলে ভাগ করা libs এর উপর নির্ভরতার সাথে সংকলিত হয় (যেমন, তারা গ্রন্থাগারের উপর নির্ভর করে /usr/local/lib
যদিও তারা এখনও সেখানে নেই, তারা এখনও বিল্ডে রয়েছে গাছ)। তারপরে make install
, মোটামুটিভাবে, cp
বিল্ড ট্রি থেকে চূড়ান্ত স্থানে libs এবং এক্সিকিউটেবল ইনস্টল করতে ব্যবহার করছি।
make check
পর্যায়ে চলাকালীন , আমরা প্রোগ্রামটি আনইনস্টল করে চলছি: ভাগ করা libs, এক্সিকিউটেবল এবং সহায়ক ফাইলগুলি এখনও বিল্ড ট্রিতে রয়েছে। পরীক্ষা চালানোর জন্য আপনাকে কয়েকটি কাস্টম এনভায়রনমেন্ট ভেরিয়েবল সেট করতে হবে (উদাহরণস্বরূপ আপনার প্রোগ্রামটি জানানোর জন্য যে আপনার সহায়ক ডেটা ফাইলগুলি /usr/local/share
সোর্স ট্রিতে নেই) এবং কিছু সিস্টেম এনভায়রনমেন্ট ভেরিয়েবল, আপনার শেয়ার লিব লোডারকে দেখতে ভাগ libs জন্য। Traditionalতিহ্যবাহী ইউনিসে পরিবেশের পরিবর্তনশীলগুলি LD_LIBRARY_PATH
ওএস এক্সে রয়েছে DYLD_LIBRARY_PATH
। এটি কয়েক বছর ধরে কাজ করেছে।
তবে এখন, এল ক্যাপিটান এটি ভেঙে দিয়েছে।
$ (export FOO=foo; env) | grep foo
FOO=foo
$ (export DYLDFOO=foo; env) | grep foo
DYLDFOO=foo
$ (export DYLD_FOO=foo; env) | grep foo
$
এখন, এসআইপি সক্ষম DYLD_*
থাকা অবস্থায় কোনও প্রক্রিয়া থেকে তার বাচ্চাদের রফতানি করা হয় না।
সুতরাং আমার প্রশ্নটি: আমরা কীভাবে ইনস্টল না থাকা প্রোগ্রামগুলি চালাতে পারি? Traditionalতিহ্যবাহী ইউনিক্স সিকোয়েন্স চালাতে সক্ষম হতে অনুসরণ করার পদ্ধতিটি কী ./configure && make && make check
?
দয়া করে , " make install
প্রথম চালান" এর মতো কোনও উত্তর নেই । ঐটা আসল কথা না. আমি একজন বিকাশকারী এবং "মেক চেক" চালাচ্ছি (এবং আরও সাধারণভাবে কোনও প্রোগ্রামের একটি ইনস্টল করা সংস্করণটি চালানো হয় না) যা আমি খুব ঘন ঘন করি। এমনকি একটি ডামি জায়গায় ইনস্টল করা সময় সাপেক্ষ। আমার কার্যকর ও দক্ষ কিছু দরকার । এবং এসআইপি নিষ্ক্রিয় করা আমার প্যাকেজগুলির যে ব্যবহারকারীরা চালাতে চান তাদের সমস্যা সমাধান করবে না make check
।
DYLD_INSERT_LIBRARIES=$HOME/.bin/lib/Apple80211 /Applications/Utilities/AirPort\ Utility\ 5.6.app/Contents/MacOS/AirPort\ Utility\ 5.6
10.11 এর অধীনে (পুরানো লাইব্রেরি সহ) পুরানো এপিইউ চালাতে ব্যবহার করতে পারি (যদিও ভেরিয়েবলটি প্রদর্শিত না হয়env
)। অদ্ভুত (তবে এটি কাজ করে)।