No todos los entornos OpenWrt están configurados de la misma manera, por lo que mi respuesta es un tiro en la oscuridad ...
El resultado de ejemplo se toma de OpenWrt-12.09 en un "TP-Link TL-WDR4300".
ssh
en su enrutador.
Comprueba tus archivos
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
es la tarjeta micro SD de mi dispositivo UMTS ... simplemente ignore esto.
Muchos enrutadores se actualizan de forma similar a la que se ve aquí: un sistema de archivos superpuestos hace que un sistema de archivos superpuestos pseudoescriba un sistema de archivos raíz de solo lectura.
Mira adentro /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
Este directorio contiene la información sobre paquetes instalados adicionalmente. Los archivos que terminan en .list
son listas de archivos instalados por el paquete con el mismo nombre (sin .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
El paquete zlib
tiene 3 archivos instalados.
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
El paquete zlib
tiene 73kbytes de archivos instalados.
Un crudo 1-liner para unir todo esto y su producción se acorta:
# 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!
Añadido 2014-10-17:
La siguiente salida se toma de OpenWrt-12.09 en un "TP-Link TL-WR703N" y muestra cómo agregar la clasificación de la salida por tamaño de paquete.
Echa un vistazo a dónde y cómo S
entra la variable en el juego ...
# 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---
De nuevo: HTH!
Añadido 2018-01-13:
La forma anterior se probó en OpenWrt-AA.
Ahora mirando LEDE-17.01, una ruta ha cambiado: Reemplazar /overlay
con /overlay/upper
arreglos esto.
Status quo ( opkg-list-user-installed-sorted-by-size
no como 1-liner):
#!/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---"
}
Prueba de funcionamiento:
root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8 luci-ssl
9 libustream-mbedtls
13 px5g-mbedtls
338 libmbedtls
368 ---TOTAL---
Pregunta abierta: ¿Cuándo sucedió este cambio en /overlay
la estructura de? LEDE-17 es el sucesor de OpenWrt-CC y no tengo sistemas que ejecuten OpenWrt a la mano. Entonces, si necesita esto en OpenWrt-BB o -CC, eche un vistazo /overlay
primero.
Según la solución de yeti , existe otra posibilidad, que podría ser más rápida. En lugar de calcular el tamaño con
du
los archivos dellist
archivo, podemos usar el tamaño declarado en elcontrol
archivo.Algo como mi pequeño
opkg_sizes
guionSi desea que se ordene la salida, puede ejecutarla a través de
sort
:EDITAR
Comparando los resultados de mi guión con las diferencias reveladas de yeti . Es porque él se refirió
/overlay/usr/lib/opkg/info
mientras yo pensaba que el/overlay
prefijo es innecesario. Bueno, no entiendo completamente por qué, pero/usr/lib/opkg/info
también da los paquetes del sistema, mientras/overlay/usr/lib/opkg/info
que solo da los paquetes del usuario.Entonces, si el usuario también está interesado en los paquetes del sistema, use la primera versión. Pero para lograr solo los paquetes del usuario, simplemente reemplace la primera línea para:
Después de hacerlo, ambos scripts se refieren a los mismos paquetes, pero con números diferentes ... (además de la diferencia obvia entre bytes y kilobytes :-))
ls
muestra el tamaño en bytes,du
muestra el tamaño de todos los bloques asignados por el archivo.fuente
du
cuenta en granularidad del sistema de archivos. Y / overlay es solo la parte escrita de las capas del sistema de archivos.Esta respuesta es una versión mejorada de la respuesta de Zvika . Dado que el código fuente es sustancialmente diferente, creo que es mejor agregarlo como una respuesta adicional, en lugar de una edición del original.
El código original requería demasiados tenedores, lo que lo hacía tan lento como un segundo. Este código mejorado es más corto y solo usa tres procesos, lo que lleva a un tiempo de ejecución increíblemente rápido de 0.02s (en mi enrutador).
Puedes modificar los caminos:
/overlay/usr/lib/opkg/info/*.control
→ paquetes instalados por el usuario. Estos son los paquetes que se pueden eliminar para liberar espacio./rom/usr/lib/opkg/info/*.control
→ paquetes del sistema. Estos no se pueden desinstalar. (A menos que realmente sepa lo que está haciendo). Dado que están almacenados en la partición de solo lectura, eliminarlos no liberará espacio adicional./usr/lib/opkg/info/*.control
→ todos los paquetes.fuente
Para mí, la forma más fácil era usar
find
;con salida a continuación;
Estos fueron los archivos "grandes" en mi instalación LEDE. Necesitaba espacio adicional en mi enrutador para poder formatear, particionar y montar un poco de espacio de almacenamiento USB. Ajústelo
+500k
al tamaño de archivo que más le convenga.fuente