แพคเกจซอฟต์แวร์ที่ติดตั้งใดใช้พื้นที่ดิสก์มากที่สุดใน Debian


76

พื้นที่ดิสก์บนพาร์ติชันรากของฉันใกล้หมดดังนั้นฉันต้องการลบบางแอปพลิเคชันออกจากระบบ ฉันจะดูแพคเกจซอฟต์แวร์ที่ใช้พื้นที่ดิสก์มากที่สุดได้อย่างไร เป็นไปได้ไหมที่จะดูจากaptitude?

ฉันรู้เกี่ยวกับการวิเคราะห์พื้นที่ดิสก์ทั่วไปเช่นdfหรือbaobabแต่ฉันต้องการโซลูชันสำหรับแอปพลิเคชันที่ติดตั้ง


คำตอบ:


53

wajig largeที่ง่ายที่สุดคือการทำงาน แพ็คเกจควรอยู่apt-installห่างกัน

นี่คือลิงก์สองวิธีสำหรับวิธีอื่น ๆ ในการดำเนินการ:

ยังจำได้ว่าขนาดที่ติดตั้งเป็นเพียงส่วนหนึ่งของพื้นที่ที่ใช้โดยแพคเกจ เวอร์ชันที่บีบอัดอาจยังอยู่ในแคชและใช้พื้นที่มากเกินไป apt-get cleanคุณสามารถเอาผู้ที่มี


4
apt-get cleanคำสั่งล้างแคชแพคเกจเป็น “ ล้างที่เก็บในเครื่องของไฟล์แพคเกจที่ดึงออกมา” - man apt-get
manatwork

97

วิธีที่ง่ายที่สุด (โดยไม่ต้องติดตั้งแพ็คเกจเพิ่มเติม) คือ:

dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

ซึ่งแสดงแพ็คเกจตามลำดับขนาดแพ็กเกจที่ใหญ่ที่สุดจะมีอายุการใช้งาน

น่าเสียดายที่อย่างน้อยในบางระบบรายการนี้มีแพ็คเกจที่ถูกลบ แต่ไม่ถูกลบ แพคเกจดังกล่าวทั้งหมดสามารถลบออกได้โดยการทำงาน:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

หรือถ้าคุณไม่ต้องการกำจัดแพ็คเกจที่ถอนการติดตั้งคุณสามารถใช้ตัวแปรนี้เพื่อกรองแพ็กเกจที่ไม่ได้อยู่ในสถานะ 'ติดตั้ง' จากรายการ:

dpkg-query -Wf '${db:Status-Status} ${Installed-Size}\t${Package}\n' | sed -ne 's/^installed //p'|sort -n

2
"ขนาดที่ติดตั้ง" คือค่าประมาณที่ถูกจองไว้ล่วงหน้าว่าจะต้องใช้พื้นที่เท่าใดในแพคเกจที่ติดตั้ง มันไม่ใช่ขนาดที่แท้จริงฉันกลัว
Rolf

23

เนื่องจากคุณต้องการsee which [installed] software packages use the most disk space[,] from aptitude... แน่นอนคุณสามารถใช้aptitude! ผ่านทาง CLI หรือ {interactive, TUI, non-CLI} สุดยอด เรามาคุยเรื่อง CLI กันก่อนจากนั้น TUI ไม่ว่าจะด้วยวิธีใดคุณเพียงแค่ต้องรู้

  • ตัวเลือก commandline ที่จะใช้ ข้อความต่อไปนี้ใช้ตัวเลือกแบบยาว (เพื่อความสะดวกในการค้นหาเอกสาร) แต่ยังมีตัวเลือกสั้น ๆ ที่แน่นอน
  • อาร์กิวเมนต์ commandline ที่จะใช้
  • สตริงรูปแบบผลลัพธ์ที่จะใช้

commandline พื้นฐานที่สุดเพื่อแสดงชุดซอฟต์แวร์ที่ติดตั้งซึ่งใช้พื้นที่ดิสก์ส่วนใหญ่น่าจะเป็น

aptitude search --sort '~installsize' --display-format '%p %I' '~i' | head

งั้นเรามาทำลายมันกันเถอะ:

  • --sortเป็นแพคเกจการเรียงลำดับและ~installsizeระบุนโยบายแพคเกจการจัดเรียง
  • installsizeหมายถึง 'เรียงบน (โดยประมาณ) ขนาดที่ติดตั้ง' และวิธีก่อนหน้านี้~หมายถึงเรียงจากมากไปน้อย
  • --display-format<you guessed :->การเปลี่ยนแปลง สตริงรูปแบบ '%p %I'บอกaptitudeเอาท์พุทชื่อแพคเกจขนาดติดตั้งแล้ว
  • '~i'บอกaptitudeให้ค้นหาเฉพาะแพ็คเกจที่ติดตั้ง
  • ... และ, เว้นแต่คุณจะมีแพ็คเกจที่ติดตั้งน้อยมาก (เวิร์กสเตชัน Debian ทั่วไปของฉันมีมากกว่า 2400), คุณต้องการไปป์headหรือlessหรือไฟล์, หรืออาจจะแค่wc -lดูว่ามีกี่บรรทัดที่aptitudeจะกลับมา.

