Question Comment puis-je obtenir une liste de tous les référentiels et PPA de la ligne de commande dans un script d'installation?


je sais comment lister tous les paquets installé sur mon système.

Mais comment puis-je obtenir une liste de tous les référentiels et PPA dans un script que je peux exécuter sur une nouvelle machine pour répliquer la configuration du référentiel, 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 produire un script qui exécute tout apt-add-repository commandes sur un nouveau système (qui trie toutes les clés).

Des idées?


184
2018-06-10 11:30


origine


Duplicata possible: askubuntu.com/questions/28644/how-can-i-backup-my-ppas - Glutanimate
En fait, un surensemble. Ma question concernait un script qui génère le script de restauration, pas seulement la sauvegarde. - stwissel


Réponses:


Merci pour les conseils. Avec un petit nettoyage, j'ai reçu un script qui répertorie les PPA, mais pas d'autres répertoires:

#! /bin/sh 
# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in `find /etc/apt/ -name \*.list`; do
    grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        echo sudo apt-add-repository ppa:$USER/$PPA
    done
done

Quand vous l'appelez avec listppa > installppa.sh vous obtenez un script que vous pouvez copier sur une nouvelle machine pour réinstaller tous les PPA.

Prochain arrêt: faites cela pour les autres référentiels:

#! /bin/sh
# Script to get all the PPA installed on a system
for APT in `find /etc/apt/ -name \*.list`; do
    grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
        HOST=`echo $ENTRY | cut -d/ -f3`
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        #echo sudo apt-add-repository ppa:$USER/$PPA
        if [ "ppa.launchpad.net" = "$HOST" ]; then
            echo sudo apt-add-repository ppa:$USER/$PPA
        else
            echo sudo apt-add-repository \'${ENTRY}\'
        fi
    done
done

Cela devrait faire l'affaire. J'avais besoin d'un question sur le superutilisateur pour trouver la bonne expression.


89
2018-06-10 13:49



