(এই উত্তর সম্পর্কে আপনার যদি প্রশ্ন / মন্তব্য থাকে তবে দয়া করে একটি মন্তব্য যুক্ত করুন Or অথবা, আপনার যদি যথেষ্ট প্রতিনিধি থাকে তবে আপনি আমাকে আড্ডায় ডেকে আনতে পারেন))
দেবিয়ান এর একটি নতুন সংস্করণ থেকে সরাসরি বাইনারি প্যাকেজ ইনস্টল করুন - উত্তর নয়।
মনে করুন আপনি কোনও ডেবিয়ান-ভিত্তিক বিতরণের কয়েকটি সংস্করণ চালাচ্ছেন। আপনার কাছে উপলভ্য প্যাকেজের তুলনায় আপনি আরও একটি সাম্প্রতিক সংস্করণ চান। প্রথম জিনিস যা প্রতিটি শিক্ষানবিস সরাসরি আপনার দেবিয়ান সংস্করণে বাইনারি প্যাকেজ ইনস্টল করার জন্য এটি করার চেষ্টা করে। আপনি কোন সংস্করণটি চালাচ্ছেন এবং প্যাকেজটি কতটা নতুন on তার উপর নির্ভর করে এটি কাজ করতে পারে বা নাও পারে। সাধারণভাবে, এই পদ্ধতিটি ভাল কাজ করবে না।
উদাহরণস্বরূপ সেই ক্ষেত্রে বিবেচনা করুন যেখানে কেউ স্থিতিশীল অবস্থায় সরাসরি পরীক্ষা / অস্থির থেকে বাইনারি প্যাকেজ ইনস্টল করার চেষ্টা করে। এই মুহূর্তে খুব স্থিতিশীলের খুব কাছাকাছি টেস্টিং / অস্থিরতা না ঘটলে এটি সম্ভবত ভাল যাবে না। কারণটির সাথে ডিবানের মতো লিনাক্স-ভিত্তিক বাইনারি বিতরণের প্রকৃতির সাথে সম্পর্ক রয়েছে। এই ধরনের অপারেটিং সিস্টেমগুলি ভাগ করা লাইব্রেরিগুলিতে খুব বেশি নির্ভর করে এবং এই নির্ভরতাগুলি প্রায়শই খুব শক্তভাবে সংস্করণ-নির্ভর হয়; প্রয়োজনের তুলনায় প্রায়শই অনেক বেশি। দেবিয়ান বর্তমানে সংস্করণ নির্ভরতা "আঁটসাঁট" করার একটি ভাল উপায় নেই - সংস্করণ নির্ভরতা ঠিক যেমন প্রয়োজন ততটা সীমাবদ্ধ saying
এটি ব্যবহারকারীর জন্য কী বোঝায়? ধরুন উদাহরণস্বরূপ যে আপনি slrn
ডেবিয়ান থেকে অস্থির থেকে দেবিয়ান স্থিতিশীলকে ইনস্টল করার চেষ্টা করছেন । এটি দেখতে কেমন হবে?
# apt-get install slrn/unstable
Reading package lists... Done
Building dependency tree
Reading state information... Done
Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
E: Unable to correct problems, you have held broken packages.
ত্রুটিটি উত্পাদনের পরেও apt
এখানে কোনও ভাঙা প্যাকেজ নেই। তো, কী ভুল হয়েছে? সমস্যাটি হ'ল যে libc6
অস্থির slrn
বিরুদ্ধে যে সংস্করণটি সংকলিত হয়েছিল তার ডেবিয়ান স্ট্যাবিলিতে উপলব্ধ সংস্করণের চেয়ে আলাদা (এবং এটির একটি উচ্চতর সংস্করণ সংখ্যা রয়েছে)। ( libc6
এটি জিএনইউ সি গ্রন্থাগার। সি লাইব্রেরিটি কোনও ইউনিক্সের মতো অপারেটিং সিস্টেমের কেন্দ্রবিন্দু এবং জিএনইউ সি লাইব্রেরিটি লিনাক্স-ভিত্তিক অপারেটিং সিস্টেমগুলি সাধারণত ব্যবহৃত সংস্করণ))
সুতরাং অস্থির জন্য স্থির জন্য উপলব্ধ তুলনায় slrn
একটি উচ্চতর সংখ্যার সংস্করণ প্রয়োজন libc6
। নোট করুন যেহেতু একটি প্যাকেজ লাইব্রেরির উচ্চতর সংস্করণের বিপরীতে সংকলিত হয়েছে, সেই লাইব্রেরির উচ্চতর সংস্করণ প্রয়োজন হয় না, তবে এটি প্রায়শই ঘটে থাকে।
বাক্য গঠন
apt-get install slrn/unstable
অর্থ: অস্থির ব্যবহার করুন slrn
তবে অন্যান্য সমস্ত প্যাকেজগুলির জন্য কেবল স্থিতিশীল থেকে সংস্করণগুলি ব্যবহার করুন। আরও সুনির্দিষ্ট হতে, এটি অগ্রাধিকার সংখ্যা ব্যবহার করে। দেখুন man apt_preferences
বিস্তারিত জানার জন্য।
একজনও করতে পারেন
apt-get install -t unstable slrn
এটি কাজ করার অনেক বেশি সম্ভাবনা রয়েছে তবে আপনি সাধারণত এটি করতে চান না। কেন?
এর অর্থ: অস্থায়ীভাবে সমস্ত প্যাকেজগুলিকে স্থিতিশীল অবস্থায় প্যাকেজগুলির সাথে সমান পদক্ষেপে অস্থির অবস্থায় চিকিত্সা করুন। সুতরাং এটি অস্থির slrn
থেকে অস্থির নির্ভরতা টানবে যদি তারা উচ্চতর সংস্করণ সংখ্যার হয়, এবং তারা সাধারণত হবে। এটি ইতিমধ্যে ব্যাখ্যা করা কারণে GNU সি গ্রন্থাগারকে অন্তর্ভুক্ত করবে। এখন, এই পদ্ধতির সাধারণত "সফল" হবে, এতে নির্ভরতা সংজ্ঞা দ্বারা সন্তুষ্ট হবে (অস্থিরগুলির slrn
নির্ভরতাগুলি যা অস্থির মধ্যে সন্তুষ্ট থাকে) তবে আপনি প্যাকেজগুলির মিশ্রণটি শেষ করেন যা হঠাৎ করে গ্রন্থাগারের সংস্করণ দিয়ে চালিত হতে বাধ্য হয় তারা যেগুলির জন্য নির্মিত হয়েছিল তার চেয়ে আলাদা। এটি সম্ভবত ভাল শেষ হবে না।
উত্তরটি ... ব্যাকপোর্টস!
সুতরাং, এটি করার সঠিক উপায় কী? এটি আপনার সিস্টেমে আরও সাম্প্রতিক সংস্করণের ডেবিয়ান উত্সগুলি পুনর্নির্মাণ করা, "ব্যাকপোর্টিং" নামে পরিচিত। নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:
দেবিয়ান সংস্করণটির জন্য অতিরিক্ত প্যাকেজের আধিকারিক / অফিশিয়াল উত্স রয়েছে।
দেখতে প্রথম স্থানটি হ'ল ডেবিয়ান ব্যাকপোর্টস , যা দেবিয়ান ব্যাকপোর্টের অফিসিয়াল সাইট।
একটি দৃ concrete় উদাহরণের জন্য:
আপনার মুক্তির জন্য উপযুক্ত ব্যাকপোর্ট লাইন যুক্ত করুন এবং নতুন প্যাকেজগুলি সন্ধানের জন্য আপডেট করুন তারপরে ব্যাকপোর্টগুলি থেকে স্পষ্টভাবে কিছু ইনস্টল করুন (কারণ ব্যাকপোর্টগুলি ডিফল্টরূপে নিষ্ক্রিয় করা হয়)।
echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt-get update
sudo apt-get install -t stretch-backports git
এটি গিটের সর্বশেষতম স্থিতিশীল সংস্করণ পাবে যা প্রসারিতের সাথে অন্তর্ভুক্ত স্থিতিশীলের তুলনায় দরকারী নতুন বৈশিষ্ট্যগুলি রয়েছে (যেমন 'অন্তর্ভুক্ত' যা আপনাকে একাধিক কনফিগার ফাইল একত্রিত করতে বা আপনার ব্যবহারকারীর নাম ~ / ওয়ার্ক / প্রকল্পগুলি / বনাম personal / ব্যক্তিগত / প্রকল্প /)।
দেখার আরেকটি জায়গা হ'ল উবুন্টু রক্ষণাবেক্ষণকারীদের বিভিন্ন পিপিএ। আপনি "প্যাকেজ নাম পিপিএ" অনুসন্ধান করতে পারেন।
ওএসের সেই সংস্করণটির জন্য প্যাকেজের আর কোনও সাম্প্রতিক সংস্করণ উপলব্ধ নেই তবে ওএসের আরও সাম্প্রতিক সংস্করণ / রিলিজের জন্য আরও সাম্প্রতিক সংস্করণ উপলব্ধ। এটি ব্যাকপোর্টিংয়ের জন্য স্ট্যান্ডার্ড কেস।
ব্যাকপোর্টিং মানে হ'ল আপনি যে সংস্করণটি চালাচ্ছেন তার উপর দেবিয়ানের পরবর্তী সংস্করণ থেকে আপনি দেবিয়ান উত্সগুলি পুনর্নির্মাণ করেন। এই পদ্ধতিটি সহজ বা জড়িত এবং প্যাকেজের উপর নির্ভর করে জটিল হতে পারে। এটি কীভাবে করবেন তার একটি রূপরেখা এখানে দেওয়া হল।
নতুনদের জন্য একটি সংক্ষিপ্ত ব্যাকপোর্টিং টিউটোরিয়াল
সংক্ষিপ্ততার জন্য আমি ধরে নেব যে আপনি বর্তমান দেবিয়ান স্থিতিশীল চলছে, বর্তমানে হুইজি zy আমি slrn
উদাহরণ হিসাবে প্যাকেজ ব্যবহার করব ।
প্রথমে নোট করুন যে সমস্ত ডেবিয়ান প্যাকেজিং ফাইল debian/
সোর্স ডিরেক্টরিটির সাব-ডিরেক্টরিতে থাকে।
প্রথম পদক্ষেপটি আরও সাম্প্রতিক সংস্করণ উপলব্ধ কিনা তা পরীক্ষা করা। আপনি এটি ব্যবহার করে করতে পারেন apt-cache policy
।
apt-cache policy slrn
slrn:
Installed: 1.0.0~pre18-1.3
Candidate: 1.0.0~pre18-1.3
Version table:
1.0.1-10 0
50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
*** 1.0.0~pre18-1.3 0
500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
100 /var/lib/dpkg/status
1.0.0~pre18-1.1 0
500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages
আমরা ব্যাকপোর্ট করতে চাই 1.0.1-10
।
ধাপ 1:
নোট: আপনি যে deb-src
উত্স সংস্করণটি ডাউনলোড করতে চান তার লাইনগুলি আপনার মধ্যে উপস্থিত রয়েছে তা নিশ্চিত করুন /etc/apt/sources.list
। উদাহরণস্বরূপ, আপনি যদি অস্থির সংস্করণটি ডাউনলোড করতে চান তবে আপনার অস্থিরতার জন্য লাইন slrn
প্রয়োজন deb-src
, অথবা এটি কাজ করবে না। নোট করুন যে deb
উত্সগুলি ডাউনলোড করতে আপনার সংশ্লিষ্ট লাইনগুলির প্রয়োজন নেই , যদিও apt-cache policy
সেই তথ্যটি ব্যবহার করে, সুতরাং যদি আপনার সংশ্লিষ্ট deb
লাইন না থাকে তবে apt-cache policy
আপনাকে প্রাসঙ্গিক সংস্করণ (গুলি) দেখাবে না। আপনার যদি deb
লাইন থাকে তবে এন্ট্রি /etc/apt/preferences
বা অনুরূপ ব্যবহার করে নতুন সংস্করণগুলি পিন করতে ভুলবেন না । /etc/apt/preferences
উদাহরণস্বরূপ এ জাতীয় প্রবেশ (অস্থিরতার জন্য) কাজ করবে।
Package: *
Pin: release a=unstable
Pin-Priority: 50
আপনি যদি লাইনগুলি যুক্ত করেন তবে পরে /etc/apt/sources.list
চালাতে ভুলবেন না apt-get update
।
জন্য উত্স ডাউনলোড করুন slrn
। একটি ভাল জায়গা /usr/local/src/slrn
।
apt-get source slrn=1.0.1-10
ধাপ ২:
ভার্সন নম্বরটি সামান্য পরিবর্তন করুন, যাতে আপনার ব্যাকপোর্টটি প্রবাহিত সংস্করণ থেকে আলাদা করতে পারে। চালান dch -i
, যা স্বয়ংক্রিয়ভাবে debian/changelog
ফাইলটিতে একটি এন্ট্রি যুক্ত করবে । তারপরে এ জাতীয় কিছু দেখার জন্য এন্ট্রি পরিবর্তন করুন for
slrn (1.0.1-10.username) UNRELEASED; urgency=low
* Backport to wheezy.
-- User <user@domain> Sun, 02 Feb 2014 23:54:13 +0530
ধাপ 3:
উত্স তৈরির চেষ্টা। যদি বিল্ডের জন্য প্রয়োজনীয় প্যাকেজগুলি উপলব্ধ না হয় তবে প্রচেষ্টা ব্যর্থ হবে। উত্স ডিরেক্টরিতে ডিরেক্টরি পরিবর্তন করুন। প্যাকেজ debuild
থেকে ব্যবহার করুন devtools
।
cd slrn-1.0.1/
debuild -uc -us
যদি বিল্ড নির্ভরতা সন্তুষ্ট হয়, তবে উত্স উত্স ডিরেক্টরিতে উপরে স্তরে কিছু ডেব তৈরি এবং উত্পাদন করবে; এই ক্ষেত্রে /usr/local/src/slrn
।
পদক্ষেপ 4:
মনে করুন বিল্ড নির্ভরতা সন্তুষ্ট নয়। তারপরে আপনার বিল্ড নির্ভরতা ইনস্টল করার চেষ্টা করতে হবে। এটি হয়ত বা কাজ করতে পারে না, কারণ নির্ভরতাগুলি আপনার সংস্করণের জন্য উপলব্ধ নাও হতে পারে, বা যদি উপলভ্য হয় তবে সঠিক সংস্করণে নাও পারা যায়।
এনবি: দুর্ভাগ্যক্রমে দেবিয়ান প্যাকেজগুলির জন্য বিল্ড নির্ভরতাগুলির সংস্করণগুলি প্রয়োজনের চেয়ে বেশি হওয়া প্রয়োজন require এটি পরীক্ষা করার জন্য দেবিয়ানে কোনও স্বয়ংক্রিয় উপায় নেই এবং প্রায়শই প্যাকেজ রক্ষণাবেক্ষণকারীরা যতক্ষণ না এটি সম্পর্কিত সংস্করণ / প্রকাশের ক্ষেত্রে কাজ করে ততক্ষণ পাত্তা দেয় না। অতএব, নির্ভরতা সংস্করণগুলিতে সন্দেহজনক মনোভাব গ্রহণ করুন এবং সাধারণ জ্ঞান ব্যবহার করুন। উদাহরণস্বরূপ, পাইথন এবং জিএনইউ সরঞ্জামগুলির মতো বহুল ব্যবহৃত প্যাকেজগুলি তাদের নির্ভরতার খুব নির্দিষ্ট সংস্করণগুলির উপর নির্ভর করবে না, ডেবিয়ান প্যাকেজারের তালিকা নির্বিশেষে।
যাইহোক, আপনি এগুলি ইনস্টল করার চেষ্টা করতে পারেন
apt-get build-dep slrn=1.0.1-10
যদি এটি সফল হয়, তবে প্যাকেজটি আবার তৈরি করার চেষ্টা করুন (STEP 2)। যদি এটি ব্যর্থ হয়, তবে আরও কাজ করা দরকার। নোটটি যে ফাইলটিতে debuild
নির্ভরতাগুলি বাড়ায় তা দেখায় debian/control
এবং প্রয়োজনে আপনি এগুলি পরিবর্তন করতে পারেন। সুতরাং আসুন এখন সে সম্পর্কে কথা বলা যাক। এখানে slrn জন্য নির্ভরতা তৈরি করুন।
Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev,
exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf,
libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews
ব্যবহারের বিকল্প apt-get build-dep
হ'ল এটি করে ম্যানুয়ালি ইনস্টল করা
apt-get install debhelper libslang2-dev ...
আপনি যদি কন্ট্রোল ফাইলে এই মানগুলি পরিবর্তন করতে শুরু করেন তবে আপনার একটি ম্যানুয়াল ইনস্টলেশন স্যুইচ করা উচিত, কারণ এর পরে apt-get build-dep
আর সঠিক জিনিসটি করা হবে না।
উপলব্ধ সফ্টওয়্যারটির আরও সাম্প্রতিক সংস্করণের কোনও প্যাকেজড সংস্করণ নেই। উপলভ্য বিকল্পগুলি হ'ল সাম্প্রতিক সংস্করণটি প্যাকেজ করার জন্য।
অনেক ক্ষেত্রে, নতুন উত্সগুলির সাথে একত্রে সফ্টওয়্যারটির পূর্ববর্তী সংস্করণগুলি থেকে প্যাকেজিং পুনরায় ব্যবহার করতে পারেন। এই পদ্ধতির সমস্যা দেখা দিতে পারে, উল্লেখযোগ্যভাবে যে প্যাচগুলি সফ্টওয়্যারটির পূর্ববর্তী সংস্করণগুলিতে প্রয়োগ করা হয়েছিল সেগুলি এখানে প্রয়োগ নাও হতে পারে, সুতরাং উত্সগুলির সাথে তাদের এটিকে পুনরায় সংযোগের প্রয়োজন হতে পারে। 3.0 (কোয়েল) উত্স ফর্ম্যাট যা এখন স্ট্যান্ডার্ড ইউজ কিল্ট হয়ে উঠছে, এবং প্যাচগুলি debian/patches
ডিরেক্টরিতে অবস্থিত ।
তবে এই বিষয়গুলির একটি বিস্তারিত আলোচনা এই পোস্টের সুযোগের বাইরে scope