সিপি এবং এমকেডিরের চেয়ে ইনস্টল কেন ব্যবহার করবেন?


66

আমি install -dডিরেক্টরি তৈরি করতে এবং install -cএকটি ফাইল অনুলিপি করতে ব্যবহৃত অনেক জায়গায় দেখেছি । কেন ব্যবহার করবেন না mkdirএবং cp? ব্যবহার করে কি কোনও সুবিধা আছে install?

উত্তর:


57

এটি আপনি কী করছেন তার উপর নির্ভর করে।

installকমান্ড স্বাভাবিকভাবে ইনস্টলেশন স্ক্রিপ্ট প্যাকেজ এবং আপনার সিস্টেম একটি বাইনারি ইনস্টল করার জন্য সোর্স কোড সঙ্গে আসা ব্যবহার করা হয়। এটি অন্য কোনও ফাইল বা ডিরেক্টরি ইনস্টল করতেও ব্যবহার করা যেতে পারে। ইনস্টল করার জন্য ফাইলটির নতুন অনুমতি নির্দিষ্ট করার জন্য আপনার কাছে থাকা বিকল্পগুলি -dএবং -cবিকল্পগুলি ছাড়াও , একই ফলাফলটি পেতে আপনাকে -mএকটি cpএবং একটি chmodকরতে হবে না। এই ক্ষেত্রে:

install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"

এছাড়াও আপনি অপশন আছে -gএবং -oযথাক্রমে লক্ষ্য গ্রুপ এবং মালিক, সেট করার জন্য। এটি পৃথক কল এড়ানো chown। সাধারণভাবে, installআপনার স্ক্রিপ্টটি সংক্ষিপ্ত করে ব্যবহার করে ফাইল তৈরি, অনুলিপি, মোড সেটিং এবং সম্পর্কিত স্টাফ অনেকের পরিবর্তে এক আদেশে আরও সংক্ষিপ্ত করে তোলে।

রেফারেন্সের জন্য, দেখুন man install। ব্যবহারের জন্য, কিছু প্যাকেজ উত্স কোড সহ যে কোনও ইনস্টলেশন স্ক্রিপ্ট প্রেরণা দেখুন ।


21

"ইনস্টল" সাধারণত নিম্নলিখিত ক্রিয়াগুলি একত্রিত করে:

  • লক্ষ্য স্থলে নির্দিষ্ট ফাইলটির অনুলিপি করা, যা পুরানো অনুলিপি ব্যবহার করে এমন প্রক্রিয়াগুলির ক্ষেত্রে সম্পন্ন করা হচ্ছে। "সিপি" এর বিপরীতে, "ইনস্টল করুন" হয় নতুন ফাইল তৈরির আগে ফাইলটিকে লিঙ্কমুক্ত করে, বা (BSD সিস্টেমে, -S স্যুইচ সহ) একটি নতুন তৈরি করে এবং পরমাণুগতভাবে টার্গেট নামের নতুন নামকরণ করে, যা ইনস্টল এবং পুনরায় খোলার মধ্যে রেস শর্ত এড়ায় ids । এটি ব্যবহার না করা হলে, চলমান বাইনারি ফাইলের জন্য অনুলিপি (ETXTBSY সহ) ব্যর্থ হতে পারে বা লাইব্রেরি ফাইল বা কোনও ডেটা প্রতিস্থাপন করা থাকলে ক্রাশের কারণ হতে পারে।
  • পৃথক কমান্ডের প্রয়োজন ছাড়াই নতুন ফাইলে যথাযথ শংসাপত্রগুলি সেট করুন।
  • অনুরোধ করা হলে মধ্যবর্তী ডিরেক্টরি তৈরি করুন।
  • কোনও টার্গেট ফাইলটি যদি নতুন সংস্করণ (-সি স্যুইচ) এর অনুরূপ হয় তবে তা পরিবর্তন করা থেকে বিরত থাকুন।

সুতরাং, এটি ইউনিক্স পদ্ধতির অনুসরণ করেছে যে কোনও বিল্ডিং সরঞ্জাম দ্বারা কোনও ফাইলের কাজ করার স্থানে ইনস্টল করার কোনও একক কিন্তু সম্পূর্ণ পদক্ষেপের জন্য একটি সরঞ্জাম তৈরি করা হবে।