Dans ton grep -o par exemple, le \`  dans [a-z0-9\-] ne fait pas ce que vous attendez. Il correspond en fait à un littéral barre oblique inverse. Vous n'avez pas besoin de échapper la - quand il est au début ou à la fin de la [] liste; en fait, vous ne pouvez pas échapper ça! .. Dans ce cas la \` (probablement) ne causera pas de problème, car vous (espérons-le) ne rencontrerez pas barre oblique inverse dans le deb entrée. - Peter.O
Notez que les noms PPA peuvent contenir des points, donc je pense que vous voulez changer votre expression rationnelle en http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+ - kynan
Non, vous voulez changer la regex en [[:graph:]]  au lieu de [a-z...blah.anything] car cela correspondra à tous les caractères alphanumériques + ponctuation - c'est ce que constituent les noms de PPA. - MichalH
Je suppose que vous devriez inclure deb mot au début de chaque ligne de référentiel, s'il n'est pas indiqué dans ppa:$USER/$PPA forme. - jarno
@stwissel une raison particulière que vous avez utilisée pour trouver et grep? Vous pouvez facilement faire un glob que le shell analyse et le passer à grep. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done Notez que, comme cela est écrit, ceci vous indique le nom du fichier dont chaque entrée provient, vous devrez donc effectuer un ajustement du début du résultat au premier deux-points, mais ce n’est pas trop difficile avec la coupe. Vous pouvez également vouloir passer à travers uniq si vous ne souhaitez pas avoir plusieurs entrées pour la même source (par exemple, si Google Chrome Stable / Beta / Dev est installé). - dragon788


Vous pouvez tout montrer avec:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*

80
2018-06-10 12:52



Qu'en est-il de egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* supprimer des lignes commentées et des lignes vierges?
pourriez-vous s'il vous plaît expliquer l'utilisation de ^ après grep dans grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
@ vasa1 Le signe ^ et le signe dollar $ sont des métacaractères qui correspondent respectivement à la chaîne vide au début et à la fin d'une ligne. - wojox
J'utilise grep ^ [^ #] ... - Il masque automatiquement toutes les sources commentées - Ross Aiken
Si vous ne voulez rien filtrer, ne serait-il pas plus simple de courir? cat /etc/apt/sources.list /etc/apt/sources.list.d/* - jbo5112


Je suis surpris que le moyen le plus simple mais le plus efficace d’obtenir toutes les sources de logiciels binaires activées avec le fichier dans lequel elles sont spécifiées n’a pas encore été publié:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

De tous les fichiers traités, cela imprimera chaque ligne commençant par deb. Cela exclut les lignes commentées ainsi que deb-src lignes pour activer les référentiels de code source.

Il ne cherche vraiment que tous *.list les fichiers qui seront analysés par apt, mais par ex. non *.list.save fichiers utilisés pour la sauvegarde ou autres avec des noms illégaux.


Si vous voulez un résultat plus court mais peut-être seulement dans 99,9% des cas, vous pouvez obtenir des résultats corrects qui peuvent rechercher trop de fichiers (y compris tous les fichiers). /etc/apt/sources.list* fichiers et répertoires, non seulement /etc/apt/sources.list et `/etc/apt/sources.list.d/*), vous pouvez également utiliser ceci:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list*

À moins qu'il n'y ait des fichiers qui ne devraient pas être là, le résultat sera le même.


Voici un exemple de sortie sur ma machine:

/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps

Si vous voulez une sortie plus jolie, laissez-la passer sed:

grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'

Et nous verrons ceci:

deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps

14
2018-03-04 08:57



Compte tenu de la réponse acceptée, il semble que l’OP ait voulu montrer les ppa:<user>/<project> forme. - muru
La question demande en fait de générer un script qui installe / active tous les référentiels. Mais le titre de la question concerne uniquement leur liste. De plus, la deuxième réponse la mieux notée ne fait que les énumérer, mais la liste est beaucoup trop longue. - Byte Commander
Bien, mais j'avais déjà voté. :RÉ - muru


J'utilise cette commande pour répertorier toutes les sources logicielles configurées (référentiels), y compris ceux actuellement handicapés:

cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done

Je l'utilise principalement pour le dépannage; cela peut certainement être incorporé dans les scripts, mais vous voudrez peut-être réduire /etc/apt/sources.list.d/* à /etc/apt/sources.list.d/*.list vous n'obtenez donc que les sources de logiciels actuellement activées.


4
2018-06-12 08:57



Merci pour les commentaires. cat répertorie les fichiers tels quels, il me faudrait donc les modifier manuellement pour produire un script (comme indiqué dans la question). Le défi avec les référentiels: si vous copiez simplement les fichiers de / etc / apt, vous n'obtenez pas les clés du référentiel. C'est pourquoi je veux un script qui les récupère pour nous - stwissel


Exécutez la commande suivante:

apt-cache policy | grep http | awk '{print $2 $3}' | sort -u

La source


4
2018-06-12 11:43





Donc, en creusant, nous avons AptPkg::Class.

Donc en utilisant perl nous pouvons faire quelque chose de simple comme ça ..

perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less

Cela nous donne une liste de tous les AptPkg::Class::PkgFile paquets. Vous pourriez probablement générer le apt-add-repository commandes avec ça.


2
2017-11-14 19:48





https://repogen.simplylinux.ch/ vous donnera une liste de tous les PPAs pour votre version d'Ubuntu. Voici une liste générée sans fichiers source et sans imprimante Samsung:

#------------------------------------------------------------------------------#
#                            OFFICIAL UBUNTU REPOS                             #
#------------------------------------------------------------------------------#


###### Ubuntu Main Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse 

###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu yakkety partner

#------------------------------------------------------------------------------#
#                           UNOFFICIAL UBUNTU REPOS                            #
#------------------------------------------------------------------------------#


###### 3rd Party Binary Repos

#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main

#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Run this command: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main

#### Google Chrome Browser - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

#### Google Earth - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/earth/deb/ stable main

#### Highly Explosive PPA - https://launchpad.net/~dhor/+archive/myway
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main

#### JDownloader PPA - https://launchpad.net/~jd-team
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main

#### Lazarus - http://www.lazarus.freepascal.org/
## Run this command:  gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F  && gpg --export --armor 0F7992B0  | sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe

#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main

#### MEGA Sync Client - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./

#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Run this command: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./

#### Mozilla Daily Build Team PPA - http://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main

#### muCommander - http://www.mucommander.com/
## Run this command: sudo wget -O - http://apt.mucommander.com/apt.key | sudo apt-key add - 
deb http://apt.mucommander.com stable main non-free contrib  

#### Opera - http://www.opera.com/
## Run this command: sudo wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free

#### Oracle Java (JDK) Installer PPA - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/java/ubuntu yakkety main

#### PlayDeb - http://www.playdeb.net/
## Run this command: wget -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games

#### SABnzbd PPA - http://sabnzbd.org/
## Run this command:  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main

#### SimpleScreenRecorder PPA - http://www.maartenbaert.be/simplescreenrecorder/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main

#### Steam for Linux - http://store.steampowered.com/about/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [arch=i386] http://repo.steampowered.com/steam/ precise steam

#### Syncthing - https://syncthing.net/
## Run this command: curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release

#### Tor: anonymity online - https://www.torproject.org
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main

#### Unsettings PPA - http://www.florian-diesch.de/software/unsettings/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main

#### VirtualBox - http://www.virtualbox.org
## Run this command: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc -O- | sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib

#### Webmin - http://www.webmin.com
## Run this command: wget http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib

#### WebUpd8 PPA - http://www.webupd8.org/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main

#### Xorg Edgers PPA - https://launchpad.net/~xorg-edgers
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542  
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
here is a generated list without source files and no samsung printer ppa
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse

2
2017-11-16 06:28