কীভাবে একটি একক প্যাকেজ আপ্ট-গেট ব্যবহার করে আপগ্রেড করবেন?


826

আমি কীভাবে একটি একক প্যাকেজ আপডেট করব? যতদূর man apt-getবলা apt-get upgradeআছে প্যাকেজ / প্যাকেজগুলির প্যারামিটার হিসাবে তালিকা গ্রহণ করে না:

আপগ্রেড

আপগ্রেড ব্যবহার করা সূত্র থেকে সিস্টেমে ইনস্টল করা সমস্ত প্যাকেজের নতুন সংস্করণ ইনস্টল করতে ব্যবহৃত হয় /etc/apt/sources.list। বর্তমানে উপলব্ধ নতুন সংস্করণগুলির সাথে ইনস্টল করা প্যাকেজগুলি পুনরুদ্ধার এবং আপগ্রেড করা হয়েছে; কোনও পরিস্থিতিতে বর্তমানে ইনস্টল করা প্যাকেজগুলি সরানো হয়নি, বা প্যাকেজগুলি ইতিমধ্যে ইনস্টল করা নেই পুনরুদ্ধার এবং ইনস্টল করা হয়েছে। বর্তমানে ইনস্টল হওয়া প্যাকেজগুলির নতুন সংস্করণগুলি যা অন্য প্যাকেজের ইনস্টল স্থিতি পরিবর্তন না করে আপগ্রেড করা যায় না তাদের বর্তমান সংস্করণে রেখে দেওয়া হবে। প্রথমে একটি আপডেট অবশ্যই করাতে হবে যাতে অ্যাপটি-গেইন জানতে পারে যে প্যাকেজের নতুন সংস্করণ উপলব্ধ।

উত্তর:


1026

আপনার শুধু করা দরকার apt-get install --only-upgrade <packagename>। এটি কেবলমাত্র একক প্যাকেজটিকেই আপগ্রেড করবে এবং কেবল এটি ইনস্টল থাকলেই হবে।

আপনি যদি প্যাকেজটির অস্তিত্ব না থাকে তবে এটি ইনস্টল করতে ইচ্ছুক থাকেন বা এটি যদি আপগ্রেড হয় তবে তা ছেড়ে দিতে পারেন --only-upgrade


88
apt-get install --only-upgrade <packagename>কোনও নতুন প্যাকেজ ইনস্টল করবে না
ট্যানেলি

9
installকমান্ডটি প্রয়োজনীয় হলে সেই একক প্যাকেজের নির্ভরতাও আপগ্রেড করবে ?
পিনো

7
@ পিনো এটি করবে, এটি করা বোধগম্য হবে। আপনি যে সংস্করণে আপগ্রেড করছেন সেটি যদি অন্য প্যাকেজের নতুন সংস্করণের উপর নির্ভর করে? আপনি দু'জনকেই আপগ্রেড না করলে আপনাকে হজ দেওয়া হবে। installকাউন্টার-ইনটিজেটিভ মনে হলেও এটি কেন এটির জন্য সঠিক আদেশ।
ম্যাট ডজ

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

3
আমি কেবল পরীক্ষা করেছি, যেহেতু সমস্ত তথ্য বেশ অস্পষ্ট; উবুন্টু ১.0.০৪ ( apt 1.0.1) তে প্যাকেজ ব্যবহার apt installকরে আপগ্রেড করা সরবরাহ সরবরাহ করা হয় autoকিনা তা চিহ্নকে প্রভাবিত করে --only-upgradeনা। যদিও --only-upgradeআপনি দুর্ঘটনাক্রমে নতুন কিছু ইনস্টল করতে না চান তা ব্যবহার করে বোঝা যায়। এটি কোনও প্রয়োজনীয় নির্ভরতাগুলিও আপগ্রেড করবে ।
রন্ধন

129

সিএলআই ব্যবহার করে একটি একক প্যাকেজ আপডেট করার জন্য:

sudo apt-get install --only-upgrade <packagename>

যেমন, sudo apt-get install --only-upgrade ack

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Skipping **ack**, it is not installed and only upgrades are requested.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

11
আমি এই আদেশটি দিয়ে একটি ত্রুটি পেয়েছি:E: Sense only is not understood, try true or false.
মাইকেল 18

1
যারা পূর্ববর্তী ভাষ্যকারীর ত্রুটির মুখোমুখি হন তাদের নীচে আমার উত্তরটি দেখুন
গোলেম

3
এটি পূর্ববর্তী উত্তরগুলি থেকে নতুন তথ্য যোগ না
করায় নিম্নমানের

