कैसे देखें कि क्या एक ppa मेरे distro का समर्थन करता है


9

मैं अक्सर अपनी संसाधनों की सूची में पीपीए जोड़ने के लिए टर्मिनल का उपयोग करता हूं, केवल यह पता लगाने के लिए कि पीपीए मेरे उबंटू संस्करण का समर्थन नहीं करता है। इस प्रकार, अल्ला को एक त्रुटि के साथ बधाई दी जाती है:

404  Not Found

मैं टर्मिनल के माध्यम से कैसे जांच कर सकता हूं, अगर जोड़ा जाने वाला ppa मेरे Ubuntu संस्करण का समर्थन करता है?


@Wilf, अधिमानतः। लेकिन, अगर कोई टर्मिनल विकल्प नहीं है। समय की एक सभ्य राशि के बाद, एक अमर समाधान स्वीकार करने के लिए तैयार है।
ब्लेड

मैंने अपने जवाब को एक काम करने वाली स्क्रिप्ट के साथ संपादित किया;)
मृवयकाडजी

@MVVkkadji, अच्छा लगा।
ब्लेड 19899

जवाबों:


8

अपडेट :

स्क्रिप्ट अब जांचती है कि क्या पीपा आपके डिस्ट्रो का समर्थन करता है, और फिर पुष्टि के लिए अक्स यदि आप अपने स्रोतों की सूची में रेपो जोड़ना चाहते हैं और केवल तभी पैकेजों को स्थापित करते हैं।

इस का प्रयोग अपने जोखिम पर करें! मैं केवल दो ppa पर यह परीक्षण किया है! टूटे हुए पैकेज के लिए मुझे जिम्मेदार नहीं ठहराया जाएगा!

कोड:

#!/bin/bash


#-----------------------------------------------
#   Author      :   Imri Paloja
#   Email       :   ****.******@*****.***
#   HomePage    :   www.eurobytes.nl
#   Version     :   3.0
#   Name        :   add-ppa
#----------------------------------------------- 

# CHANGELOG
# 
# 1. Asks for confirmation if ppa supports distro.

mkdir /tmp/add-ppa/

wget --quiet "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists" -O /tmp/add-ppa/support.html

grep "$(lsb_release -sc)" "/tmp/add-ppa/support.html" >> /tmp/add-ppa/found.txt

cat /tmp/add-ppa/found.txt | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' >> /tmp/add-ppa/stripped_file.txt

if [[ -s /tmp/add-ppa/stripped_file.txt ]] ; then

echo "$(lsb_release -sc) is supported"


read -p "Do you wish to install add the ppa to your source, and install the binaries [y/n] ?"
if [ "$REPLY" == "y" ] ; then

echo "Adding it to your sources list"
sudo add-apt-repository $1

echo "Refreshing your sources list"
sudo apt-get update 

# Searching for the needed files, and installing them

wget --quiet "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists/$(lsb_release -sc)/main/binary-amd64/Packages" -O /tmp/add-ppa/packages.html

grep "Package:" "/tmp/add-ppa/packages.html" >> /tmp/add-ppa/packages.txt

cat /tmp/add-ppa/packages.txt | sed ':a;N;$!ba;s/\n/ /g' >> /tmp/add-ppa/packages_stripped_file.txt

cat /tmp/add-ppa/packages_stripped_file.txt | sed 's|Package:||g' >> /tmp/add-ppa/packages_stripped_file2.txt

sudo apt-get install $(grep -vE "^\s*#" /tmp/add-ppa/packages_stripped_file2.txt  | tr "\n" " ")

else
 exit 0
fi

else

echo "$(lsb_release -sc) is not supported"

fi;

#Cleanup

rm -r /tmp/add-ppa/

उपयोग:

किसी ने पीपा का समर्थन नहीं किया

./support.sh ppa:m-gehre/ppa
saucy is not supported

समर्थित ppa's

./support.sh ppa:banshee-team/ppa
saucy is supported
Do you wish to add the ppa to your sources list, and install the binaries [y/n] ??

Adding it to your sources list
...
Refreshing your sources list
...
sudo apt-get install
....

कार्रवाई में स्क्रिप्ट देखें:

इसमें सुधार किया। विल्फ द्वारा मूल उत्तर


यह भी अच्छा है, लेकिन मैं हाल ही में (हाहा) सीखता हूं कि if [[ -n something]]"यदि कुछ आउटपुट के रूप में है" के लिए बैश कमांड है, जो अस्थायी रूप से बनाई गई सामग्री को कम करने में मदद करता है।
श्रीवेकादजी

@MrVaykadji जो नहीं टूटा है उसे ठीक न करें! : डी
ब्लेड

सही है हाहा! Nb: मैंने आपके उत्तर को अपने lsb_release -scविचार से अपडेट किया , और यहां तक ​​कि इसे आउटपुट पर भी इस्तेमाल किया;)
MrVaykadji

