সমাধান: একটি বাহ্যিক উত্স বিল্ড করা
- মন্তব্যে প্রস্তাবিত হিসাবে, আপনি একটি বাহ্যিক উত্স বিল্ড করতে পারেন।
- নীতিটি হ'ল: অন্য ডিরেক্টরি তৈরি করুন, "বিল্ড ট্রি", সেই ডিরেক্টরি থেকে কনফিগার স্ক্রিপ্টটি চালান (আপেক্ষিক বা পরম পাথ সহ)।
স্বয়ংক্রিয় চেক সহ উদাহরণ
উদাহরণস্বরূপ, এটি GNU হ্যালো আনবে এবং তৈরি করবে এবং উত্স গাছটি একটি সামান্য বিট পরিবর্তিত হয়নি তা পরীক্ষা করে দেখুন।
উত্স গাছ প্রস্তুতি
এই অংশটি ডিরেক্টরিগুলি আনে এবং প্রস্তুত করে।
{
wget -S http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
tar zxvf hello-2.10.tar.gz
mv hello-2.10 hello-2.10-pristine
tar zxvf hello-2.10.tar.gz
diff -urq hello-2.10 hello-2.10-pristine && echo "Before build, directories are identical."
cd hello-2.10
}
জেনেরিক অংশ: আপনার প্রকল্পে এটি পুনরায় ব্যবহার করুন
এই অংশটি অন্যান্য স্বায়ত্তশাসিত-ভিত্তিক প্রকল্পগুলির সাথে ব্যবহার করা যেতে পারে। দৌড়ানোর আগে আপনার প্রকল্পে কেবল সিডি করুন। rm
সাবধানতা : এই রানগুলি, ভেরিয়েন্টগুলির সাথে খেললে সতর্কতা অবলম্বন করুন, আপনি যে কোনও ক্ষেত্রেই প্রতিক্রিয়াশীল।
export MYPREFIX="${PWD}.installtree"
(
set -eu # abort on error
ls configure # make sure it aborts if not in correct directory
export SRCTREE="${PWD}"
export BUILDTREE="${PWD}.buildtree"
rm -rf "$BUILDTREE" "$MYPREFIX"
mkdir "$BUILDTREE" "$MYPREFIX"
cd "$BUILDTREE"
"${SRCTREE}"/configure --prefix="${MYPREFIX?}"
time make -k || time make
time make install
)
অংশ পরীক্ষা করুন
এই বিল্ডটি নিখুঁতভাবে উত্সের বাইরে রয়েছে কিনা তা পরীক্ষা করে।
{
ls "$MYPREFIX"/bin/hello && echo "Okay, build generated the target."
cd "$MYPREFIX"/..
diff -urq hello-2.10 hello-2.10-pristine && echo "No change at all. Perfect out-of-source build success."
}
এখানে এটি ফলাফল:
/tmp/hello-2.10.installtree/bin/hello
Okay, build generated the target.
No change at all. Perfect out-of-source build success.
বোনাস: নন-রুট ইনস্টল
--prefix="${MYPREFIX?}"
অংশ উপরে ঐচ্ছিক। এটি আপনার অ্যাকাউন্টে স্থানীয় যে "মেক ইনস্টল" করতে দেয়। আপনি যদি সিস্টেম-ব্যাপী লোকেশনে traditionalতিহ্যবাহী "সুডো মেক ইনস্টল" চান, আপনি মুছে ফেলতে পারেন --prefix="${MYPREFIX?}"
।