সঠিক সংস্করণ সহ কীভাবে নির্দিষ্ট উবুন্টু প্যাকেজ ইনস্টল করবেন?


224

আমি সরবরাহিত কিছু নির্দিষ্ট প্যাকেজ (নাম এবং সংস্করণ) সহ একটি নতুন ভার্চুয়াল মেশিন সেটআপ করতে চাই।

উদাহরণস্বরূপ 2.2.20-1ubuntu1সমস্ত নির্ভরতা সহ সংস্করণে অ্যাপাচি 2 । এমনকি সার্ভারে এই প্যাকেজের নতুন সংস্করণ থাকলেও এটি ইনস্টল করা উচিত।

সমাধানটি একাধিক (এন) "সেটআপ" দিয়ে কাজ করতে / স্কেল করতে হয়। অন্য ভার্চুয়াল মেশিনের জন্য অ্যাপাচি 2 এর একটি পুরানো সংস্করণ প্রয়োজন হতে পারে।

আমি বর্তমানে এমন কিছু সম্ভাব্যতা সম্পর্কে জানি যা সঠিক প্যাকেজগুলি ইনস্টল করে তবে এটিকে খুব ভাল করে না:

  1. *.debপ্রতিটি ভার্চুয়াল মেশিনে ম্যানুয়ালি প্রয়োজনীয় সমস্ত অনুলিপি করুন এবং লিখুন: dpkg -i... -> কাজ করতে পারে তবে এটি অত্যন্ত ত্রুটিযুক্ত। (ম্যানুয়াল স্ক্রিপ্টস ইত্যাদি)
  2. প্রতিটি সেটআপের জন্য একটি নতুন উবুন্টু সংগ্রহশালা তৈরি এবং ব্যবহার করুন। -> কাজ করে না কারণ আমার এন স্টোরের দরকার হবে।
  3. মেশিনটি একবার সেটআপ করুন এবং ভিএম অনুলিপি করুন / একটি স্ন্যাপশট তৈরি করুন। -> কাজ করে না কারণ আমার এন ভিএম সংরক্ষণ করতে হবে।

আমার সমস্যাটি প্যাচ পরিচালনা হিসাবে লেবেলযুক্ত হতে পারে তবে আমি আমার প্যাকেজগুলি বর্তমান সংস্করণে আপডেট করতে চাই না। আমার লক্ষ্য পুরানো প্যাকেজ ইনস্টল করা।

উত্তর:


227

আপনি apt-getপ্যাকেজের নির্দিষ্ট সংস্করণটি ইনস্টল করতে ব্যবহার করতে পারবেন যতক্ষণ না এটি কোনও সংরক্ষণাগার হিসাবে থাকে যা অ্যাপটি জানে। apt-getম্যানপেজ থেকে :

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

উদাহরণস্বরূপ, আপনি এটি করতে পারেন:

sudo apt-get install apache2=2.2.20-1ubuntu1

মনে রাখবেন যে এই ক্ষেত্রে আপনার নিজের উপর নির্ভরশীলতার কিছু সমাধান করার প্রয়োজন হতে পারে, তবে যদি কোনও সমস্যা থাকে তবে এ্যাপ-গেটের কারণে কী ঘটছে তা আপনাকে জানিয়ে দেবে। আমার ১১.১০ সিস্টেমে এটি কাজ করার জন্য আমাকে নিম্নলিখিত কাজগুলি করতে হবে:

sudo apt-get install apache2=2.2.20-1ubuntu1 \
                     apache2.2-common=2.2.20-1ubuntu1 \
                     apache2.2-bin=2.2.20-1ubuntu1 \
                     apache2-mpm-worker=2.2.20-1ubuntu1

46
কোন সংস্করণ উপলব্ধ আছে তা জানতে?
রডরিগো গুর্গেল

12
@ রডরিগো গুর্গেল, "অ্যাপটিটিউড সংস্করণগুলি অ্যাপাচি 2"
ব্যবহারকারী 169015

3
@ user169015 "সংস্করণ বিদ্যমান"! = "সংস্করণটি উবুন্টুর জন্য প্যাকেজ করা হয়েছে এবং apt"
কাইল স্ট্র্যান্ড

হাই কাইল, আমি আপনার মন্তব্যটি পাইনি, যদিও হ্যাঁ, প্যাকেজটি অ্যাপটি ব্যবহার করেও ইনস্টল করা যেতে পারে। আমি কেবল প্রবণতা দিয়েই থাকি কারণ আমি এটি দীর্ঘকাল ধরে ব্যবহার করে
চলেছি

