Modo de linha de comando para visualizar informações sobre um PPA?

5

Vamos supor que eu tenha adicionado um repositório chamado ppa:something/amazing , mas esqueci o que era o PPA e o nome do PPA é muito vago ou o PPA é muito grande. Eu quero verificar o que é sem usar um navegador de internet e ir ao site do Launchpad. Existe uma maneira de exibir informações sobre o PPA na linha de comando? Estou interessado principalmente em visualizar uma lista dos pacotes contidos no PPA.

    
por pileofrocks 24.02.2013 / 22:14

2 respostas

3

Aqui está um script de shell baseado em esta resposta :

#!/bin/bash

if [ $# -eq 1 ]; then
    CMD=s
    PPA=$1  
else
    CMD=$1
    PPA=$2
fi

case "$CMD" in
"-f" | "f")
    cat $(echo "$PPA"|sed -e 's!/!_!' -e 's!^ppa:!/var/lib/apt/lists/ppa.launchpad.net_!' -e 's!$!_ubuntu_dists_'$(lsb_release -sc)'_main_binary-'$(dpkg --print-architecture)'_Packages!') | less
    ;;
"-s" | "s")
    cat $(echo "$PPA"|sed -e 's!/!_!' -e 's!^ppa:!/var/lib/apt/lists/ppa.launchpad.net_!' -e 's!$!_ubuntu_dists_'$(lsb_release -sc)'_main_binary-'$(dpkg --print-architecture)'_Packages!') | grep 'Package:' | sed 's/Package: //'
    ;;
*)
    echo "Usage: $0 [mode] PPA"
    echo ""
    echo "mode:"
    echo "  -f:  Displays detailed information about each package in the PPA"
    echo "  -s:  Displays only the names of the packages in the PPA"
    ;;
esac

Salve isso em um arquivo, como ppa-info , e verifique se ele está localizado no caminho do sistema e é executável.

Quando você executar isso com apenas o nome de um PPA (ou a opção -s ), ele simplesmente imprimirá uma lista dos nomes de todos os pacotes no PPA. No entanto, se você executá-lo com a opção -f , ele irá imprimir informações detalhadas sobre todos os pacotes no PPA, assim como na resposta original.

    
por iBelieve 25.02.2013 / 02:42
4

Supondo que você tenha baixado a lista de pacotes ( apt-get update fará isso), você poderá ver quais pacotes estão disponíveis para sua distribuição a partir desse PPA.

Se você quiser algum código de shell, isso deve funcionar:

PPA=ppa:something/amazing
less $(echo "$PPA"|sed -e 's!/!_!' -e 's!^ppa:!/var/lib/apt/lists/ppa.launchpad.net_!' -e 's!$!_ubuntu_dists_'$(lsb_release -sc)'_main_binary-'$(dpkg --print-architecture)'_Packages!')
    
por Florian Diesch 24.02.2013 / 22:45