ওপেনআরটিতে প্যাকেজগুলির দ্বারা দখল করা ডিস্কের স্থানটি কীভাবে জানবেন?


16

আমি আমার ডিভাইসে ওপেনআরটিটি কনফিগার করার চেষ্টা করছি এবং স্থান ছাড়িয়ে গেল। আমি কিছু টুলিং প্যাকেজ ডাউনলোড করছিলাম। এখন আমি কীভাবে তাদের ওজনগুলি নির্ধারণ করতে পারি যাতে সিদ্ধান্ত নিতে হবে কী আনইনস্টল করবেন?

ওপিকেজি দিয়ে ইনস্টল করা প্যাকেজগুলির আকারটি প্রদর্শন করা সম্ভব?

উত্তর:


11

প্রতিটি ওপেনআর্ট পরিবেশ একইভাবে সেট আপ হয় না, তাই আমার উত্তরটি অন্ধকারে একটি শট ...

উদাহরণটি আউটপুটটি "টিপি-লিংক টিএল-ডাব্লুডিআরডিআর 4300" -তে ওপেনআরটি -12.09 থেকে নেওয়া হয়েছে।

ssh আপনার রাউটার মধ্যে।

আপনার ফাইলসাইটগুলি পরীক্ষা করুন।

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 আমার ইউএমটিএস স্টিকের মাইক্রো এসডি কার্ড ... কেবল এটিকে এড়িয়ে যান ignore

অনেক রাউটার এখানে অনুরূপ ফ্যাশনে ফ্ল্যাশ করা হয়েছে: একটি পঠনযোগ্য রুট ফাইলসাইম একটি ওভারলে ফাইল সিস্টেম দ্বারা ছদ্ম লিখনযোগ্য করা হয়।

ভিতরে দেখুন /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

এই ডিরেক্টরিতে অতিরিক্ত ইনস্টল হওয়া প্যাকেজগুলির তথ্য রয়েছে। শেষ হওয়া ফাইলগুলি হ'ল .listপ্যাকেজ দ্বারা অনুরূপ নামের (ছাড়াই .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

প্যাকেজটিতে zlib3 টি ফাইল ইনস্টল করা আছে।

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

প্যাকেজটিতে zlibইনস্টল করা ফাইলগুলির 73kbytes রয়েছে।

এই সমস্ত একসাথে আঠালো করতে একটি অশোধিত 1-লাইনার এবং এটি আউটপুটকে সংক্ষিপ্ত করে দেয়:

# 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 যোগ হয়েছে:

নিম্নলিখিত আউটপুটটি "টিপি-লিংক টিএল-ডাব্লুআর 703 এন"-তে ওপেন-আর্ট -১২.০৯ থেকে নেওয়া হয়েছে এবং প্যাকেজের আকার অনুসারে আউটপুটটিকে কীভাবে যুক্ত করবেন তা দেখায়।

কোথায় এবং কীভাবে পরিবর্তনশীল Sগেমটিতে আসে তা একবার দেখুন ...

# 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---

আবার: এইচটিএইচ!


2018-01-13 যুক্ত হয়েছে:

উপরের উপায়ে ওপেনআর্ট-এএ পরীক্ষা করা হয়েছিল।

এখন Lede-17.01 দিকে তাকিয়ে একটি পাথ পরিবর্তন করা হয়েছে: প্রতিস্থাপন /overlayসঙ্গে /overlay/upperসংশোধন করা হয়েছে এটা।

স্থিতিশীল ( opkg-list-user-installed-sorted-by-size1-লাইনার হিসাবে নয়):

#!/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---"
}

পরীক্ষা রান:

root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8       luci-ssl
9       libustream-mbedtls
13      px5g-mbedtls
338     libmbedtls
368     ---TOTAL---

উন্মুক্ত প্রশ্ন: /overlayএর কাঠামোর এই পরিবর্তনটি কখন ঘটে? এলইডিই -17 হ'ল ওপেনআর্ট-সিসির উত্তরসূরি এবং আমার হাতে কোনও ওপেনআর্ট রান্নিগ নেই। সুতরাং আপনার যদি ওপেনআর্ট-বিবি বা -সিসি-তে এটির প্রয়োজন হয় তবে /overlayপ্রথমে ভিতরে দেখুন ।


অসাধারণ! কেবল বাছাই করা অনুপস্থিত ;-)
বোনানজা

@ বোনানজা ... পুফ! বা AWKish এ "সিমসএএলএক্লাবিম" ... ;-ড

4

ইয়েটির সমাধানের ভিত্তিতে , আরও একটি সম্ভাবনা রয়েছে, এটি আরও দ্রুত হতে পারে। duফাইলের ফাইলগুলির জন্য আকারের সাথে গণনা করার পরিবর্তে listআমরা ফাইলটিতে ঘোষিত আকারটি ব্যবহার করতে পারি control

আমার ছোট opkg_sizesস্ক্রিপ্ট এর মত কিছু

cd /usr/lib/opkg/info
for i in *.control
do
  echo `grep Size "$i" | cut -f 2 -d :` "${i%.control}"
done

আপনি যদি আউটপুটটি বাছাই করতে চান তবে আপনি এটির মাধ্যমে চালাতে পারেন sort:

./opkg_sizes | sort -n

সম্পাদনা

