প্রোগ্রাম ট্র্যাক রাখা


33

যখন আমি একটি সাধারণ প্রোগ্রাম ইনস্টল করি এটি প্রায়শই ব্যবহার করে make && make installএবং প্রায়শই একটি আনইনস্টল লক্ষ্যও রাখে না ।

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

আমি কীভাবে এই প্রোগ্রামগুলিতে নজর রাখব; বেশিরভাগ লোকেরা কি কেবল 'আগুন এবং ভুলে যান' এবং যদি কোনও আনইনস্টল লক্ষ্য না দেওয়া হয় তবে আমাকে কী নিজেই সমস্ত কিছু মুছতে হবে?


6
জিএনইউ স্টো কি এখানে বিকল্প? "জিএনইউ স্টো হ'ল সফ্টওয়্যার প্যাকেজগুলির ইনস্টলেশন পরিচালনার জন্য একটি প্রোগ্রাম, এগুলি পৃথক করে রাখার জন্য (/ usr / স্থানীয় / স্টো / ইমাস বনাম / usr / স্থানীয় / স্টো / পার্ল, উদাহরণস্বরূপ) সেগুলি ইনস্টল করার সময় উপস্থিত হয় appear স্থান (/ usr / স্থানীয়)। "
মাইক রেনফ্রো

@ মাইক এটি খুব আশাব্যঞ্জক দেখাচ্ছে; আমি নির্বিঘ্নে প্রোগ্রামগুলির সংস্করণগুলি সক্ষম এবং অক্ষম করার ধারণাটি পছন্দ করি। প্রথমত প্রোগ্রামটি কতটা সক্রিয় এবং স্থিতিশীল এবং একটি প্রোগ্রাম কতবার উপসর্গ প্রোটোকলটি ভেঙে দেয়?
উইল03uk

1
হাস্যকরভাবে স্থিতিশীল ( ১৯.২.২০১ 1996 তারিখ এবং ১৯.৩.৩ থেকে ২০০২ ) এবং প্রায় সম্পূর্ণ নিষ্ক্রিয় । এটি কেবল একটি পার্ল স্ক্রিপ্ট যা সিমলিঙ্কগুলি পরিচালনা করে। দিনে ফিরে, সংকলক এবং স্টোতে এ জাতীয় বুটস্ট্র্যাপ করা পেতে ব্যথা হয়েছিল তবে শেষ ব্যবহারকারীর অ্যাপ্লিকেশনগুলির জন্য এটি ঠিক আছে। আমি এটি কোনও অ্যাপ্লিকেশনের জন্য ব্যবহার করেছি আমি সহজেই নতুন ডেবিয়ান রিলিজ থেকে ব্যাকপোর্ট করতে পারি না, বা সোলারিস প্যাকেজ সংগ্রহস্থলগুলির মধ্যে থেকে পেতে পারি।
মাইক রেনফ্রো

উত্তর:


20

প্রতিটি প্রোগ্রাম একটি ডেডিকেটেড ডিরেক্টরি ট্রিতে ইনস্টল করুন এবং স্টো বা এক্সস্টো ব্যবহার করে সমস্ত প্রোগ্রামকে একটি সাধারণ শ্রেণিবিন্যাসে প্রদর্শিত হবে। স্টো প্রোগ্রাম-নির্দিষ্ট ডিরেক্টরি থেকে একটি সাধারণ গাছে প্রতীকী লিঙ্ক তৈরি করে।

আরও বিশদে বিশদ হিসাবে উদাহরণস্বরূপ শীর্ষস্থানীয় ডিরেক্টরি চয়ন করুন /usr/local/stow। এর অধীনে প্রতিটি প্রোগ্রাম ইনস্টল করুন /usr/local/stow/PROGRAM_NAME। উদাহরণস্বরূপ, এর এক্সিকিউটেবলগুলি ইনস্টল করার ব্যবস্থা করুন /usr/local/stow/PROGRAM_NAME/bin, এর ম্যান পেজগুলি ইন /usr/local/stow/man/man1এবং আরও। প্রোগ্রামটি যদি অটোকনফ ব্যবহার করে তবে চালান ./configure --prefix /usr/local/stow/PROGRAM_NAME। আপনি দৌড়ানোর পরে make install, চালান stow:

./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME

এবং এখন আপনার এই মত প্রতীকী লিঙ্ক আছে:

/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo

stowডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করে আপনি কী প্রোগ্রামগুলি ইনস্টল করেছেন সেগুলি আপনি সহজেই নজর রাখতে পারেন এবং কোনও ফাইল কোন প্রোগ্রামের অন্তর্ভুক্ত তা আপনি সর্বদা জানেন কারণ এটি সেই প্রোগ্রামের ডিরেক্টরি অনুসারে কোনও স্থানের প্রতীকী লিঙ্ক। stow -D PROGRAM_NAMEপ্রোগ্রামের ডিরেক্টরি মুছে ফেলা চালিয়ে কোনও প্রোগ্রাম আনইনস্টল করুন । আপনি কোনও প্রোগ্রাম চালিয়ে সাময়িকভাবে অনুপলব্ধ করতে পারেন stow -D PROGRAM_NAME( stow PROGRAM_NAMEএটি আবার উপলব্ধ করার জন্য চালান )।

আপনি যদি একই প্রোগ্রামের বিভিন্ন সংস্করণের মধ্যে দ্রুত পরিবর্তন করতে সক্ষম হতে চান /usr/local/stow/PROGRAM_NAME-VERSIONতবে প্রোগ্রাম ডিরেক্টরি হিসাবে ব্যবহার করুন । সংস্করণ 3 থেকে সংস্করণ 4 এ আপগ্রেড করতে, সংস্করণ 4 ইনস্টল করুন, তারপরে চালান stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4

স্টো-র পুরানো সংস্করণগুলি আমি এই উত্তরে যে বুনিয়াদি বর্ণনা করেছি তার চেয়ে বেশি দূরে যায় না। আরও নতুন সংস্করণ, পাশাপাশি এক্সস্টো (যা ইদানীং রক্ষণাবেক্ষণ করা হয়নি) এর আরও উন্নত বৈশিষ্ট্য রয়েছে যেমন নির্দিষ্ট ফাইলগুলিকে উপেক্ষা করার ক্ষমতা, স্টো ডিরেক্টরির বাইরে বিদ্যমান সিমলিংকের সাথে আরও ভালভাবে মোকাবেলা করার ক্ষমতা (যেমন man -> share/man) কিছু বিবাদ স্বয়ংক্রিয়ভাবে পরিচালনা করে (যখন দুটি প্রোগ্রামগুলি একই ফাইল সরবরাহ করে), ইত্যাদি etc.

আপনার যদি না থাকে বা রুট অ্যাক্সেস ব্যবহার করতে না চান, আপনি নিজের হোম ডিরেক্টরিতে যেমন একটি ডিরেক্টরি চয়ন করতে পারেন, যেমন ~/software/stow। এই ক্ষেত্রে, ~/software/binআপনার যুক্ত করুন PATHmanম্যান পেজগুলি যদি স্বয়ংক্রিয়ভাবে খুঁজে না পাওয়া যায় তবে এতে ~/software/manআপনার যুক্ত করুন MANPATH। আপনার হিসাবে যোগ ~/software/infoকরুন INFOPATH, ~/software/lib/pythonআপনার PYTHONPATH, এবং প্রযোজ্য হিসাবে।


4
আমি বিশ্বাস করি যেহেতু এই উত্তরটি পোস্ট করা হয়েছিল তখন থেকেই জিনিসগুলি কিছুটা পরিবর্তিত হতে পারে। একটি আপডেট হিসাবে ঠিক: জিএনইউ স্টো বর্তমানে উপেক্ষা তালিকা, একাধিক স্টো ডিরেক্টরি, দ্বন্দ্ব প্রাক সনাক্তকরণ, ইত্যাদি সমর্থন করে I আমি আরও মনে করি যে স্টো সক্রিয় বিকাশের অধীনে রয়েছে এবং এক্সস্টো ~ 3 বছর আপডেট হয়নি।
আমিলিও ওয়াজকেজ-রেইনা

18

আপনি একটি প্যাকেজ তৈরি করতে চেকইনস্টল ব্যবহার করতে পারেন (আরপিএম, দেব, বা স্ল্যাকওয়্যার সামঞ্জস্যপূর্ণ প্যাকেজ) এইভাবে, আপনি অ্যাপ্লিকেশন যুক্ত করতে / মুছে ফেলার জন্য আপনার ডিস্ট্রো প্যাকেজ ম্যানেজারটি ব্যবহার করতে পারেন (তবে আপডেট নয়)

আপনি কমান্ডের checkinstallজায়গায় make installব্যবহার করুন (দেবের জন্য -D পরামিতি ব্যবহার করে; -আর আরপিএম এবং -এস স্ল্যাকওয়্যার):

