Je veux lister tous les fichiers d'une source, disons extras.ubuntu.com à partir de la ligne de commande. Quelle est la commande pour cela ?
dpkg --list
répertorie tous les fichiers ou seulement le nom du fichier.
Je veux lister tous les fichiers d'une source, disons extras.ubuntu.com à partir de la ligne de commande. Quelle est la commande pour cela ?
dpkg --list
répertorie tous les fichiers ou seulement le nom du fichier.
Trouvez le fichier correspondant dans /var/lib/apt/lists/
se terminant par Packages
et exécutez cette commande :
# example for deb http://security.ubuntu.com/ubuntu natty-security multiverse
awk '$1 == "Package:" { print $2 }' /var/lib/apt/lists/security*multiverse*Packages
Par ailleurs, mon extras.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
est vide.
エディトリアル
Vous pouvez également analyser apt-cache
de la production. Ce script liste tous les paquets avec les informations sur le serveur et le repo :
#!/bin/bash
apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
awk '/^[^ ]/ { split($1, a, ":"); pkg = a[1] }
nextline == 1 { nextline = 0; printf("%-40s %-50s %s\n", pkg, $2, $3) }
/\*\*\*/ { nextline = 1 }'
En triant commodément les résultats, vous pouvez obtenir les informations que vous recherchez.
J'ai créé un terrible script pour cela :
#!/bin/bash
clear
##array aufbauen
declare -a repoList=()
for i in $(ls /var/lib/apt/lists/ | grep _Packages)
do
#echo $i
repoList=("${repoList[@]}" "$i")
done
repoAnzahl=${#repoList[@]}
echo "Anzahl der Repos: " $repoAnzahl
for ((i=0;$i<$repoAnzahl;i++))
do
if [[ "${repoList[$i]}" =~ "archive.ubuntu" ]]
then
rname=${repoList[$i]##*archive.ubuntu}
echo "$i RepoName: " "${rname%%_binary*}"
elif [[ "${repoList[$i]}" =~ "ubuntu" ]]
then
echo "$i RepoName: " "${repoList[$i]%%_ubuntu*}"
else
echo "$i RepoName: " "${repoList[$i]%%_dist*}"
fi
done
read -p "Gib die RepoNummer ein: " repoNummer
packages=()
for i in $(cat /var/lib/apt/lists/${repoList[$repoNummer]} | grep Package)
do
if ! [[ "$i" =~ "Package" ]]
then
packages=("${packages[@]}" "$i")
fi
done
paketAnzahl=${#packages[@]}
echo "Anzahl der pakete: " $paketAnzahl
function listPackages () {
for ((i=0;$i<$paketAnzahl;i++))
do
echo ${packages[$i]}
done
}
if test $paketAnzahl -gt 20
then
listPackages | less
else
listPackages
fi
echo "Anzahl der Pakete: " $paketAnzahl
Quelque chose comme Python script devrait trouver tous les paquets installés sur votre machine à partir de ce site (voir cette réponse pour le script qui affiche tous les paquets non-Ubuntu) :
#!/usr/bin/env python3
#
# This lists all packages from extras.ubuntu.com
#
# If you receive an import error, you may need to install python-apt first with e.g.
# sudo apt install python-apt
# but this is often not necessary
import apt
cache = apt.Cache()
package_count = 0
for package in cache:
if (
cache[package.name].is_installed
and package.candidate.origins[0].site == "extras.ubuntu.com"
):
package_origin = package.candidate.origins[0]
print(
package.name,
# See https://apt-team.pages.debian.net/python-apt/library/apt.package.html#apt.package.Origin
# for further details on the meanings of the below
package_origin.origin, # The Origin, as set in the Release file
package_origin.archive, # The archive (eg. Ubuntu release name)
package_origin.component, # The component (eg. main/universe)
package_origin.site, # The hostname of the site.
# package_origin.label, # The Label, as set in the Release file
# package_origin.trusted, # Origin trusted (Release file signed by key in apt keyring)
)
package_count += 1
print(package_count, "packages total")
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.