คุณอาจต้องการ

  1. ระบุความกว้างของเส้น (ในตัว) สำหรับที่จะใช้เมื่อการแสดงด้วยaptitude จะใช้ค่าเริ่มต้นกับสิ่งที่เชื่อว่าเป็นความกว้างของเครื่อง แต่บางครั้งก็เดาผิดและบางครั้งคุณต้องการเขียนไฟล์ ฯลฯ--width <your desired integer value/>aptitude
  2. แสดงข้อมูลเพิ่มเติมในสตริงรูปแบบของคุณหรือเปลี่ยนความกว้างของฟิลด์ เช่นสตริงรูปแบบที่ปรับปรุงของฉัน'%30p %I %r %60d'แสดง

    • %30p : ชื่อแพคเกจในฟิลด์ width = 30 อักขระ
    • %I : ขนาดการติดตั้งโดยประมาณ
    • %r : 'reverse depend count': จำนวนโดยประมาณของแพ็คเกจที่ติดตั้งอื่น ๆ ซึ่งขึ้นอยู่กับแพ็คเกจนี้
    • %60d : คำอธิบายสั้น ๆ ของแพ็คเกจในฟิลด์ width = 60 char

--widthโปรดทราบว่าถ้าคุณไม่เห็นการเปลี่ยนแปลงในด้านการส่งออกของคุณคุณอาจจะต้องตั้ง

... และคุณยังสามารถทำเรียงของสิ่งนี้ใน {โต้ตอบ aptitudeTUI} เช่นการตั้งค่าการแสดงผลรูปแบบ

  • คลิกหรือไปที่ตัวเลือก -> การตั้งค่า
  • เลื่อนไปที่รูปแบบการแสดงผลสำหรับมุมมองแพ็คเกจ
  • เพิ่ม%Iค่าปัจจุบันในตำแหน่งที่ต้องการ

เพื่อ จำกัด การค้นหาแพคเกจติดตั้งในการโต้ตอบaptitude,

  • กดl(ตัวพิมพ์เล็กL)
  • ป้อน~iในกล่องโต้ตอบ

เพื่อจัดเรียงกับขนาดการติดตั้งในการโต้ตอบaptitude,

  • กดShift-S(ตัวพิมพ์ใหญ่S)
  • ป้อนinstallsizeในกล่องโต้ตอบ

อ้างอิง:


ไม่แน่ใจว่ามีวิธีการทำหรือไม่ แต่ควรพิมพ์ขนาดเป็น kB เป็นการดีที่จะเรียงลำดับหรือประมวลผลภายหลังอย่างง่ายดาย
Derobert

@derobert กำลังมองหาวิธีที่ฉันสามารถควบคุมพื้นที่สีขาวในการส่งออกของความถนัดเช่นกันเห็นได้ชัดว่าไม่มีทางที่จะเปลี่ยนขนาดของเอาท์พุท
Braiam

@Braiam ใช่จำนวนทั้งหมดของพื้นที่ที่ได้รับ*texlive*คืออะไรถ้าฉันลบออก?
terdon

@terdon mm ... คงไม่aptitude -s remove '?and(texlive,~i)'พอเหรอ? นอกจากนี้คุณสามารถเพิ่มแท็กผู้ใช้ลงในแพ็คเกจเพื่อให้คุณสามารถจัดการได้โดยรวม (เช่นงาน)
Braiam

9

ในกรณีที่คุณไม่ต้องการติดตั้ง wajig ฉันจินตนาการว่าทุกคนได้ติดตั้งเดเบียนสารพัด:

dpigs              - Show which installed packages occupy the most space

wajig ต้องการ python 3 ซึ่งเป็นอีก 40mb debian-goodies ต้องการ python 2.6+ ดังนั้นจะเพิ่มได้ 700kb คำตอบของโจเซฟนี้ดีที่สุด!
Tim O'Brien

ฉันสังเกตเห็นว่าdpigsจริง ๆ แล้วมีผลลัพธ์เหมือนdpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | headกันซึ่งเป็นแพ็คเกจสิบอันดับแรกที่ติดตั้งซึ่งใช้พื้นที่มากที่สุด ยังคงdpigsง่ายและสั้น
clearkimura

