আমার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করার জন্য কী এপিটি পাওয়ার কোনও উপায় আছে?


42

আমার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করার জন্য কী এপিটি পাওয়ার কোনও উপায় আছে ?

আমি সিস্টেমকে প্রশস্ত করতে চাই না।

বিকল্পভাবে, কোনও হোম ডিরেক্টরি ভিত্তিক লিনাক্স প্যাকেজ পরিচালক রয়েছে?


উত্তর:


17

আরপিএম-এর ডিপোকজিতে --reloc বৈশিষ্ট্য নেই। কতগুলি RPM প্যাকেজগুলি এই বৈশিষ্ট্যটি সমর্থন করে তা বিবেচনা করার মতো। মূলত, এটি করা যায় না।

সিস্টেমে বিশ্বব্যাপী ইনস্টল করার আগে আপনি যদি কিছু পরীক্ষা করতে চান তবে আপনি যা করতে পারেন তা হ'ল use এটি করার জন্য, আপনাকে রুটে অ্যাক্সেস পেতে সক্ষম হতে হবে। প্রথম কাজটি হল একটি বেসিক ক্রুট তৈরি করা:

# ডিবুটস্ট্র্যাপ লেনি লেনি-ক্রুট

এটি lenny-chrootডিরেক্টরিটির ভিতরে একটি লেনি ক্রুট তৈরি করে ।

এখন আমরা ক্রুটে প্রবেশ করতে পারি:

# chroot lenny-chroot

এখন আমরা যা খুশি তা করতে পারি এবং এটি সিস্টেমের বাকী বিশৃঙ্খলা না করে যে কোনও কিছু ইনস্টল করতে পারি। আমাদের হয়ে গেলে, কেবল প্রস্থান টাইপ করুন বা ctrl-D টিপুন


8

লিনাক্সব্রু হ'ল লিনাক্সের জন্য আরেকটি নন-রুট প্যাকেজ ম্যানেজার (ওএস এক্সের জন্য জনপ্রিয় হোমব্রিউ প্যাকেজ ম্যানেজমেন্ট সিস্টেমের উপর ভিত্তি করে) যা উত্স থেকে সংকলন করে এবং আপনার হোম ডিরেক্টরিতে বাইনারি রাখে।

দস্তাবেজের উদ্ধৃতি দিয়ে লিনাক্সব্রু বৈশিষ্ট্যগুলি হ'ল:

  • কোনও হোম ডিরেক্টরিতে সফ্টওয়্যার ইনস্টল করতে পারে এবং তাই সুডোর প্রয়োজন হয় না
  • নেটিভ বিতরণ দ্বারা প্যাকেজযুক্ত সফ্টওয়্যার ইনস্টল করুন
  • নেটিভ বিতরণ পুরানো হয়ে গেলে সফ্টওয়্যারটির সর্বশেষতম সংস্করণ ইনস্টল করুন
  • আপনার ম্যাক এবং লিনাক্স উভয়ই মেশিন পরিচালনা করতে একই প্যাকেজ পরিচালক ব্যবহার করুন

7

জেন্টু উপসর্গ আপনি যা চান ঠিক তাই করে।

এটি একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত প্যাকেজ ইনস্টল করে। কোনও রুট অ্যাক্সেসের প্রয়োজন নেই। আপনি যদি এ থেকে মুক্তি পেতে চান তবে কেবল বেস ডিরেক্টরিটি সরিয়ে দিন।

PS: এটি উবুন্টু> = ১১.০৪, বা মাল্টিয়ার্কের সাথে অন্য কোনও ডেবিয়ান ডেরিভেটিভে কাজ করে না।


1
জেন্টো উত্স থেকে তৈরি করে, পোস্টারটি মনে হয় কোনও নির্দিষ্ট ডিরেক্টরিতে প্যাকেজের মাধ্যমে ইনস্টল করতে চাইছে। এটি আসলে একই জিনিস নয়।
অ্যান্ড্রু কেস

1
@ অ্যান্ড্রুকেস জেন্টুর কাছে প্যাকেজ রয়েছে যা আমি বিশ্বাস করি। চূড়ান্ত ইনস্টলেশনের জন্য তারা দ্বিপদী নয় এই বিষয়টি অপ্রাসঙ্গিক।
jiggunjer

4

এটি সংকলনের বিকল্পটিতে যেমন একটি ছোটখাটো সংযোজন, ঠিক তেমন একটি সংকলন সময়ে ("চেকইনস্টল" বা অন্য কোনও পদ্ধতি সহ) একটি পৃথক উপস বিকল্প সহ একটি প্যাকেজে সংকলনের অর্ধ-উপায় বিকল্প রয়েছে। সুবিধাটি হ'ল প্যাকেজটি প্যাকেজ ম্যানেজারগুলিতে যেমন অ্যাপিটিচিউড বা সিনাপটিক হিসাবে উপস্থিত হবে।

