जवाबों:
वैसे आप संकुल को हटा और पुनः स्थापित कर सकते हैं
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
संस्करण सहित ) की एक सूची दिखाई देगी । निकटतम बाहरी खोजें और चलाएं:
sudo apt-get install <package>=<version>
आपको इसके --reinstall
बाद जोड़ने की आवश्यकता हो सकती है install
लेकिन देखें कि यह कैसे जाता है।
ppa-purge
कि हटा दिया गया था? यह भरोसेमंद के साथ-साथ हर दूसरे समर्थित रिलीज़ के लिए भी है ।
मैंने एक और पूर्ण स्क्रिप्ट लिखी है जो उन पैकेजों को पहचान लेगी जिनका वर्तमान संस्करण पीपीए से नहीं है, और उनके पास एक वैकल्पिक पीपीए-उपलब्ध संस्करण है। इसके चलने के बाद, यह एक रेडी-टू-रन कमांड को प्रिंट करता है जो ऐसे पैकेजों को उनके पीपीए संस्करणों में डाउनग्रेड करेगा।
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}"