Cihazımda OpenWrt yapılandırmaya çalışıyorum ve alanım bitti. Bazı takım paketleri indiriyordum. Şimdi ne kaldıracağına karar vermek için ağırlıklarını nasıl belirleyebilirim?
Kurulu paketlerin boyutunu OPKG ile görüntülemek mümkün müdür?
Cihazımda OpenWrt yapılandırmaya çalışıyorum ve alanım bitti. Bazı takım paketleri indiriyordum. Şimdi ne kaldıracağına karar vermek için ağırlıklarını nasıl belirleyebilirim?
Kurulu paketlerin boyutunu OPKG ile görüntülemek mümkün müdür?
Yanıtlar:
Her OpenWrt ortamı aynı şekilde kurulmaz, bu yüzden cevabım karanlıkta bir çekimdir ...
Örnek çıktı bir "TP-Link TL-WDR4300" üzerinde OpenWrt-12.09'dan alınmıştır.
ssh
yönlendiricinize.
Dosya sistemlerinizi kontrol edin.
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
UMTS çubuğumun mikro SD kartı ... bunu görmezden gel.
Birçok yönlendirici, burada görüldüğü gibi benzer şekilde yanıp söner: Salt okunur bir kök dosya sistemi, bir kaplama dosya sistemi tarafından sahte yazılabilir hale getirilir.
İçeri bak /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
Bu dizin ek olarak yüklenen paketler hakkında bilgi içerir. İle biten .list
dosyalar paket tarafından benzer ada sahip (olmadan .list
) kurulan dosyaların listeleridir :
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
Paketin zlib
yüklü 3 dosyası var.
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
Pakette zlib
73kbyte yüklü dosya var.
Bunları bir araya getirmek için ham bir 1-astar ve çıktı kısaltılmış:
# 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!
2014-10-17 eklendi:
Aşağıdaki çıktı bir "TP-Link TL-WR703N" üzerindeki OpenWrt-12.09'dan alınır ve çıktıyı paket boyutuna göre nasıl sıralayacağınızı gösterir.
Değişkenin oyuna nereden ve nasıl S
geldiğine bir göz atın ...
# 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---
Tekrar: HTH!
2018-01-13 eklendi:
Yukarıdaki yol OpenWrt-AA üzerinde test edilmiştir.
Şimdi bir yol değişti LEDE-17,01 bakarak: Değiştirme /overlay
ile /overlay/upper
düzeltmeleri bu.
Statüko ( opkg-list-user-installed-sorted-by-size
1 astarlı değil):
#!/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---"
}
Test sürüşü:
root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8 luci-ssl
9 libustream-mbedtls
13 px5g-mbedtls
338 libmbedtls
368 ---TOTAL---
Açık soru: /overlay
Yapısındaki bu değişiklik ne zaman oldu ? LEDE-17, OpenWrt-CC'nin halefidir ve elimde OpenWrt tarafından çalıştırılan hiçbir sistem yok. Bu nedenle, OpenWrt-BB veya -CC'de buna ihtiyacınız varsa, önce içine bir göz atın /overlay
.
Yeti'nin çözümüne dayanarak, daha hızlı olabilecek başka bir olasılık daha var. Dosyadaki du
dosyaların boyutunu kullanarak hesaplamak yerine , list
dosyada belirtilen boyutu kullanabiliriz control
.
Benim küçük opkg_sizes
senaryom gibi bir şey
cd /usr/lib/opkg/info
for i in *.control
do
echo `grep Size "$i" | cut -f 2 -d :` "${i%.control}"
done
Çıktının sıralanmasını istiyorsanız, şu yolla çalıştırabilirsiniz sort
:
./opkg_sizes | sort -n
Senaryo sonuçlarımı yeti'nin ortaya çıkan farklılıklarıyla karşılaştırmak. Çünkü ön ekin gereksiz /overlay/usr/lib/opkg/info
olduğunu düşündüğü sırada bahsetti /overlay
. Nedenini tam olarak anlamadım, ancak /usr/lib/opkg/info
sistem paketlerini verirken /overlay/usr/lib/opkg/info
, yalnızca kullanıcının paketlerini veriyor.
Dolayısıyla, kullanıcı sistem paketleriyle de ilgileniyorsa, ilk sürümü kullanın. Ancak yalnızca kullanıcının paketlerine ulaşmak için ilk satırı şu şekilde değiştirin:
cd /overlay/usr/lib/opkg/info
Bunu yaptıktan sonra, her iki komut dosyası da aynı paketlere karşılık gelir, ancak farklı sayılarla ... (bayt ve kilobayt arasındaki bariz farkın yanı sıra :-))
root@ap8:~# ls -l 1412453029-14.07-wdr4300-default-packages
-rw-r--r-- 1 root root 2683 Oct 4 20:03 1412453029-14.07-wdr4300-default-packages
root@ap8:~# du 1412453029-14.07-wdr4300-default-packages
3 1412453029-14.07-wdr4300-default-packages
ls
bayt cinsinden du
boyutu, dosya tarafından ayrılan tüm blokların boyutunu gösterir.
du
dosya sistemi blok boyutu ayrıntılarını sayar. Ve / overlay, dosya sistemi katmanlarının sadece en önemli parçasıdır.
Bu cevap Zvika'nın cevabının geliştirilmiş bir versiyonudur . Kaynak kodu büyük ölçüde farklı olduğundan, orijinali düzenlemek yerine ek bir cevap olarak eklemenin daha iyi olduğuna inanıyorum.
#!/bin/sh
grep -H Installed-Size: /overlay/usr/lib/opkg/info/*.control | \
sed 's,^.*/\([^/]\+\)\.control:Installed-Size: *\(.*\),\2\t\1,'
Orijinal kod bir saniye kadar yavaş olarak yapma, çok fazla çatal gerektiriyordu. Bu geliştirilmiş kod daha kısadır ve yalnızca üç işlem kullanır ve 0.02s'lik hızlı bir çalışma süresine (yönlendiricimde) yol açar.
Yolları düzenleyebilirsiniz:
/overlay/usr/lib/opkg/info/*.control
→ kullanıcı tarafından kurulan paketler. Bunlar, yer açmak için çıkarılabilen paketlerdir./rom/usr/lib/opkg/info/*.control
→ sistem paketleri. Bunlar kaldırılamaz. ( Ne yaptığınızı gerçekten bilmiyorsanız.) Salt okunur bölümde depolandıkları için, bunları kaldırmak ek alan açmaz./usr/lib/opkg/info/*.control
→ tüm paketler.Benim için en kolay yol find
;
find / -size +500k
aşağıda çıktı ile;
# find / -size +500k
/lib/libc.so
/lib/modules/4.4.92/mac80211.ko
/overlay/upper/usr/lib/libcrypto.so.1.0.0
/overlay/upper/usr/lib/libdns.so.165.0.4
/overlay/upper/usr/sbin/sshd
/rom/lib/libc.so
/rom/lib/modules/4.4.92/mac80211.ko
/usr/lib/libcrypto.so.1.0.0
/usr/lib/libdns.so.165.0.4
/usr/sbin/sshd
Bunlar LEDE kurulumumdaki "büyük" dosyalardı. Bazı USB depolama alanını biçimlendirebilmem, bölümleyebilmem ve monte edebilmem için yönlendiricimde fazladan alana ihtiyacım vardı. +500k
Size daha uygun bir dosya boyutuna ayarlayın .