Вопрос Как проверить информацию PPA, не добавляя ее


Есть ли способ без запуска:

sudo apt-add-repository [PPA]

Что вы можете получить описание (и, возможно, другую дополнительную информацию) PPA через терминал?


2
2017-10-01 16:42


происхождения


Я так не думаю. Попробуйте googling PPA. - Daniel
@ Daniel: Я мог бы это сделать, но в этом случае я хочу проверить PPA, который, по-видимому, больше не существует, «официально», но я думаю, что может существовать, но я не хочу случайно добавлять его.
Если бы он существовал в любое время в истории, вы могли бы где-нибудь найти его. - Daniel
Какой PPA, между прочим? - Daniel
@ParanoidPanda связывает PPA. Если это, вероятно, не существует, вы не можете получить данные на нем. - Thomas Ward♦


ответы:


Быстрый взлом (пакет потребностей python3-launchpadlib):

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys,re

from launchpadlib.launchpad import Launchpad
import httplib2
import  lazr.restfulclient.errors

if len(sys.argv) < 2:
    print('Syntax: {cmd} ppa'.format(cmd=sys.argv[0]))
    print()
    print('For example: {cmd}  ppa://diesch/testing'.format(cmd=sys.argv[0]))
    sys.exit(2)


try:
    lp = Launchpad.login_anonymously('foo', 'production', None)
except  httplib2.HttpLib2Error as e:
    print('Error connection to launchpad.net:', e)
    sys.exit(1)


ppa_name = sys.argv[1].strip()

m = re.search(r'^(ppa:)?(?P<user>[^/]+)/(?P<name>.+)', ppa_name)
if m:
    user, name = m.group('user', 'name')
else:
    print('Unvalid PPA name:', ppa)
    sys.exit(1)

try:    
    owner =  lp.people[user]
    ppa = owner.getPPAByName(name=name)

    print('PPA {name} at {url}'.format(name=ppa_name, url=ppa.web_link))
    print()
    print('Owner: {owner} ({url})'.format(owner=owner.display_name,
                                            url=owner.web_link))
    print()
    print(ppa.description) 
except lazr.restfulclient.errors.RestfulError as e:
    print('Error getting PPA info:', e)
    exit(1)

Сохраните это, например. ppa-info, сделать его исполняемым и запустить его, как

ppa-info ppa:diesch/testing

Если PPA существует, вы получите некоторую информацию, такую ​​как владелец и описание, иначе вы получите сообщение об ошибке.


2
2017-10-01 17:15





add-apt-repository подтверждает добавление PPA:

$ sudo add-apt-repository ppa:gnome3-team/gnome3
 Before upgrading your system to a new Ubuntu release (i.e. from Ubuntu 14.04 to 14.10), you should probably run 'ppa-purge ppa:gnome3-team/gnome3' first.

*** You need to run 'sudo apt-get dist-upgrade' to avoid problems. ***
Please read the output before entering 'Y' to make sure important packages won't be removed.

=== Ubuntu 14.10 (Utopic) ===
GNOME 3.12 that didn't make it into the normal Ubuntu 14.10 repositories.

=== Ubuntu 14.04 (Trusty) ===
GNOME 3.10 that didn't make it into the normal Ubuntu 14.04 repositories.

=== Ubuntu 12.04 (Precise) ===
Parts of GNOME 3.4 that didn't make it into the normal Ubuntu 12.04 repositories.

=== Bugs ===
On Trusty (14.04) and newer please use 'ubuntu-bug' to report bugs against packages in this PPA
 More info: https://launchpad.net/~gnome3-team/+archive/ubuntu/gnome3
Press [ENTER] to continue or ctrl-c to cancel adding it
^CTraceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 139, in <module>
    sys.stdin.readline()
KeyboardInterrupt

$ sudo add-apt-repository ppa:ondrej/common 
 Lowest common denominator needed to build other packages, a.k.a. build essentials.
 More info: https://launchpad.net/~ondrej/+archive/ubuntu/common
Press [ENTER] to continue or ctrl-c to cancel adding it
^CTraceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 139, in <module>
    sys.stdin.readline()
KeyboardInterrupt

Поэтому самый простой способ получить информацию для PPA, не добавляя ее, - это запустить add-apt-repository, и нажмите CtrlС,


1
2017-10-01 17:24



Как сделать add-apt-repository получить эту информацию? Не может ли он получить то же самое или это то, что описывает принятый ответ?
@ParanoidPanda - это то, что показывает принятый ответ, да. Add-apt-repository - это скрипт python с использованием библиотеки запуска. - muru
@ParanoidPanda, если вы хотите, посмотрите в коде, - muru