6
@ ব্যবহারকারী 169015 আমি মনে করি আপনি কাইলের মন্তব্যের বিন্দুটি অনুপস্থিত ,. নীচে psusi উত্তর দেখুন। স্পষ্টতই উবুন্টু এপিটি সংগ্রহস্থলগুলি প্যাকেজের পুরানো সংস্করণগুলি হোস্ট করে না! সুতরাং রানটাইম প্যাকেজ পরিচালকদের (পাইপ, মণি, মাভেন, ইত্যাদি) এর বিপরীতে, আপনি যদি কোনও পুরানো, জ্ঞাত-ভাল কনফিগারেশন পুনরায় স্থাপন করতে চান তবে আপনি উবুন্টু এপিটি সংগ্রহস্থলের উপর নির্ভর করতে পারবেন না। আমি নিজেই এটি উপলব্ধি করতে পেরে অবাক এবং হতাশ হয়েছি। আর্ক কি এটিকে আরও ভালভাবে পরিচালনা করে? ( Askubuntu.com/questions/728439/… )
algal

66

কোন সংস্করণ উপলব্ধ তা যাচাই করতে আপনি এর মাধ্যমে পরীক্ষা করতে পারেন:

sudo apt-cache madison ^apache2

যদি কাজ না করে sudo apt-get updateতবে প্যাকেজ তালিকাকে আপডেট করার আগে দৌড়ানোর বিষয়টি বিবেচনা করুন ।

তারপরে সংস্করণটি অনুলিপি করুন বা নীচের বাক্য গঠনটি ব্যবহার করুন:

sudo apt-get install apache2=2.2\*

আপনি কোন সংস্করণ ইনস্টল করেছেন তা পরীক্ষা করতে, চালান:

dpkg -l 'apache2*' | grep ^i

5
যে =2.2\*কোনও উপলভ্য বিবর্তন নির্বাচন করার জন্য ওয়াইল্ডকার্ড ব্যবহারের উপায় হিসাবে বিকল্পটি নির্দেশ করার জন্য অনেক ধন্যবাদ । আমি যা জানতে চেয়েছিলাম তা জানতে চেয়েছিলেন তবে কীভাবে জিজ্ঞাসা করতে হবে তা জানেন না :)
এক্সেক্স

3
ব্যবহার করে সংস্করণগুলি তালিকাভুক্ত করার সময় dpkg -l <packageName>, সংস্করণ নম্বরটি কখনও কখনও ছিন্ন করা হয়। এটি এড়াতে, ব্যবহার করুনCOLUMNS=100 dpkg -l <packageName>
সিজেবিএস

ইয়াক্কেটিতে, প্রথম কমান্ডটি কেবল আমাকে দিয়েছে:N: Unable to locate package ^apache2
জেসি গ্লিক

sudo apt-get updateপ্রথমে জেসিগ্লিক রান করুন । নিশ্চিত হয়ে নিন যে আপনি সঠিক অ্যাপটি উত্স কনফিগার করেছেন।
কেনারব


17

আমি aptপরিবারের অন্যান্য হ্যান্ডি সংস্করণ কমান্ডের সাথে পূর্ববর্তী উত্তরগুলিতে প্রসারিত করব । কোন সংস্করণ উপলব্ধ তা দেখতে, চালনা করুন apt-cache policy:

# apt-cache policy apache2
apache2:
  Installed: (none)
  Candidate: 2.4.7-1ubuntu4.5
  Version table:
     2.4.10-1ubuntu1.1~ubuntu14.04.1 0
        100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
     2.4.7-1ubuntu4.5 0
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     2.4.7-1ubuntu4 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

তারপরে, অন্য কোথাও উল্লিখিত হিসাবে এর সাথে একটি নির্দিষ্ট সংস্করণ ইনস্টল করুন apt-get:

# apt-get install apache2=2.4.7-1ubuntu4.5
...

আপনি এখন apt-cache policyআবার চালিয়ে কোন সংস্করণ ইনস্টল করেছেন তা দেখতে পাবেন :

# apt-cache policy apache2
apache2:
  Installed: 2.4.7-1ubuntu4.5
  Candidate: 2.4.7-1ubuntu4.5
  Version table:
     2.4.10-1ubuntu1.1~ubuntu14.04.1 0
        100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
 *** 2.4.7-1ubuntu4.5 0
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.4.7-1ubuntu4 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