1
আপনার --only-upgradeকাছে installসরাসরি নয়, সাবকম্যান্ডে যেতে হবে apt-get, তারপরে আপনাকে সংযোজন করতে হবে না true
Ruslan

55

দুটি উপায় সম্পর্কে আমি ভাবতে পারি:

  1. sudo apt-get install nameofpackage

    এটি ইতিমধ্যে ইনস্টল থাকা অবস্থায়ও প্যাকেজটিকে আপগ্রেড করবে:

    ~$ sudo apt-get install emesene
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following packages will be upgraded:
      emesene
    1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
    Need to get 1,486 kB of archives.
    After this operation, 696 kB disk space will be freed.
    Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
    
  2. ব্যবহার Synaptic Package Manager: ডান ক্লিক করুন upgrade আপগ্রেডের জন্য চিহ্নিত করুন :

    এখানে চিত্র বর্ণনা লিখুন

    দ্রষ্টব্য : কখনও কখনও এটি অতিরিক্ত প্যাকেজ বা নির্ভরতা জিজ্ঞাসা করতে পারে, এটি স্বাভাবিক।


1
হ্যাঁ, এটি হওয়া উচিত এবং sudo apt-get install whateverনিজে থেকেই আপগ্রেড করা উচিত।
বাইনারি লাইফ 20'11

4
upgradeএকটি প্যাকেজ যুক্তি লাগে না।
hফিংক

25

আমার উবুন্টু 12.04 এলটিএস-এর অভিজ্ঞতায়, নীচের কমান্ডটি ব্যবহার করে পৃথক পিপিএ ব্যবহার করলে প্যাকেজটি আপগ্রেড করা হবে না -

sudo apt-get --only-upgrade install <packagename>

একইভাবে, আমি আপগ্রেড কমান্ডটি চালাতে চাইনি, যা আমার সার্ভারে সমস্ত প্যাকেজ আপগ্রেড করবে -

sudo apt-get dist-upgrade

উদাহরণস্বরূপ, আমি পিএইচপি 5.3 ইনস্টল করেছি এবং আমার অ্যাপটি.সোর্সগুলি ব্যবহার করে অনড্রেজ পিপিএ যুক্ত করেছি -

sudo add-apt-repository ppa:ondrej/php5

যদি আমি দৌড়ান

sudo apt-get install php5

এটি কেবল পিএইচপি 5.3 পুনরায় ইনস্টল করবে।

আমাকে প্রথমে ব্যবহার করে আপগ্রেড করতে সংস্করণ নম্বরটি নির্ধারণ করতে হবে

sudo apt-cache policy php5

এটি সমস্ত উপলব্ধ সংস্করণ নম্বর তালিকাভুক্ত করবে। আপনি আপগ্রেড করতে চান এমন সংস্করণ নম্বরটি খুঁজে পাওয়া উচিত এবং এরপরে উল্লেখ করা পুরো স্ট্রিংটি অনুলিপি করুন। উদাহরণস্বরূপ, উবুন্টুতে পিএইচপি 5.5 এর স্ট্রিংটি হ'ল "5.5.16 + ডিএফএসজি -1 + ডিবিএসুরি.অর্গ। যথাযথ + 2"।

এখন, আপনি নির্দিষ্ট সংস্করণ নম্বর, এবং ভয়েলা সহ অ্যাপট-গেট ইনস্টল কমান্ডটি চালাতে পারেন!

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

আমি কেবল এটি যুক্ত করেছি কারণ আমি অন্য কোথাও এই তথ্যটি খুঁজে পেতে অক্ষম!


16

উবুন্টু 9.04 জন্টি,

apt-get --only-upgrade install <package>

উৎপাদনের:

E: Sense only is not understood, try true or false.

আদেশ

apt-get --only-upgrade true install <package>

আমার ক্ষেত্রে কাজ করেছে।


4
আপনার --only-upgradeকাছে installসরাসরি নয়, সাবকম্যান্ডে যেতে হবে apt-get, তারপরে আপনাকে সংযোজন করতে হবে না true
Ruslan

10

একটি কমান্ড লাইন সমাধানের জন্য যা প্যাকেজটি ইতিমধ্যে উপস্থিত না থাকলে ইনস্টল করে না:

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

এটি সহজেই কোনও স্ক্রিপ্ট হিসাবে তৈরি করা যায়, যেমন:

upgrade-package.sh:

#!/bin/bash

[[ -z $1 ]] && { echo "Usage: $(basename $0) package"; exit 1; }

if dpkg -s "$1" 2>/dev/null | grep -q Status.*installed; then
    echo "Attempting to upgrade $1"
    sudo apt-get install "$1"
else
    echo "Package $1 is not installed"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.