Tous les environnements OpenWrt ne sont pas configurés de la même manière, donc ma réponse est un coup dans le noir ...
L'exemple de sortie provient d'OpenWrt-12.09 sur un "TP-Link TL-WDR4300".
ssh
dans votre routeur.
Vérifiez vos fichiers.
root@AP9:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 5184 2124 3060 41% /
/dev/root 2048 2048 0 100% /rom
tmpfs 63340 948 62392 1% /tmp
tmpfs 512 0 512 0% /dev
/dev/mtdblock3 5184 2124 3060 41% /overlay
overlayfs:/overlay 5184 2124 3060 41% /
/dev/sda1 31234700 593536 29075728 2% /mnt/sda1
/dev/sda1
est la carte micro SD de ma clé UMTS ... ignorez-la.
De nombreux routeurs sont flashés de la même manière comme on le voit ici: Un système de fichiers racine en lecture seule est rendu pseudo accessible en écriture par un système de fichiers en superposition.
Regardez à l'intérieur /overlay
...
root@AP9:~# cd /overlay/usr/lib/opkg/info/
root@AP9:/overlay/usr/lib/opkg/info# ls *.list | tail -3
usb-modeswitch-data.list
usb-modeswitch.list
zlib.list
Ce répertoire contient les informations sur les packages supplémentaires installés. Les fichiers se terminant par .list
sont des listes de fichiers installés par le package avec le même nom (sans .list
):
root@AP9:/overlay/usr/lib/opkg/info# cat zlib.list
/usr/lib/libz.so.1.2.7
/usr/lib/libz.so.1
/usr/lib/libz.so
Le package zlib
contient 3 fichiers installés.
root@AP9:/overlay/usr/lib/opkg/info# du $(cat zlib.list)
71 /usr/lib/libz.so.1.2.7
1 /usr/lib/libz.so.1
1 /usr/lib/libz.so
Le package zlib
contient 73 Ko de fichiers installés.
Une doublure brute pour coller tout cela ensemble et sa production est raccourcie:
# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";while(C|getline>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J);print s"\t"P}print t"\t---TOTAL---"}'
26 blkid
30 block-mount
17 chat
55 comgt
6 kmod-fs-exportfs
(((...some lines skipped...)))
14 portmap
48 swap-utils
223 usb-modeswitch-data
45 usb-modeswitch
73 zlib
4184 ---TOTAL---
HTH!
Ajouté le 17-10-2014:
La sortie suivante est tirée d'OpenWrt-12.09 sur un "TP-Link TL-WR703N" et montre comment ajouter le tri de la sortie par taille de package.
Découvrez où et comment la variable S
entre en jeu ...
# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";S="sort -n";while(C|getli
ne>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J)
;print s"\t"P|S}close(S);print t"\t---TOTAL---"}'
5 kmod-lib-crc16
5 luci-proto-3g
12 libuuid
13 kmod-usb-serial-wwan
17 chat
24 kmod-usb-acm
24 libusb
26 blkid
30 block-mount
41 kmod-usb-serial
45 usb-modeswitch
48 kmod-usb-serial-option
48 swap-utils
55 comgt
67 kmod-usb-storage
148 libblkid
154 kmod-scsi-core
223 usb-modeswitch-data
382 kmod-fs-ext4
1367 ---TOTAL---
Encore une fois: HTH!
Ajouté le 13-01-2018:
La méthode ci-dessus a été testée sur OpenWrt-AA.
Maintenant, en regardant LEDE-17.01, un chemin a changé: le remplacement /overlay
par des /overlay/upper
correctifs.
Statu quo ( opkg-list-user-installed-sorted-by-size
pas comme 1 ligne):
#!/usr/bin/awk -f
BEGIN {
D="cd /overlay/upper/usr/lib/opkg/info&&"
C=D"ls *.list"
S="sort -n"
while(C|getline>0) {
P=substr(F=$1,1,length($1)-5)
J=D"du -sk $(cat "F")"
s=0
while(J|getline>0) {
s+=$1
t+=$1
}
close(J)
print s"\t"P|S
}
close(S)
print t"\t---TOTAL---"
}
Essai:
root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8 luci-ssl
9 libustream-mbedtls
13 px5g-mbedtls
338 libmbedtls
368 ---TOTAL---
Question ouverte: quand ce changement de /overlay
structure s'est-il produit? LEDE-17 est le successeur d'OpenWrt-CC et je n'ai aucun système exécutant OpenWrt à portée de main. Donc, si vous en avez besoin sur OpenWrt-BB ou -CC, regardez d' /overlay
abord à l' intérieur .
Sur la base de la solution de Yeti , il existe une autre possibilité, qui pourrait être plus rapide. Au lieu de calculer la taille avec
du
pour les fichiers dulist
fichier, nous pouvons utiliser la taille déclarée dans lecontrol
fichier.Quelque chose comme mon petit
opkg_sizes
scriptSi vous souhaitez que la sortie soit triée, vous pouvez l'exécuter via
sort
:ÉDITER
Comparer les résultats de mon script aux différences révélées par le yéti . C'est parce qu'il a fait référence
/overlay/usr/lib/opkg/info
alors que je pensais que le/overlay
préfixe n'était pas nécessaire. Eh bien, je ne comprends pas vraiment pourquoi, mais/usr/lib/opkg/info
donne également les packages système, tout en/overlay/usr/lib/opkg/info
ne donnant que les packages de l'utilisateur.Donc, si l'utilisateur est également intéressé par les packages système, utilisez la première version. Mais pour n'atteindre que les packages de l'utilisateur, remplacez simplement la première ligne par:
Après cela, les deux scripts se réfèrent aux mêmes packages, mais avec des nombres différents ... (en plus de la différence évidente entre octets et kilo-octets :-))
ls
montre la taille en octets,du
montre la taille de tous les blocs alloués par le fichier.la source
du
compte dans le système de fichiers granularité de la taille des blocs. Et / overlay n'est que la partie écrite des couches du système de fichiers.Cette réponse est une version améliorée de la réponse de Zvika . Étant donné que le code source est substantiellement différent, je pense qu'il est préférable de l'ajouter comme réponse supplémentaire, plutôt que de modifier l'original.
Le code d'origine nécessitait trop de fourches, ce qui le rendait aussi lent qu'une seconde. Ce code amélioré est plus court et n'utilise que trois processus, conduisant à un temps d'exécution extrêmement rapide de 0,02 s (sur mon routeur).
Vous pouvez modifier les chemins:
/overlay/usr/lib/opkg/info/*.control
→ packages installés par l'utilisateur. Ce sont les packages qui peuvent être supprimés afin de libérer de l'espace./rom/usr/lib/opkg/info/*.control
→ packages système. Ceux-ci ne peuvent pas être désinstallés. (À moins que vous ne sachiez vraiment ce que vous faites.) Comme ils sont stockés dans la partition en lecture seule, leur suppression ne libérera pas d'espace supplémentaire./usr/lib/opkg/info/*.control
→ tous les packages.la source
Pour moi, la façon la plus simple était d'utiliser
find
;avec sortie ci-dessous;
Ce sont les "gros" fichiers de mon installation LEDE. J'avais besoin d'espace supplémentaire sur mon routeur pour pouvoir formater, partitionner et monter de l'espace de stockage USB. Ajustez
+500k
à une taille de fichier qui vous convient mieux.la source