326 votes

Comment puis-je obtenir une liste de tous les dépôts et PPA à partir de la ligne de commande dans un script d'installation?

Je sais comment listez tous les packages installés sur mon système.

Mais comment pourrais-je obtenir une liste de tous les dépôts et PPA dans un script que je pourrais exécuter sur une nouvelle machine pour reproduire la configuration du dépôt, y compris les clés?

Je sais que je peux regarder dans /etc/apt/sources.list et /etc/apt/sources.list.d, mais je cherche un moyen de générer un script qui exécute toutes les commandes apt-add-repository sur un nouveau système (qui trie l'obtention de toutes les clés).

Des idées?

1voto

BobDodds Points 19

Pour l'ajouter, ajoutez les lignes ppa.launchpad.net en tant que ppa:$USER/$PPA. Ajoutez d'autres dépôts avec leur ligne complète des fichiers *.list. Aucune ligne en double.

#!/bin/bash
# Mon ~/bin/mk\_repositories\_restore\_script
mkdir -p ~/bin 
x=~/bin/restore\_repositories
echo \\#\\!/bin/bash > $x
chmod u+x $x
(
 for APT in $( find /etc/apt/ -name \\\*.list )
    do sed -n -e '/^deb /{
     /ppa\\.launchpad/s/\\(.\*\\/\\/\[^\\/\]\*.\\)\\(\[^ \\t\]\*\\)\\(.\*$\\)/sudo apt-add-repository ppa:\\2/p;
     /ppa\\.launchpad/!s/\\(deb\[ \\t\]\*\\)\\(.\*$\\)/sudo apt-add-repository \\2/p;
    }' $APT
 done
) | sort | uniq | tee -a ~/bin/restore\_repositories

0voto

lanthean Points 9

Merci BobDodds!
Si quelqu'un serait intéressé, j'ai mis à jour votre code un peu (j'espère que ça ne vous dérange pas)..
Ce script va taper seulement les PPAs ajoutés par l'utilisateur (/etc/apt/sources.list.d).

    #!/bin/bash
    # Mon ~/bin/mk_repositories_restore_script
    mkdir -p ~/bin
    x=~/bin/restore_repositories
    echo \#\!/bin/bash > $x
    chmod u+x $x
    (
    for APT in $( find /etc/apt/ -name \*.list )
    do sed -n -e '/^deb /{
          /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;                                                                                                                                                                                       
        }' $APT
    done
    ) | sort | uniq | tee -a ~/bin/restore_repositories

0voto

Mnementh Points 19831
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*

Cela ne génère cependant pas de commandes pour activer d'éventuels dépôts de sources (deb-src).

0voto

xCovelus Points 271

Pour répertorier les dépôts, je vais fournir une méthode courte similaire à celle déjà publiée, en filtrant également les commentaires à l'aide d'une regex: ^[^#] ("au début de la ligne, pas de lignes commentées"):

grep "^[^#]" /etc/apt/sources.list /etc/apt/sources.list.d/*

-3voto

user850010 Points 3248

Installez ppa-purge

apt install ppa-purge

Ensuite, obtenez la liste des ppas par complétion automatique...

ppa-purge -o (appuyez deux fois sur la touche Tab)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X