আমার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করার জন্য কী এপিটি পাওয়ার কোনও উপায় আছে ?
আমি সিস্টেমকে প্রশস্ত করতে চাই না।
বিকল্পভাবে, কোনও হোম ডিরেক্টরি ভিত্তিক লিনাক্স প্যাকেজ পরিচালক রয়েছে?
আমার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করার জন্য কী এপিটি পাওয়ার কোনও উপায় আছে ?
আমি সিস্টেমকে প্রশস্ত করতে চাই না।
বিকল্পভাবে, কোনও হোম ডিরেক্টরি ভিত্তিক লিনাক্স প্যাকেজ পরিচালক রয়েছে?
উত্তর:
আরপিএম-এর ডিপোকজিতে --reloc বৈশিষ্ট্য নেই। কতগুলি RPM প্যাকেজগুলি এই বৈশিষ্ট্যটি সমর্থন করে তা বিবেচনা করার মতো। মূলত, এটি করা যায় না।
সিস্টেমে বিশ্বব্যাপী ইনস্টল করার আগে আপনি যদি কিছু পরীক্ষা করতে চান তবে আপনি যা করতে পারেন তা হ'ল use এটি করার জন্য, আপনাকে রুটে অ্যাক্সেস পেতে সক্ষম হতে হবে। প্রথম কাজটি হল একটি বেসিক ক্রুট তৈরি করা:
# ডিবুটস্ট্র্যাপ লেনি লেনি-ক্রুট
এটি lenny-chroot
ডিরেক্টরিটির ভিতরে একটি লেনি ক্রুট তৈরি করে ।
এখন আমরা ক্রুটে প্রবেশ করতে পারি:
# chroot lenny-chroot
এখন আমরা যা খুশি তা করতে পারি এবং এটি সিস্টেমের বাকী বিশৃঙ্খলা না করে যে কোনও কিছু ইনস্টল করতে পারি। আমাদের হয়ে গেলে, কেবল প্রস্থান টাইপ করুন বা ctrl-D টিপুন
লিনাক্সব্রু হ'ল লিনাক্সের জন্য আরেকটি নন-রুট প্যাকেজ ম্যানেজার (ওএস এক্সের জন্য জনপ্রিয় হোমব্রিউ প্যাকেজ ম্যানেজমেন্ট সিস্টেমের উপর ভিত্তি করে) যা উত্স থেকে সংকলন করে এবং আপনার হোম ডিরেক্টরিতে বাইনারি রাখে।
দস্তাবেজের উদ্ধৃতি দিয়ে লিনাক্সব্রু বৈশিষ্ট্যগুলি হ'ল:
জেন্টু উপসর্গ আপনি যা চান ঠিক তাই করে।
এটি একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত প্যাকেজ ইনস্টল করে। কোনও রুট অ্যাক্সেসের প্রয়োজন নেই। আপনি যদি এ থেকে মুক্তি পেতে চান তবে কেবল বেস ডিরেক্টরিটি সরিয়ে দিন।
PS: এটি উবুন্টু> = ১১.০৪, বা মাল্টিয়ার্কের সাথে অন্য কোনও ডেবিয়ান ডেরিভেটিভে কাজ করে না।
এটি সংকলনের বিকল্পটিতে যেমন একটি ছোটখাটো সংযোজন, ঠিক তেমন একটি সংকলন সময়ে ("চেকইনস্টল" বা অন্য কোনও পদ্ধতি সহ) একটি পৃথক উপস বিকল্প সহ একটি প্যাকেজে সংকলনের অর্ধ-উপায় বিকল্প রয়েছে। সুবিধাটি হ'ল প্যাকেজটি প্যাকেজ ম্যানেজারগুলিতে যেমন অ্যাপিটিচিউড বা সিনাপটিক হিসাবে উপস্থিত হবে।
এ ছাড়াও আমি মনে করি যে কিছু ক্ষেত্রে আসল .deb ডাউনলোড করা এবং dpkg ইন্সটল করার মাধ্যমে একটি পৃথক উপসর্গকে জোর করা সম্ভব হতে পারে তবে আমি মনে করি যে এটি কোনও র্যান্ডম প্যাকেজ দিয়ে করা যায় এমন কিছু নয়, তবে সেগুলি সংকলন করা হয়েছে got আপনি ইনস্টল করার আগে রফতানি করতে তাদের অবস্থানের জন্য কিছু আক্ষরিক (আক্ষরিক সুস্পষ্ট উপসর্গের তুলনায়) পরিবর্তনশীল। যদিও আমি "dpkg instdir উপসর্গ" জন্য গুগল পদ্ধতি সম্পর্কে কিছুই জানি না।
রুটলেস গ্যাবলিনাক্স আপনি যা চাইছেন ঠিক তা করতে পারে: প্যাকেজ ম্যানেজার, আপনার নিজের ডিরেক্টরি ডিরেক্টরিতে কোনও উন্নত সুবিধাসহ নয়। আশা করি আপনি জানেন আপনি কি করছেন; রুটলেস গাবোর সর্বাধিক রক্ষণাবেক্ষণ ইনস্টলেশন মোড নয়, এবং কয়েক বছর আগে যখন আমি এটি ব্যবহার করতাম তখন অন্যান্য গাবো পরিবর্তনের তুলনায় ইনস্টিটিউশন স্ক্রিপ্টটি কিছুটা পুরানো ছিল।
এমন একটি ক্লিকও রয়েছে যা বেশ কয়েকটি .deb
গুলি পুনরুদ্ধার করে , আপনার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করতে পারে এবং পরিচালনা করার জন্য কোনও রুট সুবিধার দরকার নেই ... তবে প্রাথমিক সেটআপের জন্য মূলের প্রয়োজন হয় না।
আমি সাধারণত উত্সগুলি পাই এবং "ইনস্টল" এর মতো কোনও ফাইল পরীক্ষা করে দেখি। সাধারণত করতে নির্দেশাবলী আছে ./configure --prefix=somedir
। তারপরে আপনাকে somedir/bin
আপনার পথে যুক্ত করতে হবে।
না, আমি মনে করি না আপনি পারবেন।
apt-get source
আপনার প্যাকেজটি ব্যবহার এবং সংকলন করাই এখনই সবচেয়ে সেরা আমি ভাবতে পারি । আপনার বাড়িতে প্যাকেজ ইনস্টল করার জন্য আপনি কোনওভাবে প্রক্রিয়াটি (যা কম বা বেশি স্বয়ংক্রিয় হতে পারে) তেজস্ক্রিয় করতে পারেন।
অন্যটি হ'ল dpkg -X
এটি আপনার পছন্দসই ডিরেক্টরিতে নিষ্কাশন করতে।
আপনার হোম ফোল্ডারে প্যাকেজ ইনস্টল করার দরকার আছে এমন খুব কম ক্ষেত্রেই রয়েছে।
তবে আপনি আপনার স্থানীয় মেশিনে সফ্টওয়্যার সংকলন এবং ইনস্টল করতে পারেন। কেবল আনজিপ করুন, তারপরে ./configure --prefix=$HOME/local
বা অন্য কোনও ডিরেক্টরি দিয়ে কনফিগার করুন । আপনি তখন make
এবং make install
স্বাভাবিক হিসাবে পারেন । এটি সেই প্রোগ্রামটি সংকলন এবং ইনস্টল করবে ~/local/
, উদাহরণস্বরূপ আপনি যে প্রোগ্রামটি সম্পাদন করবেন তা অবশ্যই এতে থাকবে ~/local/bin/programmname
।
আমার নিজের অভিজ্ঞতা থেকে বিদ্যমান ডিইবি প্যাকেজগুলি অন্য কোনও ডিরেক্টরিতে ইনস্টল করার জন্য সহজ উপায় নেই যা ক্রুট পরিবেশ নয়। ডেবিয়ান / উবুন্টু ইনস্টলেশন সরঞ্জামগুলি dpkg / অ্যাপিটিউটিউড / ডিলেক্ট সমস্ত সঠিকভাবে কাজ করতে রুট সুবিধার প্রয়োজন।
এখন উত্স ডিইবি প্রদত্ত আপনি প্যাকেজটি তৈরি করতে এবং আলাদা ডিরেক্টরি ট্রিতে ইনস্টল করতে ডিবিয়ান / বিধি ফাইলটি পরিবর্তন করতে পারেন তবে আপনি ইতিমধ্যে উপলব্ধ বাইনারি প্যাকেজগুলি ব্যবহার করছেন না।
অন্যরা যেমন উল্লেখ করেছে আপনি ডিবাটস্ট্র্যাপ ব্যবহার করতে পারেন এবং সহজেই একটি ক্রুট পরিবেশ তৈরি করতে পারেন , যা আমি অতীতে একটি 64৪ -বিট হোস্টে 32-বিট পরিবেশের জন্য করেছি, তবে এর জন্য কমপক্ষে বেস প্যাকেজগুলি নকল করেই একটি ক্রোট ইনস্টল করা দরকার। আপনি স্থান আছে এবং এই একটি টেকসই সমাধান আপনার সাথে দম্পতি এটা করতে পারেন হয়, তাহলে dchroot
, অথবা এমনকি ভাল schroot
, অ্যাপ্লিকেশন chroot পরিবেশ মধ্যে ইনস্টল সহজ সঞ্চালনের অনুমতি দেয়।
এটি বিতরণ থেকে সরকারী সংগ্রহস্থলগুলির সাথে কীভাবে কাজ করবে তা ভাবতে আমার সমস্যা হয়। এটি নির্ভরতা কিভাবে সমাধান করা উচিত? সিস্টেম থেকে বা আপনার হোম ডিরেক্টরি থেকে? যদি এটি উভয়ের মধ্যে বিভিন্ন সংস্করণ খুঁজে পায়?
আমি যা ভাবতে পারি তার মধ্যে সবচেয়ে খারাপ পরিবেশ যেমন 64৪-বিট সিস্টেমে 32-বিট অ্যাপ্লিকেশনগুলির জন্য লোকেরা করে। আপনি ক্রুটে ডেবিউটস্ট্র্যাপ বলছেন বলে এটি আরও ওভারহেড, তবে কিছু সিমলিংকিং , শেল র্যাপার স্ক্রিপ্ট মজাদার সাথে এটি আপনাকে যা করতে পারে তা করতে পারে।
আমি এখনও সমস্যাটি নিয়ে কাজ করছি, তবে মূলত আপনার যা প্রয়োজন, সেগুলি ডিবাটস্ট্র্যাপ করুন এবং fakeroot দিয়ে কাজ করা উচিত। ডিবুটস্ট্র্যাপটি কেবল শেল স্ক্রিপ্টগুলির একগুচ্ছ, তাই এটি কী টিকটিক করে তোলে তা দেখার জন্য আমি এটিকে আলাদা করে টানছি। ফাইলগুলি ইনস্টল হওয়ার পরে শক্ত অংশটি আনইনস্টল করতে হবে।
দুর্ভাগ্যক্রমে আমি এমন কোনও ডিস্ট্রো সরবরাহ করার কথা শুনিনি (যদিও আমি নিশ্চিত এটি অতি জনপ্রিয় হবে)। আপনি যদিও আরপিএম ভিত্তিক ডিস্ট্রো অনুকরণ করতে সক্ষম হতে পারেন ... আমি এটি চেষ্টা করে দেখিনি, তবে আপনি ব্যবহারকারী ভিত্তিক আরপিএম ডাটাবেস তৈরি করতে এবং তারপরে আরপিএম ব্যবহারকারীর ডাটাবেসে ইনস্টল করতে সক্ষম হতে পারেন।
এর সাথে একটি নতুন ব্যবহারকারী ভিত্তিক ডিস্ট্রো সেট করার চেষ্টা করুন:
rpm --initdb --dbpath DIRECTORY
তারপরে বিভিন্ন বিকল্প রয়েছে যা সাহায্য করতে পারে:
--prefix
--relocate
আমার একটি সমাধান আছে যা আমি সফলভাবে একটি স্কুল দেবিয়ান সার্ভারে সহযোগী সফটওয়্যার প্যাকেজগুলির একটি বিআইজি সংগ্রহ ইনস্টল করতে ব্যবহার করেছি, যেখানে আমার কোনও রুট অ্যাক্সেস নেই (এমনকি অন্য প্যাকেজ ম্যানেজারটি ইনস্টল করার জন্যও নয়)। এটি deboostrap
কোনও প্যাকেজ ম্যানেজার ব্যবহার করে না ।
পদ্ধতিটি আংশিকভাবে ম্যানুয়াল, তবে আমি এটিকে সুবিধাজনক করার জন্য যথাসাধ্য চেষ্টা করেছি।
এটি আমি কল করা এই স্ক্রিপ্টটি ব্যবহার করে install
( chmod +x
এটি ভুলে যাবেন না ):
#!/bin/bash
# PREFIX is the installation root, i.e. a directory you have write access to
PREFIX=$HOME
# unpack the archive to $PREFIX
ar p "$1" data.tar.xz | tar xJ -C $PREFIX
# go through all unpacked text files and search for occurences of /usr/...
# we're gonna replace some of them with $PREFIX/usr
files=$(dpkg --contents $1 | grep '^-' | awk '{print $6}' | sed 's/^..//' | sort | uniq)
for f in $files; do
file="${PREFIX}${f}"
if grep -Iq . "$file"; then
if grep -q '/usr' "$file"; then
# interactively ask for each occurence, if it should be replaced
vim -c '%s#/usr#'$PREFIX'/usr#gc' -c 'wq' "$file"
fi
else
echo "Leaving binary file $file unmodified"
fi
done
তাই সাধারণত আমি প্রথমে একটি ডেব ফাইল ডাউনলোড করে ডাউনলোড করি apt-get download package_name
। তারপরে আমি দৌড়েছি ./install package_name_blabla.deb
এবং /usr
আনপ্যাক করা ফাইলগুলির প্রতিটি ঘটনার বিষয়ে ম্যানুয়ালি সিদ্ধান্ত নেব , যদি এটি দ্বারা প্রতিস্থাপন করা উচিত $PREFIX/usr
বা না হয়।
এই সিদ্ধান্তটি সম্পূর্ণরূপে নির্ভর করে যে কোন প্যাকেজগুলি সিস্টেম-ইনস্টলড এবং কোনটি এই পদ্ধতিটি ব্যবহার করে ইনস্টল করা হয়েছে। সাধারণত, উদাহরণস্বরূপ, pkg-config ফাইলগুলির এই বিকল্প প্রয়োজন, যেখানে শেবাং লাইনগুলি পছন্দ #!/usr/bin/perl
করে না। থাম্বের সাধারণ নিয়ম হ'ল ফলস্বরূপ পাথটি একটি বিদ্যমান ফাইলের দিকে নির্দেশ করা উচিত।
প্যাকেজগুলি এইভাবে ইনস্টল করার সাথে আপনাকে অবশ্যই অন্য প্রোগ্রামগুলি তাদের সম্পর্কে কোনওভাবে বলতে হবে। এই সঠিক মান সংযোজন দ্বারা সম্পন্ন করা যেতে পারে LD_LIBRARY_PATH
, PATH
, PYTHONPATH
, PKG_CONFIG_PATH
, CMAKE_MODULES_PATH
, CMAKE_PREFIX_PATH
ইত্যাদি
এই পদ্ধতির একটি সতর্কতা রয়েছে, যে নির্ভরতাগুলি ডাউনলোড / স্বয়ংক্রিয়ভাবে ইনস্টল করা হয় না; আপনাকে সেগুলি ম্যানুয়ালি রাখতে হবে।
এছাড়াও এপিটি স্পষ্টতই এই প্যাকেজগুলি সম্পর্কে জানে না, তাই এটি চিরতরে তাদের অনুপস্থিত হিসাবে দেখায়। তবে এটি উপলব্ধি করে - যারা এমন একটি সিস্টেম-ওয়াইড অ্যাপ্লিকেশন ইনস্টল করতে চান যা ব্যবহারকারীর ইনস্টলেশনের উপর নির্ভর করে।
আপনি যদি কোনও প্রোগ্রাম আনইনস্টল করতে চান, আপনি ডাব সংরক্ষণাগারটির লিখিত সামগ্রীগুলি ব্যবহার করে তালিকাভুক্ত করতে পারেন ar p "$1" data.tar.xz | tar tJ
এবং তারপরে এই সমস্ত ফাইল মুছে ফেলতে পারেন PREFIX
।