DESTDIR এবং মেক PREFIX


118

আমি একটি নির্দিষ্ট ডিরেক্টরিতে সফ্টওয়্যার ইনস্টল করার চেষ্টা করছি। আমি বেশ কয়েকটি উপায় খুঁজে পেয়েছি তবে তাদের মধ্যে পার্থক্য কী তা নিশ্চিত।

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***

আমি এই তিনটির কার্যকারিতা সম্পর্কে বিভ্রান্ত হয়ে পড়েছি। তারা কি একই লক্ষ্য অর্জন করে?

উত্তর:


184

./configure --prefix=***

নম্বর 1 নির্ধারণ করে যে এটি ইনস্টল করার পরে প্যাকেজটি কোথায় যাবে এবং এটি চালিত হওয়ার সাথে সাথে এটি সম্পর্কিত ফাইলগুলি কোথায় সন্ধান করবে। আপনি যদি কেবলমাত্র একটি হোস্টে ব্যবহারের জন্য কিছু সংকলন করেন তবে এটি আপনার ব্যবহার করা উচিত।


make install DESTDIR=***

সংখ্যা 2 অস্থায়ী ডিরেক্টরিতে ইনস্টল করার জন্য যা প্যাকেজটি চালিত হবে না। উদাহরণস্বরূপ debপ্যাকেজ নির্মাণের সময় এটি ব্যবহৃত হয় । প্যাকেজটি নির্মাণকারী ব্যক্তি প্রকৃতপক্ষে নিজের সিস্টেমে সবকিছুকে তার চূড়ান্ত স্থানে ইনস্টল করে না। তার ইতিমধ্যে একটি আলাদা সংস্করণ ইনস্টল থাকতে পারে এবং এটিকে বিঘ্নিত করতে চায় না, বা সে মূল হতে পারে না। সুতরাং তিনি ব্যবহার করেন

./configure --prefix=/usr

সুতরাং প্রোগ্রামটি চালু হওয়ার /usrপরে এটি ইনস্টল হওয়ার আশা করবে then

make install DESTDIR=debian/tmp

আসলে ডিরেক্টরি কাঠামো তৈরি করতে।


make install prefix=***

3 নম্বর এটি একটি পৃথক স্থানে ইনস্টল করতে চলেছে তবে সমস্ত ডিরেক্টরি তৈরি DESTDIR=/foo/bar/bazকরবে না। এটি সাধারণত জিএনইউ স্টো দিয়ে ব্যবহার করা হয়

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

, যা বাইনারি ইনস্টল করবে /usr/local/stow/foo/bin। তুলনামূলক ভাবে,

make install DESTDIR=/usr/local/stow/foo

বাইনারি ইনস্টল করা হবে /usr/local/stow/foo/usr/local/bin


8
এটির মূল্যের জন্য, একটি ক্যামেক ভিত্তিক বিল্ডে আপনি cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmakeবিল্ড ডিরেক্টরিতে চালিয়ে "কেস 4" (স্টো ইত্যাদির জন্য) অনুকরণ করতে পারেন ।
রায়ান পাভলিক

@ জ্যাককেলি: ধন্যবাদ! আমি জিএনইউ স্টো দিয়ে ডিএসটিডিআইআর ব্যবহার করেছি এবং mv usr/local/* . && rmdir usr/local && rmdir usrসাধারণত একটি ডিরেক্টরি সহ ডিরেক্টরি কাঠামোটি ঠিক করতে হয়েছিল - ব্যবহার prefix=করা আরও ভাল!
থিংসকি

দ্রষ্টব্য: কিছু সফ্টওয়্যার সমর্থন করে না DESTDIR=/tmp/foo make install; চতুর ভিত্তিক প্রকল্পগুলির জন্য, আমার আরও ভাগ্য ছিল cmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmakeযার সাথে ইনস্টল হয় /tmp/foo/{bin,...}; উদাহরণ হিসাবে github.com/opencv/opencv/issues/11833#issuecomment-401164056 দেখুন ।
টিমোথেকোর

আরও একটি নোট: DESTDIRএবং একসাথে prefixব্যবহার করা যেতে পারে make install, যেমন make install DESTDIR=/foo/bar/tmp perfix=/local
আলবার্ট

1

এটি এর ব্যবহার DESTDIRএবং --prefix( এখানে থেকে ) চিত্রিত করতে সহায়তা করতে পারে :

একাধিক ইনস্টল - प्रीফিক্স এবং ডিএসটিডিআইআর ব্যবহার করে:

কনফিগার সময় - প্রতিটি বিল্ডের জন্য একটি পৃথক - পূর্ববর্তী অবস্থান / বিকল্প পৃথক করুন। যেমন:

untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg

। / কনফিগার ফাইলটি সরবরাহ না করা হলে, এখনও ব্যবহারকারী-নির্দিষ্ট ডিরেক্টরি ব্যবহার করে কেউ ইনস্টল করতে পারে: প্রিফিক্স = / পাথ / টু / আপনার / লিবি / লাইবাইও ইনস্টল করুন
শুভ উইল

0

থেকে openssl/INSTALL

প্যাকেজ নির্মাতারা যারা মানক অবস্থানের জন্য গ্রন্থাগারটি কনফিগার করতে চান তবে প্যাকেজটি অন্য কোথাও ইনস্টল করেছেন যাতে এটি সহজে প্যাকেজ করা যায়, ব্যবহার করতে পারে

$ make INSTALL_PREFIX=/tmp/package-root install

(অথবা কনফিগার বিকল্প হিসাবে "--install_prefix = / tmp / package-root" উল্লেখ করুন) specify নির্দিষ্ট উপসর্গটি সমস্ত ইনস্টলেশন লক্ষ্য ফাইলের নামের সাথে সংযুক্ত করা হবে।

এটি মানহীন তবে INSTALL_PREFIX অন্যান্য কয়েকটি প্রোগ্রামে ব্যবহৃত হয়।

এটি 1.1.x এর আগে ওপেনএসএসএল সংস্করণগুলির জন্য কাজ করে। ওপেনএসএসএল 1.1.x এবং তার পরে যথারীতি সনাক্ত করতে সক্ষম DESTDIR

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