ด้วยชื่อแพ็กเกจฉันต้องการค้นหาว่าจะเพิ่มพื้นที่ว่างหากแพ็กเกจและการอ้างอิงถูกลบทิ้ง
เนื่องจากการอ้างอิงอาจใช้ร่วมกันระหว่างแพคเกจอาจเป็นวิธีที่เหมาะสมในการกล่าวคือ: แพคเกจใช้พื้นที่เท่าใด
ฉันต้องการโซลูชันของ CLI เพราะฉันจะใช้ในสคริปต์
ด้วยชื่อแพ็กเกจฉันต้องการค้นหาว่าจะเพิ่มพื้นที่ว่างหากแพ็กเกจและการอ้างอิงถูกลบทิ้ง
เนื่องจากการอ้างอิงอาจใช้ร่วมกันระหว่างแพคเกจอาจเป็นวิธีที่เหมาะสมในการกล่าวคือ: แพคเกจใช้พื้นที่เท่าใด
ฉันต้องการโซลูชันของ CLI เพราะฉันจะใช้ในสคริปต์
คำตอบ:
วิธีที่ง่ายและปราศจากข้อบกพร่องในการรับพื้นที่ที่โปรแกรมใช้และการอ้างอิงทั้งหมดคือการใช้ apt เอง หมายเหตุการขึ้นต่อกันที่ไม่ได้ใช้โดยโปรแกรมอื่น แต่ติดตั้งพร้อมกับแพ็กเกจจะไม่ถูกพิจารณาเนื่องจากไม่ได้ถูกลบออก
ง่ายดาย
sudo apt-get --assume-no autoremove PACKAGENAME
หรือ
apt-space-used-by() { sudo apt-get --assume-no autoremove $@ | grep freed | cut -d' ' -f4-5 ;}
การใช้ apt-space-used-by PACKAGENAME
สคริปต์ python นี้ดูมีแนวโน้ม (bigpkg - ค้นหาแพ็คเกจที่ต้องการพื้นที่บนระบบของคุณมาก)
echo -n | sudo apt-get purge <package> | grep "disk space will be freed"
หรือ
echo -n | sudo apt-get purge --auto-remove <package> | grep "disk space will be freed"
ที่แทนที่<package>
ด้วยpackage-name
(ตัวอย่าง: gimp
)
สิ่งนี้จะไม่กำจัดแพ็คเกจที่มีการขึ้นต่อกัน แต่จะให้พื้นที่ว่างในดิสก์ที่จะถูกปลดปล่อยด้วยความช่วยเหลือgrep
เท่านั้น!
dpkg --print-avail
หรือapt-cache show
:apt-cache show <package> | grep "Installed-Size"
หรือ
dpkg --print-avail <package> | grep "Installed-Size"
<package>
นี้จะแสดงขนาดของการติดตั้ง
ตัวอย่าง:
$ apt-cache show gimp | grep "Installed-Size"
Installed-Size: 15024
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n
คุณสามารถใช้เพิ่มเติมสำหรับหน้าฉลาด:
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n | more
ด้านบนรายการแพคเกจตามขนาด acceding คุณสามารถใช้tail
เพื่อแสดงรายการแพคเกจที่ใช้ขนาดสูงสุดดังนี้:
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n | tail
dpigs
(จากคนdpigs
):dpigs - แสดงแพ็คเกจที่ติดตั้งซึ่งใช้พื้นที่มากที่สุด
dpigs จัดเรียงแพ็กเกจที่ติดตั้งตามขนาดและเอาท์พุตที่ใหญ่ที่สุด ต่อ dpigs เริ่มต้นจะแสดงแพ็คเกจที่ใหญ่ที่สุด 10 รายการ คุณสามารถเปลี่ยน ค่านี้โดยใช้ตัวเลือก -n (ดู "OPTIONS") ข้อมูลถูกนำมาจากไฟล์สถานะ dpkg พร้อมสถานะ grep-1 (1)
สิ่งนี้สามารถติดตั้งได้โดย:
ตัวอย่างของคำสั่งเรียกใช้sudo apt-get install debian-goodies
$ dpigs
115449 wine1.6-i386
110356 linux-image-extra-3.13.0-24-generic
103828 libreoffice-core
86240 fonts-horai-umefont
74016 libreoffice-common
72709 liboxideqtcore0
61736 linux-headers-3.13.0-24
60821 libpyzy-1.0-0
59477 firefox
59443 thunderbird
popularity-contest (8) - list the most popular Debian packages
popcon-largest-unused (8) - List size of unused packages
เรียกใช้ครั้งแรกpopularity-contest
จากนั้นpopcon-largest-unused
สิ่งนี้จะช่วยให้คุณค้นหาขนาดของแพ็คเกจที่ไม่ได้ใช้ เยี่ยมชมหน้าคนสำหรับข้อมูลเพิ่มเติม
ฉันพยายามอย่างดีที่สุดเพื่อให้คำสั่งที่เป็นประโยชน์ตามขั้นตอน
หวังว่าสิ่งเหล่านี้ช่วย!
apt-cache show packagename
รายการขนาดอื่น ๆ ของแพคเกจที่ติดตั้งและการอ้างอิงของแพคเกจ นอกจากนี้ยังมีapt-cache rdepends packagename
รายการแพ็คเกจที่ใช้แพ็คเกจนั้น
คุณอาจต้องการใช้คำสั่งหลังและapt-cache policy packagename
เพื่อตรวจสอบว่ามีการติดตั้ง reverse-depdendency หรือไม่
Installed-Size
เป็นกิโลไบต์ขณะที่Size
อยู่ในไบต์ ฉันควรจะพูดถึงเรื่องนี้ในคำตอบของฉัน
นี่คือสคริปต์ที่ทำเช่นนั้น ไม่มีเอาต์พุตที่เป็นมิตรกับเครื่อง
sudo apt-get install python-apt
และคุณพร้อมที่จะไป
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from __future__ import (absolute_import, division,
print_function, unicode_literals)
import apt
from apt.cache import Filter, FilteredCache
MB = 1024*1024
class InstalledFilter(Filter):
def apply(self, pkg):
return pkg.is_installed
def iter_base_deps(cache, package):
deps = []
version = package.installed
for dep_type in ('Depends', 'PreDepends', 'Recommends'):
deps.extend(version.get_dependencies(dep_type))
for dep in deps:
for base_dep in dep:
if base_dep.name in cache:
yield base_dep
def main():
package_ref_count = {}
results = []
cache = FilteredCache(apt.Cache())
cache.set_filter(InstalledFilter())
for package in cache:
for base_dep in iter_base_deps(cache, package):
if base_dep.name in package_ref_count:
package_ref_count[base_dep.name] += 1
else:
package_ref_count[base_dep.name] = 1
for package in cache:
base_deps_size = 0
base_deps = []
for base_dep in iter_base_deps(cache, package):
if package_ref_count[base_dep.name] == 1:
base_deps.append(base_dep)
base_deps_size += cache[base_dep.name].installed.installed_size
total_size = package.installed.installed_size + base_deps_size
results.append((total_size, package, base_deps_size, base_deps))
for total_size, package, base_deps_size, base_deps in sorted(results, reverse=True):
if package.name in package_ref_count:
continue
if total_size < MB:
break
self_size = package.installed.installed_size
base_dep_count = len(base_deps)
print('{:.1f} MB {}'.format(total_size/MB, package.name) + \
(' with {} deps'.format(base_dep_count) if base_dep_count else ''))
if base_dep_count:
print(' {:.1f} MB self'.format(self_size/MB))
for base_dep in base_deps:
size = cache[base_dep.name].installed.installed_size
print(' {:.1f} MB {}'.format(size/MB, base_dep.name))
if __name__ == '__main__':
main()
ตัวอย่างผลลัพธ์:
72.6 MB gthumb with 4 deps
3.0 MB self
61.0 MB libwebkit2gtk-3.0-25
8.0 MB gthumb-data
0.1 MB gstreamer0.10-gnomevfs
0.5 MB flex
apt-cache show packagename
รายการขนาดอื่น ๆ ของแพคเกจที่ติดตั้งและการอ้างอิงของแพคเกจ นอกจากนี้ยังมีapt-cache rdepends package
รายการแพ็คเกจที่ใช้แพ็คเกจนั้น คุณอาจต้องการเริ่มต้นที่นั่น