8

ก่อนอื่นให้ใช้เครื่องมือเช่นbaobab( sudo apt-get install baobab) เพื่อแสดงตำแหน่งที่มีการใช้พื้นที่:

ป้อนคำอธิบายรูปภาพที่นี่

ที่จะให้ภาพรวมกราฟิกที่ดีและช่วยให้คุณ จำกัด สิ่งที่จะทำให้พื้นที่ของคุณแคบลง คุณสามารถรับข้อมูลนี้ในบรรทัดคำสั่งโดยใช้du:

$ sudo du -ch /

ผ่านนี้sort(สมมติว่า GNU sortซึ่งควรเป็นกรณีใน Debian) เพื่อจัดเรียงตามขนาดไดเรกทอรี:

$ sudo du -ch / | sort -h

ในขั้นตอนถัดไปคุณสามารถดูว่ามีพื้นที่ใดที่แพ็กเกจเฉพาะใช้กับคำสั่งนี้:

$ sudo apt-get --assume-no --purge remove "PACKAGE_NAME" | grep "be freed" | 
   awk '{print $4, $5}' 

ตัวอย่างเช่นในระบบของฉันการลบtexliveแพ็คเกจทั้งหมดจะเพิ่มฟรี 1,502 MB:

$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" | 
   awk '{print $4, $5}' 
1,502 MB

ในที่สุดคุณสามารถรับข้อมูลนี้สำหรับแพ็คเกจที่ติดตั้งทั้งหมดด้วยคำสั่งนี้:

$ for i in $(dpkg -l | awk '($1=="ii"){print $2}'); do  
    echo -e "$i\t"$(sudo apt-get --assume-no --purge remove "$i" | 
                    grep "be freed" | awk '{print $4, $5}'); 
  done

3

คุณสามารถใช้แพคเกจwajigและคำสั่ง

wajig large

ความช่วยเหลืออธิบายว่าสิ่งนี้ทำอะไร

wajig large -h

usage: wajig large [-h]

List size of all large (>10MB) installed packages

เห็นแล้วยังหน้าโครงการ


3

เพื่อเพิ่มคำตอบอื่น ๆ ถ้าคุณชอบบรรทัดคำสั่งคุณสามารถใช้ดีเก่า durep

