Ubuntu propose ne interface graphique simple qui vous permet de modifier, (dé-) activer et supprimer les PPA.
Mais parcourir toutes les boîtes de dialogue et menus de l'interface graphique peut parfois être fastidieux, surtout si vous avez ajouté de nombreux PPA à votre système.
C'est pourquoi je me demandais s'il y avait un moyen de désactiver (et d'activer) un PPA à partir de la ligne de commande.
Remarque : Je ne parle pas d'ajouter/supprimer le PPA (c'est assez facile à faire: Sudo add-apt-repository ppa
/Sudo add-apt-repository --remove ppa
). Ce que je recherche, c'est un moyen de désactiver temporairement un PPA et de le réactiver à volonté - le tout depuis la CLI.
Modifier:
Les réponses de Sushantp606 et Davidson Chua ont été un bon point de départ et m'ont fait changer la portée de ma question. Il est certainement bon de savoir que les référentiels peuvent être gérés avec le sources.list
fichiers mais cela me semble toujours une tâche très fastidieuse. J'aimerais savoir s'il existe un moyen d'automatiser cela de la même manière que la fenêtre des propriétés du logiciel.
Idéalement, je voudrais trouver une commande qui permettra d'activer et de désactiver rapidement un PPA par son adresse PPA, par exemple:
ppa_activate ppa:synapse-core/ppa
et
ppa_deactivate ppa:synapse-core/ppa
Encore un script plus simple pour basculer entre l'activation ou la désactivation d'un ppa particulier. Enregistrez le code ci-dessous dans un fichier, par exemple toggle_ppa.sh
.
#!/bin/bash
#
# toggle_ppa.sh
#
# created by souravc (https://askubuntu.com/users/127327/)
# modified by Glutanimate (https://askubuntu.com/users/81372/)
#
# originally released at https://askubuntu.com/q/383605/81372
#
# DESCRIPTION: Detects if a PPA is active/inactive and deactivates/activates it
# on user confirmation.
#
# USAGE: toggle_ppa.sh ppa:launchpaduser/ppaname
### VARIABLES
SOURCEDIRECTORY=/etc/apt/sources.list.d
PPA="$1"
### USAGE CHECKS
## Arguments
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
Suivez la procédure donnée à l'autre réponse pour conserver le fichier dans PATH et le rendre exécutable.
Sudo toggle_ppa.sh <full-ppa-name>
Sudo toggle_ppa.sh ppa:webupd8team/Java
Le principe de fonctionnement de ce code est le comme dans mon autre réponse . Le code agit de manière très interactive. Lorsque quelqu'un exécute cela avec le nom ppa comme argument, il affichera l'état actuel du PPA et ce que le code va faire en cas d'exécution réussie. Ensuite, il demandera la permission de l'utilisateur. Uniquement si l'utilisateur saisit 'y'
pour confirmer le code changera le statut du PPA et l'activer/le désactiver. Il sera immédiatement abandonné si l'utilisateur met un 'n'
pour non.
les informations ppa sont enregistrées dans des fichiers séparés dans /etc/apt/sources.list
. Voici le code qui fera l'action souhaitée pour désactiver ou activer le dépôt souhaité. Enregistrez le code donné ci-dessous dans un fichier, dites mod-ppa
#!/bin/bash
mydir=/etc/apt/sources.list.d
function getlist(){
echo -e "\n\tchose one of the following lists"
echo -e "\t================================"
for itm in `seq 1 $1`
do
echo -e "\t`echo $2 | awk -v x=$itm '{print $x}' | awk -F/ '{print $NF}'`"
done
}
if [ $# -lt 1 ]
then
echo "E: mod_ppa: missing operand"
echo "Try 'mod_ppa --help' for more information."
exit 0
Elif [ $# -lt 2 ]
then
echo -e "E: syntax error,\nTry 'mod_ppa --help' for more information."
exit 0
fi
case "$1" in
-d )
ppa=`ls $mydir/$2*.list`
num=`echo $ppa | wc -w`
if [ `echo $num` -gt 1 ]
then
getlist "$num" "$ppa"
else
if [ -e $mydir/$2*.list ]
then
sed -i "s/^deb\-src/\#deb\-src/" $ppa
sed -i "s/^deb\ http/\#deb\ http/" $ppa
else
echo "E: ppa does not exist/check ppa name"
fi
fi
;;
-a )
ppa=`ls $mydir/$2*.list`
num=`echo $ppa | wc -w`
if [ `echo $num` -gt 1 ]
then
getlist "$num" "$ppa"
else
if [ -e $mydir/$2*.list ]
then
sed -i "s/^\#deb\-src/deb\-src/" $ppa
sed -i "s/^\#deb\ http/deb\ http/" $ppa
else
echo "E: ppa does not exist/check ppa name"
fi
fi
;;
--help)
echo "Usage: mod_ppa [OPTION] [PPA NAME'S INITIAL PART]"
echo "Mandatory argument options."
echo "-a Activate certain ppa"
echo "-d Deactivate certain ppa"
;;
* )
echo "mod_ppa: invalid option '$1'"
echo "Try 'mod_ppa --help' for more information."
;;
esac
enregistrez le script dans /home/<username>/bin/
, qui se trouve généralement dans PATH. Pour vérifier l'écriture dans le terminal
echo $PATH
Sinon, ajoutez /home/<username>/bin/
à PATH en ajoutant la ligne suivante à .bash_profile
ou .bashrc
selon ce qui vous convient,
export PATH=$PATH:$HOME/bin
Puis sourcez le fichier, écrivez dans le terminal
source .bash_profile [or source .bashrc]
Donner mod_ppa
autorisation d'exécution, écrire dans le terminal
chmod +x mod_ppa
Pour désactiver une utilisation ppa
Sudo mod_ppa -d <ppa_name's_initial_part>
Par exemple, pour désactiver ppa:webupd8team/Java
utilisation
Sudo mod_ppa -d webupd8team
Pour activer une utilisation ppa
Sudo mod_ppa -a <ppa_name's_initial_part>
Par exemple, pour activer ppa:synapse-core
utilisation
Sudo mod_ppa -a synapse-core
aide
mod_ppa --help
J'ai supposé que vous ne seriez pas intéressé à désactiver les services de base et par défaut répertoriés dans /etc/apt/sources.list
. De toute façon il n'y en a que peu, vous pouvez les désactiver à la main si vous le souhaitez. La réponse de Sushantp606 a été très utile.
Comment ça marche
Lorsqu'un repo ppa est désactivé à l'aide du centre logiciel (GUI), il met en fait un #
devant toutes les lignes à l'intérieur du ppa correspondant .list
fichier sur /etc/apt/sources.list.d/
. Habituellement, la plupart des .list
les fichiers contiennent deux lignes commençant par deb http
et deb-src
, quelques-uns n'en ont qu'un. Le script ci-dessus fait la même chose en utilisant sed
. Tout d'abord, il vérifie que la liste ppa (saisie par l'utilisateur) est présente ou non. Mettez ensuite ou supprimez un #
devant les lignes en conséquence.
Comme le script est censé traiter une partie sensible du système d'exploitation, j'ai essayé de le coder de manière défensive. Vérifie les arguments transmis au script et définit certains messages d'erreur en conséquence. Un petit help
est également ajouté. Cette partie augmente la longueur du code.
En éditant
/etc/apt/sources.list
fichier à partir de la ligne de commande, nous pouvons ajouter, supprimer ou désactiver temporairement les référentiels logiciels.
Je ne peux pas faire la commande, c'est juste une idée. faites-moi savoir si vous pouvez le connecter via une commande de terminal comme-
La commande pour commenter les référentiels sources dans /etc/apt/sources.list est:
Sudo sed -i 's/^deb\-src/\#deb\-src/' /etc/apt/sources.list
et pour le commenter, utilisez
Sudo sed -i 's/^\#deb\-src/deb\-src/' /etc/apt/sources.list
utilisez le référentiel que vous souhaitez désactiver/commenter au lieu de s/^\#deb\-src/deb\-src/
et avant toute modification, créez un fichier de liste de sources de sauvegarde comme ci-dessous-
Sudo cp -v /etc/apt/sources.list /etc/apt/sources.list.backup
Jetez un oeil à Comment désactiver un PPA particulier? . Bien que la première réponse de qeoh utilise le frontend GTK, la deuxième réponse de minimec suggère de commenter le ppa dans /etc/apt/sources.list
. Je ne sais pas si c'est ce que vous cherchez, mais c'est une méthode possible.