@MrVaykadji, त्वरित शिक्षार्थी! xD
ब्लेड 19899

मेरे बचाव में, मैं कुछ सी और (सबसे महत्वपूर्ण बात) जानता था कि मैंने "प्रोग्रामिंग सिद्धांतों" की कुछ कक्षाएं लीं, वहां से, मुझे बस "कैसे बी में एक्स करना है" और Voilà करना था।
MrVaykadji

7

आपके वितरण के लिए PPA आज़माने के लिए एक बैश स्क्रिप्ट:

मैंने अभी तुम्हारे लिए कुछ बाश सीखा है। यह बहुत अच्छा काम करता है, मुझे गर्व है (और विल्फ़ को उसके जवाब के लिए धन्यवाद)

#!/bin/bash
# usage : bash myscript ppa:something/something

# get list of ppa's supported distribution
wget http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists -O /tmp/test-ppa.tmp -q

# check if your release is in the downloaded list
RELEASE=`cat /tmp/test-ppa.tmp | grep $(lsb_release -sc)`
if [[ -n "$RELEASE" ]] ; then 
    echo "$1 will work with $(lsb_release -si) $(lsb_release -sr) $(lsb_release -sc)"
else 
    echo "$1 won't work with $(lsb_release -si) $(lsb_release -sr) $(lsb_release -sc)"
fi

# cleaning
rm /tmp/test-ppa.tmp

उपयोग:

1) इसे एक पाठ फ़ाइल में कहीं कॉपी करें (नीचे दिए गए उदाहरण में ~/myscript)

2) कमांड का उपयोग करें:

bash myscript ppa:something/something 

नोट: आप उस स्क्रिप्ट को / usr / bin / फ़ोल्डर में कॉपी कर सकते हैं, जिसका sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test उपयोग कमांड-लाइन में सीधे उपयोग करने के लिए किया जाता है :

ppa-test ppa:something/something


उदाहरण :

(यहाँ मैंने इस्तेमाल किया: ppa: libreoffice / ppa with ~ / myscript )

पीपीए की जांच

संपादित करें: ब्लेड 19899 का उपयोग करने के विचार के साथ अपडेट किया गयाlsb_release


ध्यान दें: फ्रेंच लोगों के लिए, मैंने एक सहायता अनुभाग और एक समर्पित विषय के साथ एक fr-version किया: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji

4

मैंने इसका परीक्षण नहीं किया है, लेकिन इस तरह की स्क्रिप्ट को काम करना चाहिए:

#!/bin/bash
echo "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists"

आपको इसे चलाना होगा ./SCRIPTNAME ppa:WHATEVER/WHATEVER- यह एक लाइनर भी काम करता है, लेकिन आपने PPA नाम (जहाँ ppa:gnome3-team/gnome3है) डाला है:

echo "http://ppa.launchpad.net/$(echo ppa:gnome3-team/gnome3 | sed -e 's/ppa://g')/ubuntu/dists"

आप तब टर्मिनल में लिंक खोल सकते हैं (कुछ टर्मिनल स्वचालित रूप से क्लिक करने योग्य लिंक दिखा सकते हैं), या curlइसे पाठ के रूप में डाउनलोड करने के लिए इसे चला सकते हैं । यह सिर्फ ppa के लिए समर्थित रिलीज के लिए फ़ोल्डर्स की सूची दिखाना चाहिए।

मैंने हाल ही में एक ppa जोड़ा, तो मैंने उस प्लस को देखा सॉफ्टवेयर और अपडेट चीज़ और एक अनुमान लगाया ...


मुझे उल्लेख करना चाहिए, आपको इसे चलाना होगा ./SCRIPTNAME ppa:WHATEVER/WHATEVER- हालांकि यह काम करने लगता है :)
विल्फ

1
Upvoted यह काम करता है!
ब्लेड 19899

3

वैसे मेरे पास आपके लिए GUI समाधान हो सकता है! मेरे लिए सबसे अच्छा तरीका पीपीए प्रबंधक है:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

जब आपने अपने सिस्टम में पहले से जोड़े गए ppa या ppas जोड़े, PPA प्रबंधक खोलें और ppas को प्रबंधित करें पर क्लिक करें यह आपको नई विंडो में ले जाएगा ppas की एक सूची के साथ आपके सिस्टम में किसी भी ppa पर क्लिक करें और list packagesनीचे चुनें , यदि कोई पैकेज है तो यह होगा सूची यदि आप इसे हटा नहीं सकते। मेरे लिए कल भी काम किया था मैंने Saucy और भरोसेमंद के लिए ppa थी इसलिए सूची संकुल ने मुझे "0" दिखाया और मैंने इसे हटा दिया :)


यो डॉग, मैंने सुना है कि आप एक पीपीए की जांच करना चाहते हैं, इसलिए आपके पीपीए की जांच करने के लिए एक पीपीए है: डी
मृवयकाडजी

जो भी सबसे अच्छा :)
JoKeR
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.