এ ছাড়াও আমি মনে করি যে কিছু ক্ষেত্রে আসল .deb ডাউনলোড করা এবং dpkg ইন্সটল করার মাধ্যমে একটি পৃথক উপসর্গকে জোর করা সম্ভব হতে পারে তবে আমি মনে করি যে এটি কোনও র্যান্ডম প্যাকেজ দিয়ে করা যায় এমন কিছু নয়, তবে সেগুলি সংকলন করা হয়েছে got আপনি ইনস্টল করার আগে রফতানি করতে তাদের অবস্থানের জন্য কিছু আক্ষরিক (আক্ষরিক সুস্পষ্ট উপসর্গের তুলনায়) পরিবর্তনশীল। যদিও আমি "dpkg instdir উপসর্গ" জন্য গুগল পদ্ধতি সম্পর্কে কিছুই জানি না।



1

রুটলেস গ্যাবলিনাক্স আপনি যা চাইছেন ঠিক তা করতে পারে: প্যাকেজ ম্যানেজার, আপনার নিজের ডিরেক্টরি ডিরেক্টরিতে কোনও উন্নত সুবিধাসহ নয়। আশা করি আপনি জানেন আপনি কি করছেন; রুটলেস গাবোর সর্বাধিক রক্ষণাবেক্ষণ ইনস্টলেশন মোড নয়, এবং কয়েক বছর আগে যখন আমি এটি ব্যবহার করতাম তখন অন্যান্য গাবো পরিবর্তনের তুলনায় ইনস্টিটিউশন স্ক্রিপ্টটি কিছুটা পুরানো ছিল।

এমন একটি ক্লিকও রয়েছে যা বেশ কয়েকটি .debগুলি পুনরুদ্ধার করে , আপনার হোম ডিরেক্টরিতে প্যাকেজ ইনস্টল করতে পারে এবং পরিচালনা করার জন্য কোনও রুট সুবিধার দরকার নেই ... তবে প্রাথমিক সেটআপের জন্য মূলের প্রয়োজন হয় না।


1

আমি সাধারণত উত্সগুলি পাই এবং "ইনস্টল" এর মতো কোনও ফাইল পরীক্ষা করে দেখি। সাধারণত করতে নির্দেশাবলী আছে ./configure --prefix=somedir। তারপরে আপনাকে somedir/binআপনার পথে যুক্ত করতে হবে।


নির্ভরতা আপডেট করা, সংকলন করা এবং নির্ভরতা রাখা শক্ত হতে পারে।
পাওলো

এটি পিছনের দিকে। প্রশ্নটি কীভাবে প্যাকেজ পরিচালকদের (যেগুলি 1990 এর দশকের পর থেকে ভাল) তাদের এই পদ্ধতিতে আচরণ করতে হবে about
মনিকা

1

না, আমি মনে করি না আপনি পারবেন।

apt-get sourceআপনার প্যাকেজটি ব্যবহার এবং সংকলন করাই এখনই সবচেয়ে সেরা আমি ভাবতে পারি । আপনার বাড়িতে প্যাকেজ ইনস্টল করার জন্য আপনি কোনওভাবে প্রক্রিয়াটি (যা কম বা বেশি স্বয়ংক্রিয় হতে পারে) তেজস্ক্রিয় করতে পারেন।

অন্যটি হ'ল dpkg -Xএটি আপনার পছন্দসই ডিরেক্টরিতে নিষ্কাশন করতে।


0

আপনার হোম ফোল্ডারে প্যাকেজ ইনস্টল করার দরকার আছে এমন খুব কম ক্ষেত্রেই রয়েছে।

তবে আপনি আপনার স্থানীয় মেশিনে সফ্টওয়্যার সংকলন এবং ইনস্টল করতে পারেন। কেবল আনজিপ করুন, তারপরে ./configure --prefix=$HOME/localবা অন্য কোনও ডিরেক্টরি দিয়ে কনফিগার করুন । আপনি তখন makeএবং make installস্বাভাবিক হিসাবে পারেন । এটি সেই প্রোগ্রামটি সংকলন এবং ইনস্টল করবে ~/local/, উদাহরণস্বরূপ আপনি যে প্রোগ্রামটি সম্পাদন করবেন তা অবশ্যই এতে থাকবে ~/local/bin/programmname


0

আমার নিজের অভিজ্ঞতা থেকে বিদ্যমান ডিইবি প্যাকেজগুলি অন্য কোনও ডিরেক্টরিতে ইনস্টল করার জন্য সহজ উপায় নেই যা ক্রুট পরিবেশ নয়। ডেবিয়ান / উবুন্টু ইনস্টলেশন সরঞ্জামগুলি dpkg / অ্যাপিটিউটিউড / ডিলেক্ট সমস্ত সঠিকভাবে কাজ করতে রুট সুবিধার প্রয়োজন।