আমার স্ক্রিপ্টের ফলাফলকে ইয়েটির প্রকাশিত পার্থক্যের সাথে তুলনা করা । এটি কারণ কারণ তিনি /overlay/usr/lib/opkg/infoযখন উল্লেখ করেছিলেন যে /overlayউপসর্গটি অপ্রয়োজনীয়। ঠিক আছে, আমি কেন সম্পূর্ণরূপে বুঝতে পারি না, তবে /usr/lib/opkg/infoসিস্টেম প্যাকেজও /overlay/usr/lib/opkg/infoদেয় , যখন কেবল ব্যবহারকারীর প্যাকেজ দেয়।

সুতরাং, ব্যবহারকারী যদি সিস্টেম প্যাকেজগুলিতেও আগ্রহী হন তবে প্রথম সংস্করণটি ব্যবহার করুন। তবে শুধুমাত্র ব্যবহারকারীর প্যাকেজগুলি অর্জন করতে, প্রথম লাইনটি এখানে প্রতিস্থাপন করুন:

 cd /overlay/usr/lib/opkg/info

এটি করার পরে, উভয় স্ক্রিপ্ট একই প্যাকেজগুলিকে বোঝায়, তবে বিভিন্ন সংখ্যা সহ ... (বাইটস এবং কিলোবাইটের মধ্যে সুস্পষ্ট স্বতন্ত্রতা ছাড়াও :-))


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বাইটগুলিতে আকার duদেখায়, ফাইল দ্বারা বরাদ্দকৃত সমস্ত ব্লকের আকার দেখায়।


এটি জিজ্ঞাসা করা হয়েছিল যে ডাউনলোড করা প্যাকেজগুলি কতটা খরচ করছে। ফ্ল্যাশড ফার্মওয়্যারের সাথে ইনস্টল করা প্যাকেজগুলি সরানো ওভারলে ফাইল সিস্টেমে স্থান মুক্ত করে না। । । । । । কমপক্ষে এইভাবে আমি প্রশ্নের ব্যাখ্যা করি ...

আমি আপনার প্রশ্নের বোঝার সাথে একমত। তবে আমি ভেবেছিলাম / ওভারলেতে আসল সিস্টেমটি প্রতিফলিত করা উচিত, সম্ভবত আরও কিছু তথ্য থাকতে পারে; তবে আমি অবাক হয়েছি যে এতে কম তথ্য রয়েছে ।
Zvika

এছাড়াও, এটি অদ্ভুত যে 2 টি পদ্ধতি বিভিন্ন সংখ্যা দেয় ...
Zvika

duফাইল সিস্টেমে গণনাগুলি গ্রানুলারিটি অবরোধ করে। এবং / ওভারলে কেবল ফাইল সিস্টেম স্তরগুলির লিখনীয় অংশ।

ঠিক আছে, তখন আমি ধরে নিয়েছি যে এটির সিদ্ধান্তে পৌঁছেছে যে আপনার উত্তর আরও ভাল ...
Zvika

2

এই উত্তরটি জাভিকার উত্তরের একটি উন্নত সংস্করণ । সোর্স কোডটি যেহেতু যথেষ্ট আলাদা, আমি বিশ্বাস করি যে এটি মূল উত্তরটির পরিবর্তে অতিরিক্ত উত্তর হিসাবে যুক্ত করা ভাল।

#!/bin/sh
grep -H Installed-Size: /overlay/usr/lib/opkg/info/*.control | \
  sed 's,^.*/\([^/]\+\)\.control:Installed-Size: *\(.*\),\2\t\1,'

মূল কোড প্রয়োজনীয় অনেকগুলি কাটাচামচ, এক দ্বিতীয় হিসাবে ধীর যেমন করে। এই উন্নত কোডটি সংক্ষিপ্ত এবং কেবল তিনটি প্রক্রিয়া ব্যবহার করে যা 0.02s (আমার রাউটারে) এর জ্বলজ্বল দ্রুত সময়ের জন্য বাড়ে।

আপনি রাস্তাগুলি টুইঙ্ক করতে পারেন:

  • /overlay/usr/lib/opkg/info/*.control-ব্যবহারকারী-ইনস্টল প্যাকেজ। এই স্থানগুলি খালি করতে প্যাকেজগুলি মুছে ফেলা যায়।
  • /rom/usr/lib/opkg/info/*.controlPackages সিস্টেম প্যাকেজ। এগুলি আনইনস্টল করা যায় না। ( আপনি কী করছেন তা যদি না আপনি সত্যিই জানেন না)) যেহেতু সেগুলি কেবল পঠনযোগ্য পার্টিশনে সংরক্ষিত রয়েছে তাই এগুলি অপসারণ করলে অতিরিক্ত স্থান খালি হবে না।
  • /usr/lib/opkg/info/*.control → সমস্ত প্যাকেজ।

0

আমার জন্য সবচেয়ে সহজ উপায়টি ছিল find;

find / -size +500k

নীচে আউটপুট সহ;

# 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

এগুলি ছিল আমার এলইডিই ইনস্টলের "বড়" ফাইল। আমার রাউটারে আমার কিছু অতিরিক্ত স্থানের প্রয়োজন ছিল যাতে আমি ফর্ম্যাট, পার্টিশন এবং কিছু USB স্টোরেজ স্পেস রাখতে পারি। +500kএমন একটি ফাইল আকারের সাথে সামঞ্জস্য করুন যা আপনাকে আরও ভাল মানায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.