আমি কীভাবে সমস্ত প্যাকেজগুলিকে তাদের অফিসিয়াল সংস্করণে ফিরিয়ে দেব?


10

আমি পিপিএ থেকে প্রচুর প্যাকেজ ইনস্টল করেছি এবং আমি এখন অফিসিয়াল সংস্করণগুলিতে ফিরে যেতে চাই। অনেক পিপিএ-এর আর অস্তিত্ব নেই /etc/apt/sources.list.d, তাই ppa-purgeএগুলি নিয়ে কাজ করবে না।

এর জন্য সবচেয়ে সোজা-এগিয়ে কী উপায়?

উত্তর:


11

ভাল আপনি প্যাকেজগুলি সরিয়ে এবং পুনরায় ইনস্টল করতে পারেন

ppa-purgeপরিষ্কার পলায়নের জন্য সম্ভবত এখনও আপনার সেরা বাজি। কেবলমাত্র পিপিএ যুক্ত করার পরে প্যাকেজটি এসেছিল এবং এরপরে ppa-purgeএটি হত্যা করে। আপনি কতটা পিপিএ ইনস্টল করেছেন তা আমি নিশ্চিত নই তবে এটি যদি 10 এর চেয়ে কম হয় তবে আমি এটি করে দেখব

যদি আপনি মনে করেন যে পদ্ধতিটি খুব নরম তবে আমি bashপ্যাকেজ সংস্করণগুলি সনাক্ত করতে সহায়তা করার জন্য কিছু অজস্র লিখেছি যার ইনস্টলেশন উত্সটি কেবলমাত্র স্থানীয়ভাবে বিদ্যমান /var/lib/dpkg/status। এটি "অনাথ" প্যাকেজগুলির মতো নয়।

for p in `dpkg-query --showformat='${Package} ' -W`; do
    if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
        echo $p;
    fi;
done

আমি নিশ্চিত না যে এটি এখনও নিখুঁত কিনা তবে একবার চালিয়ে যান। নোট করুন এটি কেবল প্যাকেজগুলির নাম মুদ্রণ করতে চলেছে। আপনাকে প্রতিটি প্যাকেজ ম্যানুয়ালি আনইনস্টল / পুনরায় ইনস্টল করতে হবে।

এটি করার জন্য, প্রথমে চালিয়ে প্যাকেজটির জন্য কী উপলব্ধ তা দেখুন apt-cache policy <package>এবং আপনি প্যাকেজ সংস্করণগুলির একটি তালিকা (সংস্করণ সহ /var/lib/dpkg/status) দেখতে পাবেন see নিকটতম বাহ্যিক সন্ধান করুন এবং চালান:

sudo apt-get install <package>=<version>

আপনার --reinstallপরে একটি যুক্ত করার প্রয়োজন হতে পারে installতবে দেখুন এটি কীভাবে চলে।


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

দুঃখিত। আমি কেবল এটি লক্ষ্য করেছি এবং আমার মন্তব্য সরিয়েছি (তবে এটি অনেক দেরি হয়ে গেছে ..: /)। অন্যরা যারা কথোপকথনটি অনুসরণ করতে চাইতে পারে তাদের রেফারেন্সের জন্য, আমি এই উত্তরের সাথে লিঙ্ক করেছি ।
জোকারডিনো

সরকারী বিবৃতি অনুসারে, পিপিএ-পার্জ উবুন্টু থেকে অপসারণ করা হয়েছে কারণ, এর সমস্ত কার্যকারিতা অ্যাপটি-গেটের মাধ্যমে করা যেতে পারে। আমি কীভাবে এটিটি-গেট দিয়ে করতে পারি।
রাফি


এটি ডিফল্ট ইনস্টলেশন থেকে সরানো হয়েছে এবং এর নির্ভরতা হিসাবে দক্ষতা প্রয়োজন।
রাফি

1

আমি আরও একটি সম্পূর্ণ স্ক্রিপ্ট লিখেছি যা প্যাকেজগুলি স্বীকৃতি দেবে যার বর্তমান সংস্করণটি পিপিএ নয়, এবং তাদের বিকল্প পিপিএ-উপলব্ধ সংস্করণ রয়েছে। এটি চলার পরে, এটি একটি প্রস্তুত-চালিত কমান্ড প্রিন্ট করে যা তাদের পিপিএ সংস্করণগুলিতে এই জাতীয় প্যাকেজগুলি ডাউনগ্রেড করে।

https://gist.github.com/peci1/2d7859857fdad73ee8443f5ecd5ee5a3

#!/usr/bin/env bash

# BSD 3-clause license, copyright Martin Pecka @ 2019

# This script outputs a command that will revert all packages from non-PPA versions to their latest PPA version.
# This may be handy i.e. for finding packages for which you installed a newer version from a .deb file, or after
# incompletely removing a PPA.

export LC_ALL=C

command=""

for p in `dpkg-query --showformat='${Package} ' -W`; do
    if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
        versions=$(apt-cache policy $p | tr "\n" "\r" | grep -Po '(?<=\r )[ *]{3} [^\r]+ [0-9]+\r\s+[0-9]+' | sed 's/ [0-9]\+\r\s\+\([0-9]\+\)/ \1/g' | tr "\r" "\n")
        installable_versions=$(echo "${versions}" | grep -v " 100$")
        version_to_install=$(echo "${installable_versions}" | head -n1 | grep -Po "\s+\K.*(?= [0-9]+$)")
        if [[ ! -z "${version_to_install}" ]]; then
            echo "${p}=${version_to_install}"
            command="${command} ${p}=${version_to_install}"
        else
            echo "${p}: no PPA version"
        fi
    fi;
done

echo "To revert packages to their latest PPA version, call the following command as root. Please, carefully go through the list of changes apt-get will present to you!"
echo "apt-get install ${command}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.