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.