আমি বর্ণিত হিসাবে সম্পূর্ণ ধারণাটি BSD সিস্টেমে প্রয়োগ করা হয় (তথাকথিত "xinstall" সংস্করণে); আমি এখানে "নিরাপদ অনুলিপি" মোড (পারমাণবিক নামকরণের নতুন সংস্করণ) এর জন্য অতীব গুরুত্বপূর্ণ হিসাবে বিবেচনা করি। লিনাক্স সিস্টেমগুলি (কোর্টিলগুলি থেকে) এই গুরুত্বপূর্ণ অংশটি মিস করে এবং বাইস্ট্যান্ডার প্রক্রিয়াটি মুছে ফেলা ও পুনরায় খোলার মধ্যে দৌড়ঝাঁপ করে; তবে এটি প্যাকেজ পরিচালকদের দ্বারা আচ্ছাদিত করা যেতে পারে।


2
মেকফাইলগুলির ব্যবহার installবা ব্যবহারে $(INSTALL)ইনস্টলেশন কপি করার পদক্ষেপ এবং কিছু সাধারণ অনুলিপি পদক্ষেপ নয় বলে এই পদক্ষেপগুলিকে ফ্ল্যাগ করে। এটি দরকারী হতে পারে।
কাজ

আমি কোরিউটিল ইনস্টলটিতে দৌড়ের মুখোমুখি হচ্ছি ... এখানে কোনও সমাধান আছে, বা কোনও বিকল্প যা সঠিকভাবে এটি করে?
ট্রেন্ট

কোন ধরণের রেসকিউটি?
নেটচ

8

ব্যবহার সম্পর্কে এখানে পূর্ববর্তী বর্ণনাগুলি ছাড়াও লিনাক্সের মধ্যে cpএবং এর মধ্যে নিম্ন স্তরের পার্থক্য রয়েছে install। যদি কোনও বিদ্যমান ফাইলের অনুলিপি করা হয় cpতবে ফাইলের বিদ্যমান ইনোডকে ওভাররাইট করে, installসর্বদা একই ফাইলের নামের জন্য একটি নতুন ইনোড তৈরি করে।

চলমান বাইনারিটির একটি নতুন সংস্করণ ইনস্টল করার সময় এটি একটি পার্থক্য করে। ব্যবহারের cpফলে একটি EBUSY ত্রুটি দেখা দেয়, এবং installসফল হবে। চলমান বাইনারি এখনও পুরানো সংস্করণ ব্যবহার করবে, তবে প্রোগ্রামটি পুনরায় চালু করা হলে নতুন সংস্করণ ব্যবহার করা হবে।


এটি আকর্ষণীয় ... সুতরাং এটি একই নামের সাথে আলাদা ফাইল তৈরি করতে পারে তবে ভিন্ন ভিন্ন ইনোড?
নিয়াউ ওভিদিউ গ্যাব্রিয়েল

1
@ NeaţuOvidiuGabriel হ্যাঁ। ব্যবহারকারীর কাছে কেবল একটি ফাইল থাকবে কারণ ফাইলগুলি সাধারণত নাম অনুসারে দেখা হয়। তবে ফাইল সিস্টেমটিতে দুটি ফাইল রয়েছে যতক্ষণ না কোনও প্রক্রিয়া পুরানো ফাইলটির রেফারেন্স রাখে। যদি আপনি কোনও প্রক্রিয়া দ্বারা খোলা কোনও ফাইলটির নাম পরিবর্তন বা মুছলে এবং একই ফাইলটির নামের সাথে একটি নতুন ফাইল তৈরি করেন তবে এটি অর্জন করা সম্ভব।
টমাস স্কেয়ার

4

যদি প্রশ্নে থাকা ডিরেক্টরিটি ইতিমধ্যে বিদ্যমান থাকে:

  • mkdir -p মালিকানা এবং ফাইল মোড বিট সেট করার চেষ্টা করবে
  • install -d মালিকানা এবং ফাইল মোড বিট সেট করার চেষ্টা করবে না

এটি জিএনইউ কোর্টিলগুলির জন্য mkdirএবং installথেকে । তারা উভয়ই একই ফাংশনটি ব্যবহার করে তবে পরামিতিটি যথাক্রমে সেট করা হয় বা হয়।make_dir_parentspreserve_existingfalsetrue


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