# durep -td 1 /etc                         # or -td 2
[ /etc   319.4K (60 files, 43 dirs) ]
  90.2K [########                      ]  28.26% apache2/
  27.5K [##                            ]   8.62% apt/
  23.7K [##                            ]   7.43% mime.types
  19.7K [#                             ]   6.18% cron.daily/
  18.7K [#                             ]   5.87% services
  18.0K [#                             ]   5.64% security/
  14.7K [#                             ]   4.61% init.d/
  13.2K [#                             ]   4.13% ssl/
  11.1K [#                             ]   3.48% ld.so.cache
   9.0K [                              ]   2.81% locale.gen
   7.8K [                              ]   2.43% pam.d/
   4.5K [                              ]   1.42% default/
   4.3K [                              ]   1.35% skel/
   2.9K [                              ]   0.92% locale.alias

คุณสามารถเพิ่มพื้นที่ว่างโดยใช้ localepurge

# dpkg-reconfigure localepurge
# localepurge
localepurge: Disk space freed in /usr/share/locale: 26160 KiB
localepurge: Disk space freed in /usr/share/man: 1304 KiB

Total disk space freed by localepurge: 27464 KiB

สุดท้ายคุณอาจกำจัดไอคอนและแบบอักษรซึ่งบางครั้งอาจใช้พื้นที่มาก ดูรายละเอียดได้ที่เว็บไซต์นี้

https://ownyourbits.com/2017/02/18/squeeze-disk-space-on-a-debian-system/

(ตัวอย่างที่ดึงมาจาก youryourbits)


dpkg-reconfigure localepurgeบ่นเกี่ยวกับlocalepurgeแพคเกจไม่สามารถใช้ได้
Rolf

2

การเพิ่มเครื่องมืออีกสองสามรายการในรายการฉันใช้debfosterและdeborphanระบบของฉันเสมอ พวกมันมีประโยชน์มากที่สุดสำหรับการล่าสัตว์ที่ต้องพึ่งพาเก่า ๆ ที่แขวนอยู่หลังการอัพเกรด

apt-get autoremoveดีมาก แต่ไม่ได้รับทุกอย่างและเนื่องจากมันตามเครื่องหมายการติดตั้งจึงไม่ค่อยรู้ว่าคุณต้องการเก็บไว้ที่ไหน การใช้apt-markช่วยให้คุณสามารถนำไปใช้ในระดับหนึ่งได้

ตรวจสอบด้วย: https://wiki.debian.org/ReduceDebian


0

แม้ว่านี่จะเป็นชุดเครื่องมือที่ดีซึ่งฉันจะเพิ่ม KDE / QT Filelight ซึ่งคล้ายกับเครื่องมือการใช้พื้นที่ดิสก์ gui อื่น ๆ แต่ก็ไม่ใช่คำตอบที่แท้จริงของหัวเรื่องหัวข้อ

หากคุณนำคำถามของเธรดนี้ไปใช้อย่างแท้จริงนั่นคือแพคเกจที่ใหญ่ที่สุดในระบบของคุณคือ:

แพคเกจชุด libreoffice ซึ่งไม่ใช่แพ็คเกจเดียว แต่มันใหญ่มาก

เคอร์เนล linux และแพ็คเกจส่วนหัวที่เกี่ยวข้องมาฉันคิดว่าสองและถ้าคุณติดตั้งหลายเมล็ดซึ่งระบบส่วนใหญ่มักจะมีแต่ละอันอยู่รอบ ๆ ฉันคิดว่าพื้นที่ดิสก์ 135 mB ประมาณใหญ่ขึ้นทุกปี แต่มันเกี่ยวกับเรื่องใหญ่ . หากคุณใช้ไดรเวอร์วิดีโอที่ไม่ต้องเสียค่าใช้จ่ายจะมีแพ็คเกจ / ไฟล์ไดรเวอร์ที่เกี่ยวข้องเช่นกัน โปรดทราบว่าเช่นเดียวกับ libreoffice แต่ละเคอร์เนลสามารถสร้างขึ้นได้จริง ๆ ประกอบด้วย 2 หรือ 3 แพ็คเกจแพ็คเกจรูปภาพส่วนหัวและไดรเวอร์ดังนั้นการนับจำนวนตัวอักษรต่อขนาดแพคเกจจึงไม่ถูกต้องยกเว้นว่าจะเข้าใจได้จริง

หลังจากนั้นไม่มีแพ็คเกจขนาดใหญ่จำนวนมากในกลุ่มแพคเกจของ Debian ที่ฉันรู้

ฉันพบว่าเมื่อพาร์ทิชันรูทเริ่มใหญ่พอที่คุณจะเริ่มสงสัยว่าจะกำจัดแพ็กเกจให้ลดขนาดลงได้อย่างไรโดยทั่วไปแล้วเวลาที่จะย้าย / ปรับขนาดเป็นพาร์ติชันรูทที่ใหญ่กว่า

ฉลาด - ทำความสะอาดแน่นอนเป็นสิ่งแรกที่ทำงานเพื่อกำจัดไฟล์. deb ที่เก็บไว้ทั้งหมด แต่เมื่อคุณลบแล้วและทั้งหมดยกเว้น 2 เมล็ดถ้าคุณยังคงมีที่ว่างไม่พอ เป็นประโยชน์ในการเพิ่มขนาดพาร์ติชันเนื่องจากการล้างข้อมูล ฯลฯ เป็นเพียงแฟล็กสีแดงที่คุณกำลังใช้งานอยู่ใกล้กับพื้นที่พาร์ติชันรูทซึ่งอาจเป็นปัญหาจริงถ้า apt ไม่มีพื้นที่เพียงพอใน / var เพื่อดาวน์โหลดและแตกแพคเกจสำหรับ อัพเกรด การล้างข้อมูลออกจากการดำเนินการที่เหลืออยู่ไฟล์ config จากแพ็คเกจที่ถูกลบจะไม่ทำให้คุณดีในแง่ของการคืนพื้นที่ดิสก์เนื่องจากมันมีขนาดเล็ก แต่ก็ดีที่ต้องทำตอนนี้และเพียงแค่ทำความสะอาด cruft แล้ว ไม่ผิดสำหรับการคืนพื้นที่ว่างในดิสก์ที่มีความหมาย

apt-get auto-remove ก็ไม่ได้เลวร้ายเช่นกัน แต่โปรดระวังด้วยว่าบางครั้งมันผิดเกี่ยวกับแพ็กเกจที่ถูกลบออกไปดังนั้นคุณต้องการตรวจสอบรายการอย่างระมัดระวังก่อนที่คุณจะอนุญาตให้นำสิ่งนั้นออกได้ ในทางเทคนิคจะดีกว่าที่จะกำจัดรายการนั้นในแบบที่คุณกำจัดไฟล์ปรับแต่งในเวลาเดียวกันลบหรือลบอัตโนมัติฉันจะเชื่อว่าทิ้งไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.