Desativa automaticamente um ppa

5

Existe uma maneira de deletar ou desabilitar automaticamente um ppa que não funciona mais?

Quando eu faço apt-get update recebo muita mensagem de erro referente a alguns ppas que não podem ser encontrados.

Desativei-os manualmente por enquanto, mas há uma maneira de desativá-los automaticamente? Como tenho muitos ppas, é muito trabalhoso procurar e desativá-los manualmente.

    
por NobbZ 09.10.2012 / 06:43

3 respostas

4

Você pode usar um script para desabilitar / habilitar um ppa com muita facilidade. Salve o script como toggle_ppa.sh e coloque-o em /usr/local/bin

#!/bin/bash
#
# toggle_ppa.sh
#
# DESCRIPTION:  Detects if a PPA is active/inactive and deactivates/activates it
#               on user confirmation.

SOURCEDIRECTORY=/etc/apt/sources.list.d
PPA="$1"     
if [ -z "$PPA" ]
then
    echo "Error: Please provide a PPA name to toggle between activation/deactivation"
    echo "The PPA name should be formatted as it appears on launchpad, e.g.:
"$0" ppa:webupd8team/y-ppa-manager"
    exit 1
fi

## Root privileges

if [ "$(whoami)" != "root" ]; then
  echo "Error: This script needs root privileges. Restarting..."
  sudo "$0" "$1"
  exit
fi

### MAIN

SOURCELIST_NOPFX="${PPA#*:}" #remove 'ppa:' prefix
SOURCELIST="${SOURCELIST_NOPFX////-}"-$(lsb_release -cs) #replace all slashes with dashes, include release
SOURCEFILE="$SOURCEDIRECTORY"/"$SOURCELIST".list #compose sources list path

if [ -e "$SOURCEFILE" ]
then
    echo "Processing $SOURCEFILE..."
    SOURCE_COMMENTED=$(grep "^\#deb\ " "$SOURCEFILE") #check if sources line is commented
    if [ -z "$SOURCE_COMMENTED" ]
    then
        echo "$PPA is active. Going to deactivate. Proceed? [ y/n ]"
        read ANSWER
        if [ $ANSWER == "y" ]
        then
            sed -i "s/^deb\-src/\#deb\-src/" $SOURCEFILE
            sed -i "s/^deb\ http/\#deb\ http/" $SOURCEFILE
            echo "Updating package index files..."
            sudo apt-get update
            echo "Done."
        else
            echo "Aborted."
            exit 0
        fi
    else
        echo "$PPA is inactive. Going to activate. Proceed? [ y/n ]"
        read ANSWER
        if [ $ANSWER == "y" ]
        then
            sed -i "s/^\#deb\-src/deb\-src/" $SOURCEFILE
            sed -i "s/^\#deb\ http/deb\ http/" $SOURCEFILE
            echo "Updating package index files..."
            sudo apt-get update
            echo "Done."
        else
            echo "Aborted."
            exit 0
        fi
    fi
else
    echo "Error: Source file at $SOURCEFILE for $PPA does not exist. Please check PPA name."
    exit 0
fi

Uso

sudo toggle_ppa.sh <full-ppa-name>

Exemplo

sudo toggle_ppa.sh ppa:webupd8team/java

Como funciona

Quando qualquer repositório ppa é desativado usando o Centro de software (GUI), ele coloca um # na frente de todas as linhas dentro do arquivo ppa .list correspondente em /etc/apt/sources.list.d/ . Geralmente, a maioria dos arquivos .list contém duas linhas que começam com deb http e deb-src , e algumas têm apenas uma. O script acima está fazendo a mesma coisa usando sed . Primeiro verifica se o ppa .list (entrada pelo usuário) está presente ou não. Em seguida, coloque ou remova um # na frente das linhas de acordo.

O código age de uma maneira muito interativa. Quando alguém executa isso junto com o nome do ppa como seu argumento, ele exibirá o status atual do PPA e o que o código fará na execução bem-sucedida. Então pedirá permissão do usuário. Somente se o usuário inserir 'y' para confirmar que o código alterará o status do PPA e o ativará / desativará. Ele será imediatamente cancelado se o usuário colocar um 'n' para não.

Observação Eu propus esse código em isso foi respondido . O glutanimato ajudou muito a melhorar o código.

    
por souravc 24.02.2014 / 04:36
1

Desativar um PPA usando o Ubuntu Software Sources é um grande incômodo, pois não há como filtrar ou ordenar (de maneira humanamente útil) os PPAs. Em vez disso, você pode usar y-ppa-manager através de sua janela Manage PPAs , que exibe os PPAs em ordem alfabética e, assim, permite uma localização mais fácil / rápida de uma determinada fonte de PPA.

Você pode instalar o Y PPA Manager o PPA: webupd8team / y-ppa-manager PPA.

Veja também:

por landroni 24.02.2014 / 07:44
0

Você pode comentar os PPAs dessa maneira:

# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner

Ou, você pode fazer usando Fontes de Software do Ubuntu selecionando todas:

    
por Praveen Kumar 09.10.2012 / 06:50

Tags