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


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

আপগ্রেড

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


715
2018-05-20 16:36


উত্স




উত্তর:


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

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


903
2018-05-20 16:41



@ রফিনক: আপগ্রেড সম্পর্কে আপনার মন্তব্য সঠিক, তবে ইনস্টলেশনের একটি প্যাকেজ আপগ্রেড করার সমতুল্য হিসাবে বিবেচিত হয়; install is followed **by one** or more packages desired for installation or upgrading , যদি আপনার উত্তম উত্তর থাকে, আপনি প্রশ্নের উত্তর দিতে পারেন। এটি দুর্দান্ত হবে। - Binarylife
apt-get install --only-upgrade <packagename> কোন নতুন প্যাকেজ ইনস্টল করা হবে না - taneli
হবে install কমান্ড আপগ্রেড প্রয়োজন হলে যে একক প্যাকেজের নির্ভরতা? - Pino
@ পিনো ইট, এটা করতে ইন্দ্রিয় তোলে। আপনি যদি আপগ্রেড করছেন এমন সংস্করণটি অন্য প্যাকেজের একটি নতুন সংস্করণের উপর নির্ভর করে তবে কী হবে? আপনি উভয় আপগ্রেড না হলে আপনি hosed করছি। এ জন্যই installএই জন্য সঠিক কমান্ড, এমনকি যদি এটি পাল্টা-স্বজ্ঞাত মনে হয়। - Matt Dodge
এই "স্বয়ংক্রিয়" চিহ্ন মুছে ফেলবে? কখনও কখনও আপনি লাইব্রেরী ইনস্টল যখন বিশেষভাবে প্যাকেজ ম্যানুয়ালি ইনস্টল হিসাবে চিহ্নিত করা হয়। আমি এই কারণে লাইব্রেরিগুলিতে 'ইনস্টল' চালনা পছন্দ করি না। - isaaclw


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

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.

116
2017-10-15 11:22



আমি এই কমান্ড দিয়ে একটি ত্রুটি পেতে: E: Sense only is not understood, try true or false. - Michael
যারা পূর্ববর্তী মন্তব্যকারী এর ত্রুটি সম্মুখীন সম্মুখীন জন্য আমার উত্তর নিচে। - golem
এটি পূর্ববর্তী উত্তর থেকে নতুন তথ্য যোগ করেনি হিসাবে downvoted - gokul_uf
আপনি পাস করা উচিত --only-upgrade থেকে install উপমহাদেশ, সরাসরি না apt-get, তারপর আপনি যোগ করতে হবে না true। - Ruslan


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

  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: ডান ক্লিক → আপগ্রেড করার জন্য চিহ্নিত করুন:

    enter image description here

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


48
2018-05-20 16:39



হ্যাঁ, এটা করা উচিত, এবং sudo apt-get install whatever নিজেই আপগ্রেড করা উচিত। - Binarylife
upgrade একটি প্যাকেজ যুক্তি নিতে না। - ℝaphink
ঠিক আছে, ধন্যবাদ, এটি সব প্যাকেজ আপগ্রেড। - Binarylife


উবুন্টু 1২.04 এলটিএসের অভিজ্ঞতায়, নিম্নোক্ত কমান্ড ব্যবহার করে প্যাকেজটি আপগ্রেড করবে না যদি পৃথক পিপিএ ব্যবহার করে -

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

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

sudo apt-get dist-upgrade

উদাহরণস্বরূপ, আমার পিএইচপি 5.3 ইনস্টল হয়েছে এবং আমার apt.sources ব্যবহার করে ondrej পিপিএ যোগ করেছেন -

sudo add-apt-repository ppa:ondrej/php5

আমি চালানো হলে

sudo apt-get install php5

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

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

sudo apt-cache policy php5

এটি সমস্ত উপলব্ধ সংস্করণ সংখ্যা তালিকাভুক্ত করা হবে। আপনি যে সংস্করণটি আপগ্রেড করতে চান তার সংস্করণটি খুঁজে বের করুন এবং তারপরে সম্পূর্ণ স্ট্রিংটি অনুলিপি করুন যা এটি উল্লেখ করে। উদাহরণস্বরূপ, উবুন্টুতে পিএইচপি 5.5 এর স্ট্রিং "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2"।

এখন, আপনি নির্দিষ্ট সংস্করণ নম্বর, এবং voila সঙ্গে apt-get ইনস্টল কমান্ড চালাতে পারেন!

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

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


22
2017-09-18 16:14





উবুন্টু 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>

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


15
2018-04-13 18:21



আপনি পাস করা উচিত --only-upgrade থেকে install উপমহাদেশ, সরাসরি না apt-get, তারপর আপনি যোগ করতে হবে না true। - Ruslan


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

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

9
2018-05-22 07:58