আপনি যদি আপডেটগুলিতে নতুন সংস্করণ ইনস্টল করা না চান তবে প্যাকেজটি পিন করুন apt-mark:

# apt-mark hold apache2
apache2 set on hold.

ধরা যাক প্যাকেজ সূচীতে অ্যাপাচি 2-র একটি নতুন সংস্করণ যুক্ত হয়েছে এবং আপনার মেশিনটি সিঙ্ক হয়েছে apt-get update। আপনি পরবর্তী রান করার সময় এটি দেখতে পাবেন apt-get upgrade:

# apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

6

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


25
বিকাশের উদ্দেশ্যে পুরানো পরিবেশের সঠিক কপিগুলি পুনরুত্পাদন করার জন্য আমার এটি দরকার। প্রয়োজনীয় প্যাকেজগুলি অ্যাক্সেস করতে পুরানো প্যাকেজ সংস্করণগুলি মুছে না এমন মিরর সেটআপ করা কি সম্ভব বা কেবলমাত্র পৃথক পৃথক পৃথক ধারণকৃত একাধিক সংগ্রহস্থল স্থাপন করা দরকার?
আয়কোস্টার

19
@ স্পুসী: হুবহু ন্যায্য প্রতিক্রিয়া নয়, এর অনেকগুলি কারণ থাকতে পারে। আমার ক্ষেত্রে নতুন সংস্করণটিতে আসলে একটি বাগ থাকতে পারে এবং ডাবল চেক করার জন্য এটি পুরানো সংস্করণ প্রয়োজন। শুধু একটি উদাহরণ।
কুকি

2
@ নাম, না, এটি একটি একক ডিস্ট্রো যা রোলিং রিলিজ মডেলটি ব্যবহার করে না । স্থিতিশীল রিলিজে যখন জটিল বাগ এবং সুরক্ষা দুর্বলতাগুলি স্থির করা হয়, সেগুলি পুনরায় চাপ না দেয় তা নিশ্চিত করার জন্য দুর্দান্ত যত্ন নেওয়া হয়, তবে যদি তা ঘটে থাকে তবে রিগ্রেশন-রিলিজ সহ ট্যাগযুক্ত একটি বাগ রিপোর্ট ফাইল করুন এবং এটি স্থির বা ঘূর্ণিত হবে পেছনে.
psusi

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

5
@ পিপুসি: আপনার জন্য এখানে আরও একটি। সমস্ত মেশিনে সর্বদা একই সংস্করণ হওয়া দরকার ison তবুও 13.10 এ এটি 12.04 এলটিএসের চেয়ে আলাদা সংস্করণ। তাই এখন কি? যখন এই জাতীয় কোনও প্রশ্নে আসার সময় আপনি কেন এটি করতে চান এমন উত্তর পাওয়া সত্যিই অবিশ্বাস্যরকমভাবে সহায়তা না করা এবং প্রত্যেকের জন্য সময় অপচয় করা।
কুকি

2

সিউসির ব্যাখ্যা অনুসারে, ওবুন্টু সংগ্রহস্থলে পুরানো সংস্করণগুলি রাখা হয় না, তবে দৃশ্যত আপনি এখনও সেগুলি লঞ্চপ্যাডে খুঁজে পেতে পারেন। সুতরাং, আপনি যান (আপনার উবুন্টু সংস্করণ এবং আর্কিটেকচারের সাথে বিশ্বাসযোগ্য এবং amd64 প্রতিস্থাপন করুন):

https://launchpad.net/ubuntu/trusty/amd64/apache2

এবং আপনার পছন্দ মতো সংস্করণ নির্বাচন করুন। তারপরে আপনি একটি ফাইল হিসাবে ডেবটি ডাউনলোড করুন এবং এর সাথে ইনস্টল করুন:

dpkg -i apache2_2.4.7-1ubuntu4.20_amd64.deb

আবার, আপনার ফাইলের ফাইলের নামটি প্রতিস্থাপন করুন। আপনার যদি প্রচুর প্যাকেজ ডাউনগ্রেড করতে হয় তবে এটি ক্লান্তিকর হয়ে ওঠে তবে আপনি মরিয়া হয়ে থাকলে এটি কিছুই না করার চেয়ে ভাল।

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