root@nowhere# ./configure
root@nowhere# make
root@nowhere# checkinstall -D

চেকইনস্টলটি ডিফল্টরূপে প্যাকেজটি তৈরি এবং ইনস্টল করবে, বা এটি কেবল ইনস্টল না করেই প্যাকেজটি তৈরি করতে পারে।

চেকইনস্টল বেশিরভাগ ডিস্ট্রো রেপোজিটরিগুলিতে উপলব্ধ।


এটি ভাল তবে আমি মূলত খুব সক্রিয় প্রোগ্রামগুলির জন্য টারবলগুলি ব্যবহার করি যা প্রায়শই প্যাকেজ করা হয় এবং স্টোয়ের ভাঙা এবং না সংস্করণগুলির মধ্যে স্যুইচিংয়ের ক্ষমতা দুর্দান্ত great
স্টোতে

দুর্ভাগ্যক্রমে, checkinstallমনে হচ্ছে এটি সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয়নি (?) :-(
নিকস আলেকজান্দ্রিস

@ নিকোস অ্যালেক্সান্দ্রিস আমি কৌতূহলী, যদি এটি তার উদ্দেশ্যযুক্ত উদ্দেশ্যে কাজ করে এবং এটি ভালভাবে করে - যা বর্তমান অ ব্যবহারকারী হিসাবে আমি ধরে নিচ্ছি - এটি কেন সক্রিয়ভাবে রক্ষণাবেক্ষণের প্রয়োজন?
হাশিম

@ হাশিম আমি আপনার বক্তব্য দেখছি "অভ্যাসগত চিন্তাভাবনা" এর বাইরে, যদিও সংকলকগুলি বিকশিত হওয়ার সময় কোনও সফ্টওয়্যার সংকলন সম্পর্কিত সফটওয়্যারটির রক্ষণাবেক্ষণের প্রয়োজন হবে না?
নিকোস আলেকজান্দ্রিস

6

বেশিরভাগ ক্ষেত্রে প্যাকেজ, বন্দর এবং অন্যান্য ধরণের পরিচালকদের পিছনে এই কারণটি ঘটেছিল যাতে এই ধরণের জিনিসটি ঘটে না।

আমি বলব যে ম্যানুয়াল মুছে ফেলা হ'ল ম্যানুয়াল ইনস্টল করার একমাত্র উপায়, যদি না অন্য কারও কাছে এই পয়েন্টটির আরও ভাল উত্তর না হয় তবে আমি অবহিত না হতে পারি।


6

আরও একটি বিকল্প লিনাক্স থেকে স্ক্র্যাচ ইঙ্গিতগুলি থেকে :

প্যাকেজ ব্যবহারকারীদের ব্যবহার করে আরও নিয়ন্ত্রণ এবং প্যাকেজ পরিচালনা

3 প্যাকেজ ব্যবহারকারী
3.1 ভূমিকা

এই প্রকল্পের মূল ধারণাটি সহজেই ব্যাখ্যা করা হয়। প্রতিটি প্যাকেজ একটি নির্দিষ্ট "প্যাকেজ ব্যবহারকারী" এর অন্তর্গত। আপনি যখন কোনও প্যাকেজ ইনস্টল করেন, আপনি প্যাকেজটিকে এই প্যাকেজ ব্যবহারকারী হিসাবে তৈরি এবং ইনস্টল করেন, যার ফলে ইনস্টল করা সমস্ত ফাইল প্যাকেজ ব্যবহারকারীর মালিকানাধীন থাকে। ফলস্বরূপ স্ট্যান্ডার্ড কমান্ড লাইন ইউটিলিটি ব্যবহারের মাধ্যমে সমস্ত সাধারণ প্যাকেজ পরিচালনার কাজগুলি স্বাচ্ছন্দ্যে অর্জন করা যায়। একটি সাধারণ ls -l <file>আপনাকে বলতে হবে, উদাহরণস্বরূপ, কি প্যাকেজ <file> এবং একটি find -user ...আদেশ আপনাকে নির্দিষ্ট প্যাকেজ সম্পর্কিত সমস্ত ফাইলের অপারেশন করতে দেয়, উদাহরণস্বরূপ প্যাকেজটি আনইনস্টল করতে তাদের মুছুন।

তবে প্যাকেজ পরিচালনা সমস্ত প্যাকেজ ব্যবহারকারীদের পক্ষে ভাল। যেহেতু প্যাকেজ ব্যবহারকারীদের মূল-অধিকার নেই, প্যাকেজটির ইনস্টলেশন এটি যা করতে পারে তাতে সীমাবদ্ধ। একটি জিনিস যা প্যাকেজ ব্যবহারকারীকে করার অনুমতি নেই, উদাহরণস্বরূপ, কোনও পৃথক প্যাকেজ ব্যবহারকারী থেকে ফাইলগুলি ওভাররাইট করা। বিভিন্ন প্যাকেজগুলির মধ্যে সংঘর্ষগুলি যা একই নামের বাইনারি, লাইব্রেরি বা একই শিরোনামের ফাইলটি ইনস্টল করতে চায় তা আপনার ভাবার চেয়ে সাধারণ। প্যাকেজ ব্যবহারকারীদের সাথে আপনি কখনই প্যাকেজ বিয়ের ইনস্টলেশন প্যাকেজ থেকে ফাইলগুলি ধ্বংস করার ঝুঁকিটি চালাবেন না আপনার লক্ষ্য না করে নিঃশব্দে। প্যাকেজ বি এর ইনস্টলেশনের সময় এটি করার প্রতিটি প্রচেষ্টা একটি "অনুমতি অস্বীকার" বা "অপারেশন অনুমোদিত নয়" ত্রুটি ঘটাবে যাতে আপনার যথাযথ পদক্ষেপ নেওয়ার সুযোগ থাকে। প্যাকেজ ব্যবহারকারীদের আর একটি জিনিস করার অনুমতি নেই যা হ'ল সেট রুট বাইনারি ইনস্টল করুন। বাইনারি সেটুইড রুট তৈরির সিদ্ধান্তটি এমন কিছু যা বুদ্ধিমান প্রশাসক কোনও সফ্টওয়্যার প্যাকেজের নির্মাতাকে ছেড়ে দিতে চান না।

সাধারণত প্যাকেজ ব্যবহারকারীদের অ্যাকাউন্টগুলির কোনও বৈধ পাসওয়ার্ড থাকে না যাতে কেবল su প্যাকেজ ব্যবহারকারীদের কাছে রুট থাকতে পারে, এটি নিশ্চিত করে যে প্যাকেজ ব্যবহারকারীরা সিস্টেমে কোনও অতিরিক্ত পথ খুলবেন না এবং সুরক্ষা হ্রাস করবেন না। তবে আপনি পারেন কোনও সহ-প্রশাসককে প্রকৃত রুট অ্যাকাউন্টে অ্যাক্সেস না করেই কোনও নির্দিষ্ট সফ্টওয়্যার প্যাকেজ ইনস্টল করতে ও বজায় রাখতে সক্ষম হতে চান সেই জন্য আপনি পাসওয়ার্ড সেট । এই সহ-প্রশাসক উদাহরণস্বরূপ অতিরিক্ত লাইব্রেরি ইনস্টল করতে, মুছতে, পরিবর্তন করতে পারে যা তার ওয়ার্কগ্রুপের জন্য প্রয়োজনীয় হতে পারে। তিনি লাইব্রেরিগুলি মুছে ফেলতে বা সংশোধন করতে পারবেন না, যেমন libc belong

এই প্রথম অশোধিত পরামর্শের পরে, আমি একটি বিবর্তিত রূপটি পেয়েছি:

ক্র্যাবল্ফস - ব্যবহারকারী ভিত্তিক প্যাকেজ পরিচালনা ব্যবস্থা

এই crablfs প্যাকেজ পরিচালনার জন্য অনন্য ইউড এবং গিডগুলি ব্যবহার করে প্যাকেজ পরিচালনার সর্বশেষতম নমুনা, তবে সোর্সফোর্জে এটি আবার আলফুলগুলিতে বিকশিত হচ্ছে:

ইউএলএফএস: আপনার পরিচালনাযোগ্য এবং স্ক্র্যাচ থেকে পুনরায় ব্যবহারযোগ্য লিনাক্স

ইনস্টল করা প্যাকেজগুলির কার্যকারিতা ব্যবহারকারীদের জন্য আমি মনে করি যে "প্যাকেজ ব্যবহারকারী" এলএফএস দ্রবণটি হালকা, কম আক্রমণাত্মক এবং মার্জিত। সংক্ষেপে বলতে গেলে, আপনি প্যাকেজগুলি ইনস্টল /usr/localঅথবা /home/user/localএবং প্রতিটি প্যাকেজের জন্য অনন্য uids এবং gids ব্যবহার করে ফাইলগুলি ট্র্যাক কিন্তু ঐতিহ্যগত জায়গা, সাধারণ ডিরেক্টরিগুলি থেকে সব ফাইল করা /usr/local/bin, /usr/local/libমত সব মূলধারার লিনাক্স ডিস্ট্রিবিউশন রয়েছে ... ফাইল অবরোধ এবং অবাঞ্ছিত ফাইল কে overwrite বা মুছে ফেলা ম্যাথিয়াস এস বেনকম্যান দ্বারা আরও_কন্ট্রোল_অ্যান্ড_পিকিজি_ম্যান.txt- এ ব্যাখ্যা করা একটি ঝরঝরে লিনাক্স ট্রিক দ্বারা এড়ানো যায়, যার জন্য কেবলমাত্র সাধারণ ফাইল এবং ডিরেক্টরিগুলির অনুমতি ম্যানিপুলেশন প্রয়োজন, উদাহরণস্বরূপ ডিরেক্টরিগুলির অবাঞ্ছিত ফাইল ওভাররাইটগুলি এড়ানোর জন্য স্টিকি বিট অনুমতি:

৩.৩ গ্রুপ

প্রতিটি প্যাকেজ ব্যবহারকারী কমপক্ষে 2 টি গোষ্ঠীর অন্তর্ভুক্ত। এই গ্রুপগুলির মধ্যে একটি হ'ল "ইনস্টল" গ্রুপ, যা সমস্ত প্যাকেজ ব্যবহারকারী (এবং কেবল প্যাকেজ ব্যবহারকারীরা) অন্তর্ভুক্ত। প্যাকেজগুলিতে স্টাফ ইনস্টল করার মঞ্জুরিপ্রাপ্ত সমস্ত ডিরেক্টরিগুলি ইনস্টল গ্রুপের অন্তর্ভুক্ত। এর মধ্যে / বিন এবং / usr / বিন এর মতো ডিরেক্টরি অন্তর্ভুক্ত রয়েছে তবে / রুট বা / এর মতো ডিরেক্টরিগুলি অন্তর্ভুক্ত করে। ইনস্টল গ্রুপের মালিকানাধীন ডিরেক্টরিগুলি সর্বদা গ্রুপ-লিখনযোগ্য। এটি প্যাকেজ পরিচালনার দিকগুলির পক্ষে যথেষ্ট হবে, তবে পরবর্তী প্রস্তুতি ব্যতিরেকে এটি অতিরিক্ত সুরক্ষা বা নিয়ন্ত্রণ দেয় না কারণ প্রতিটি প্যাকেজ একটি পৃথক প্যাকেজ থেকে ফাইলগুলি প্রতিস্থাপন করতে পারে (পরিবর্তনটি আউটপুট থেকে দৃশ্যমান হবে)ls -lযদিও)। এই কারণে সমস্ত ইনস্টল ডিরেক্টরি স্টিকি বৈশিষ্ট্য পান। এটি ব্যবহারকারীদের নতুন ফাইল তৈরি করতে এবং ডিরেক্টরিতে তাদের নিজস্ব ফাইল মুছতে বা সংশোধন করার অনুমতি দেয় তবে অন্যান্য ব্যবহারকারীর ফাইলগুলি সংশোধন বা সরানো যায় না। এই ইঙ্গিতের বাকী অংশে, যখনই "ইনস্টল ডিরেক্টরি" শব্দটি ব্যবহৃত হয়, এটি একটি ডিরেক্টরি যা গ্রুপ ইনস্টলের অন্তর্গত, এটি গ্রুপ-লিখনযোগ্য এবং আঠালো refers আইওডাব্লু, আপনি যে <dir>কোনও ইনস্টল ডিরেক্টরিতে পরিণত করবেন

chgrp && chmod g + w, o + t ইনস্টল করুন

আমার কাছে এটি দেখতে সহজ এবং চতুর সমাধানের মতো! আমি আমার এলএফএস বিল্ডে এই স্কিমটি ব্যবহার করেছি এবং এটি একটি কার্যকর সমাধান ...


3
  1. অনুস্মারক হিসাবে আপনি খালি আরপিএম তৈরি করতে পারেন।
  2. আপনি কোনও আরপিএমের মধ্যে সফ্টওয়্যারটি সঠিকভাবে মোড়ানো দেখতে পারেন।
  3. আপনাকে স্মরণ করিয়ে দেওয়ার tarজন্য ইনস্টল থেকে ফাইলগুলির একটি অনুলিপি রেখে /usr/src/non-rpmsদিতে পারেন (এটি আমি সাধারণত করি)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.