Je sais comment lister tous les paquets installés sur mon système.
Mais comment puis-je obtenir une liste de tous les référentiels et des 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 examiner /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 apt-add-repository
commandes sur un nouveau système (permettant d’obtenir toutes les clés).
Des idées?
egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*
de supprimer les lignes commentées et les lignes vides?^
aftergrep
ingrep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
?cat /etc/apt/sources.list /etc/apt/sources.list.d/*
Merci pour les pointeurs. Avec un petit nettoyage, j'ai obtenu un script qui liste les PPA, mais pas tout autre référentiel:
Lorsque vous appelez avec
listppa > installppa.sh
vous obtenez un script que vous pouvez copier sur un nouvel ordinateur pour réinstaller tous les PPA.Prochain arrêt: faites cela pour les autres dépôts:
Cela devrait faire l'affaire. J'avais besoin d'une question sur le super-utilisateur pour déterminer la regex correcte.
la source
grep -o
exemple, l'\`
in[a-z0-9\-]
ne fait pas ce que vous attendez. Il correspond en fait à une barre oblique inverse littérale . Vous n'avez pas besoin d' échapper à la-
quand il est au début ou à la fin de la[]
liste; en fait, vous ne pouvez pas y échapper ! .. Dans ce cas, le\`
problème (probablement) ne posera pas de problème, car vous ne rencontrerez (espérons-le) pas de barre oblique inverse dans l'deb
entrée.http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
[[:graph:]]
lieu de,[a-z...blah.anything]
car cela correspond à tous les caractères alphanumériques + de ponctuation - c'est ce en quoi consistent les noms PPA.deb
mot au début de chaque ligne de dépôt, si ce n’est pas indiqué dans leppa:$USER/$PPA
formulaire.grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done
Notez que, tel qu'écrit, ceci vous indique le nom du fichier d'où provient chaque entrée, vous devez donc effectuer un découpage du début au résultat du premier point, mais ce n'est pas trop difficile avec couper. Vous pouvez également souhaiter le transmettreuniq
si vous ne voulez pas plusieurs entrées pour la même source (par exemple, si Google Chrome Stable / Beta / Dev est installé).Je suis surpris que le moyen le plus simple mais le plus efficace de rassembler toutes les sources de logiciels binaires activées avec le fichier dans lequel elles ont été spécifiées n'ait pas encore été publié:
De tous les fichiers traités, cela imprimera chaque ligne en commençant par
deb
. Cela exclut les lignes commentées ainsi que lesdeb-src
lignes permettant d'activer les référentiels de code source.Il ne recherche en réalité que tous les
*.list
fichiers qui seront analysésapt
, mais par exemple, aucun*.list.save
fichier utilisé pour la sauvegarde ou autres noms illégaux.Si vous voulez une sortie plus courte mais peut-être seulement dans 99,9% des cas, avec une recherche excessive de fichiers (inclut tous les
/etc/apt/sources.list*
fichiers et répertoires, et pas seulement/etc/apt/sources.list
/ `/etc/apt/sources.list.d/*), vous pouvez également: utilisez ceci:À moins qu'il 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:
Si vous voulez une sortie plus jolie, passons au travers
sed
:Et nous verrons ceci:
la source
ppa:<user>/<project>
formulaire.Exécutez la commande suivante:
La source
la source
apt-cache policy
ne montrera que le repos après que vous avez exécutéapt-get update
. Si vous venez d'ajouter un repo avecadd-apt-repository
, il ne s'affichera pas jusqu'àapt-cache policy
ce que vousapt-get update
sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -u
fonctionne bien. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1J'utilise cette commande pour répertorier toutes les sources logicielles configurées (référentiels), y compris celles actuellement désactivées :
Je l'utilise principalement pour le dépannage; Cela peut certainement être incorporé dans des scripts, mais vous voudrez peut-être vous limiter
/etc/apt/sources.list.d/*
aux/etc/apt/sources.list.d/*.list
sources de logiciels actuellement activées.la source
Donc, en creusant, nous avons
AptPkg::Class
.Donc, en utilisant
perl
nous pouvons faire quelque chose de simple comme ça ..Cela nous donne une liste de tous les
AptPkg::Class::PkgFile
paquets. Vous pourriez probablement générer lesapt-add-repository
commandes avec ça.la source
https://repogen.simplylinux.ch/ vous donnera une liste de tous les PPA de votre version d'Ubuntu. Voici une liste générée sans fichiers source et sans imprimante samsung ppa:
la source
Voici mon script "
list-apt-repositories
", qui répertorie tous les référentiels dans "/etc/sources.list"
et"/etc/sources.list.d/*.list
". Vous pouvez ajouter--ppa-only
pour afficher uniquement les PPA. Les PPA sont automatiquement transformés enppa:USER/REPO
format.Les parties pertinentes sont les 5 lignes
list_sources
etlist_ppa
fonctions, le reste n’est qu’un passe-partout pour l’envelopper dans un script shell très pratique.list-apt-repositories
:Et pour créer un script d'installation, insérez un autre script "
make-apt-repository-install-script
". Le script généré prend en charge l' argument-y
/--yes
pour une utilisation non interactive (voiradd-apt-repository(1)
).make-apt-repository-install-script
:Encore une fois, la partie importante est la
xargs
commande sur la dernière ligne, le reste est passe-partout.la source
Pour l'ajouter, ajoutez les lignes ppa.launchpad.net en tant que ppa: $ USER / $ PPA. Ajoutez d'autres référentiels avec leur ligne complète à partir de fichiers * .list. Pas de lignes de dupe.
la source
Merci BobDodds!
Si quelqu'un est intéressé, j'ai un peu mis à jour votre code (j'espère que cela ne vous dérange pas).
Ce script ne tapera que les PPA ajoutés par l'utilisateur (/etc/apt/sources.list.d).
la source
Cela ne génère cependant pas de commandes pour activer les référentiels sources possibles (deb-src).
la source
Installer
ppa-purge
Ensuite, obtenez la liste ppa en complétant l'onglet
ppa-purge -o
( Tabappuyez deux fois sur la touche)la source
ppa-purge
n'a pas d'-o
indicateur selon sa page de manuel . -1