এখন উত্স ডিইবি প্রদত্ত আপনি প্যাকেজটি তৈরি করতে এবং আলাদা ডিরেক্টরি ট্রিতে ইনস্টল করতে ডিবিয়ান / বিধি ফাইলটি পরিবর্তন করতে পারেন তবে আপনি ইতিমধ্যে উপলব্ধ বাইনারি প্যাকেজগুলি ব্যবহার করছেন না।

অন্যরা যেমন উল্লেখ করেছে আপনি ডিবাটস্ট্র্যাপ ব্যবহার করতে পারেন এবং সহজেই একটি ক্রুট পরিবেশ তৈরি করতে পারেন , যা আমি অতীতে একটি 64৪ -বিট হোস্টে 32-বিট পরিবেশের জন্য করেছি, তবে এর জন্য কমপক্ষে বেস প্যাকেজগুলি নকল করেই একটি ক্রোট ইনস্টল করা দরকার। আপনি স্থান আছে এবং এই একটি টেকসই সমাধান আপনার সাথে দম্পতি এটা করতে পারেন হয়, তাহলে dchroot, অথবা এমনকি ভাল schroot, অ্যাপ্লিকেশন chroot পরিবেশ মধ্যে ইনস্টল সহজ সঞ্চালনের অনুমতি দেয়।


0

এটি বিতরণ থেকে সরকারী সংগ্রহস্থলগুলির সাথে কীভাবে কাজ করবে তা ভাবতে আমার সমস্যা হয়। এটি নির্ভরতা কিভাবে সমাধান করা উচিত? সিস্টেম থেকে বা আপনার হোম ডিরেক্টরি থেকে? যদি এটি উভয়ের মধ্যে বিভিন্ন সংস্করণ খুঁজে পায়?

আমি যা ভাবতে পারি তার মধ্যে সবচেয়ে খারাপ পরিবেশ যেমন 64৪-বিট সিস্টেমে 32-বিট অ্যাপ্লিকেশনগুলির জন্য লোকেরা করে। আপনি ক্রুটে ডেবিউটস্ট্র্যাপ বলছেন বলে এটি আরও ওভারহেড, তবে কিছু সিমলিংকিং , শেল র‌্যাপার স্ক্রিপ্ট মজাদার সাথে এটি আপনাকে যা করতে পারে তা করতে পারে।


0

আমি এখনও সমস্যাটি নিয়ে কাজ করছি, তবে মূলত আপনার যা প্রয়োজন, সেগুলি ডিবাটস্ট্র্যাপ করুন এবং fakeroot দিয়ে কাজ করা উচিত। ডিবুটস্ট্র্যাপটি কেবল শেল স্ক্রিপ্টগুলির একগুচ্ছ, তাই এটি কী টিকটিক করে তোলে তা দেখার জন্য আমি এটিকে আলাদা করে টানছি। ফাইলগুলি ইনস্টল হওয়ার পরে শক্ত অংশটি আনইনস্টল করতে হবে।


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

0

দুর্ভাগ্যক্রমে আমি এমন কোনও ডিস্ট্রো সরবরাহ করার কথা শুনিনি (যদিও আমি নিশ্চিত এটি অতি জনপ্রিয় হবে)। আপনি যদিও আরপিএম ভিত্তিক ডিস্ট্রো অনুকরণ করতে সক্ষম হতে পারেন ... আমি এটি চেষ্টা করে দেখিনি, তবে আপনি ব্যবহারকারী ভিত্তিক আরপিএম ডাটাবেস তৈরি করতে এবং তারপরে আরপিএম ব্যবহারকারীর ডাটাবেসে ইনস্টল করতে সক্ষম হতে পারেন।

এর সাথে একটি নতুন ব্যবহারকারী ভিত্তিক ডিস্ট্রো সেট করার চেষ্টা করুন:

rpm --initdb --dbpath DIRECTORY

তারপরে বিভিন্ন বিকল্প রয়েছে যা সাহায্য করতে পারে:

  • --prefix
  • --relocate

0

আমার একটি সমাধান আছে যা আমি সফলভাবে একটি স্কুল দেবিয়ান সার্ভারে সহযোগী সফটওয়্যার প্যাকেজগুলির একটি বিআইজি সংগ্রহ ইনস্টল করতে ব্যবহার করেছি, যেখানে আমার কোনও রুট অ্যাক্সেস নেই (এমনকি অন্য প্যাকেজ ম্যানেজারটি ইনস্টল করার জন্যও নয়)। এটি 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

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