เนื้อที่ว่างบนดิสก์ไม่เพียงพอเมื่อทำการอัพเกรด


142

ฉันพบข้อผิดพลาดในตัวอัปเดตซอฟต์แวร์เมื่อฉันลองและอัปเดตรายวันของฉัน มันบอกว่า:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

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

นี่คือผลลัพธ์จากการพิมพ์cat /etc/fstabลงในเทอร์มินัล:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

ผลลัพธ์ของdf -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

และdpkg -l | grep linux-imageให้:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP

1
นอกจากนี้เนื้อหาของ / etc / fstab ของคุณอาจเป็นประโยชน์ สิ่งที่ดูเหมือนว่าเป็น / boot ติดตั้งบนพาร์ทิชันที่แยกต่างหาก
Chuck R

1
กด Like @Githlar fstab ของคุณสามารถให้ข้อมูลเกี่ยวกับพาร์ติชัน hd ของคุณได้
ssoto

1
fstab เป็นไฟล์ที่มีข้อมูลเกี่ยวกับพาร์ติชั่นที่ติดตั้งเมื่อคุณบูตเครื่องคอมพิวเตอร์ หากต้องการแสดงเนื้อหาของไฟล์นี้ให้พิมพ์cat /etc/fstabเทอร์มินัล คัดลอกผลลัพธ์และเพิ่มลงในคำถามของคุณ (คุณสามารถแก้ไขคำถามของคุณ) นอกจากนี้ยังคัดลอกการส่งออกของและdf -h dpkg -l | grep linux-image
Alaa Ali

1
ปัญหาของคุณคือlinux-image...ไฟล์พิเศษทั้งหมดใน/bootพาร์ติชันที่ใช้พื้นที่ว่าง - คุณมีพาร์ติชั่นฟรี 6MB เท่านั้น sudo dpkg -P purge 'older_linux_image_filename'เพื่อลบทั้งหมดยกเว้นรุ่นล่าสุด = 3.5.0-28.48 และ 3.5.0-26.42 สิ่งนี้จะอนุญาตให้คุณอัปเดต / อัปเกรด
douggro

2
ฉันต้องวิ่งsudo apt-get autoremoveเพื่อแก้ไขปัญหานี้
Juampy NR

คำตอบ:


192

หมายเหตุ: คำตอบนี้หมายถึง 'คำอธิบาย' มากกว่าการให้วิธีที่ดีที่สุด / ง่ายที่สุดในการลบเมล็ดเก่า สำหรับวิธีที่ดีที่สุด / ง่ายที่สุดในการลบเมล็ดเก่าโปรดอ่านคำตอบอื่น ๆ

ตกลงดังนั้นจากผลลัพธ์ของ/etc/fstabคุณที่โพสต์ดูเหมือนว่าคุณ/bootติดตั้งอยู่ในพาร์ติชันแยกต่างหากและจากผลลัพธ์ของdf -hพาร์ติชันนั้นเต็ม นี่เป็นเพราะมีการติดตั้งเมล็ดเก่าที่ไม่จำเป็น คุณสามารถบอกได้ว่าโดยดูที่ผลลัพธ์ของdpkg -l | grep linux-imageสิ่งที่คุณโพสต์ซึ่งคุณสามารถเห็น " linux-image " มากกว่าหนึ่งรุ่นที่มีเวอร์ชันต่างกัน เราจำเป็นต้องลบเวอร์ชันเก่าออก

อันดับแรกฉันต้องการให้คุณเรียกใช้คำสั่งuname -rในเทอร์มินัลสิ่งนี้จะแสดงเวอร์ชันของเคอร์เนลที่คุณใช้งานอยู่ เราไม่ต้องการลบเวอร์ชันเคอร์เนลนั้น คำสั่งจะพูดอะไรบางอย่างเช่นนี้ จดบันทึกหมายเลขนั้น! คำสั่งต่อไปนี้จะถือว่าเป็นเคอร์เนลที่คุณใช้งานอยู่3.5.0-26-generic26

คำสั่งเพื่อลบเคอร์เนลเวอร์ชันเก่าคือ:

sudo apt-get purge linux-image-x.x.x-xx-generic

... โดยที่อักขระ x เป็นตัวเลข ดังนั้นในกรณีของคุณเนื่องจากคุณมีรุ่นเก่าจำนวนมาก (17, 18, 19, ฯลฯ ... ) เราจะต้องเรียกใช้คำสั่งนี้สำหรับแต่ละรุ่นดังนี้:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

... และต่อไป แต่มีวิธีการทั้งหมดนี้ผ่านคำสั่งเดียว คำสั่งนี้คือ ( อย่าเรียกใช้คำสั่งเลย! อ่านต่อไปนี้ ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

คำสั่งนี้จะลบรุ่นที่กล่าวถึงในวงเล็บ ฉันไม่ได้รวมรุ่น 25, 26 และ 28 เนื่องจากเหตุผลดังต่อไปนี้:

  • ไม่ได้รวม 26 อย่างชัดเจนเพราะนั่นเป็นเวอร์ชั่นเคอร์เนลที่คุณกำลังใช้งานอยู่! นั่นคือรุ่นที่เราได้รับจากคำสั่งuname -rจำได้ไหม? เราไม่ต้องการลบมัน!
  • ไม่รวม 28 เนื่องจากเป็นสิ่งที่การอัปเกรดของคุณพยายามอัปเกรดเป็น (คุณสามารถบอกได้ว่าจากiFสถานะถัดไปหมายความว่ามันเป็น "การกำหนดค่าครึ่ง")
  • ไม่รวม 25 เพราะโดยปกติแล้วเป็นวิธีปฏิบัติที่ดีในการออกรุ่นเก่าอย่างน้อยหนึ่งรุ่น ดังนั้นเมื่อคุณทำงาน 26 เราจะเก็บ 25 ดังนั้นเราจะไม่รวมในคำสั่งด้านบน

ดังนั้นหากตัวเลขสุดท้ายในuname -r26 (หรือ 28 หรือ 25) ดังนั้นมันปลอดภัยที่จะเรียกใช้คำสั่งดังกล่าว ป้อนรหัสผ่านของคุณเมื่อได้รับแจ้งและพิมพ์yเมื่อถูกถาม สิ่งนี้จะแสดงบรรทัดจำนวนมากและในที่สุดจะกลับไปที่พร้อมท์คำสั่ง (ในกรณีของคุณmatty@matty-G41M-ES2L:~$) หวังว่าจะไม่มีข้อผิดพลาด เมื่อมันทำทำและดูที่บรรทัดสุดท้ายหนึ่งที่เริ่มต้นด้วยdf -h /dev/sda1คุณควรพบว่าขณะนี้มีพื้นที่เพิ่มขึ้นและเปอร์เซ็นต์ที่ใช้น้อยกว่า 100% เหมือนเมื่อก่อน ตอนนี้คุณสามารถดำเนินการอัปเดตได้อีกครั้ง


1
มันใช้งานได้ !!! ขอบคุณมาก! คำถามโบนัส: เมื่อฉัน dowloaded Ubuntu ครั้งแรกฉันบังเอิญลบโฟลเดอร์ "รูปภาพ" ในพื้นที่บ้าน ด้วยเหตุนี้จึงไม่มีแท็บ "รูปภาพ" อยู่ด้านข้าง ฉันได้รับสิ่งนี้โดยเพียงแค่สร้างโฟลเดอร์ที่เรียกว่า "รูปภาพ" แต่มันไม่ปรากฏในแถบด้านข้าง คุณรู้วิธีเดินทางไปที่นั่นหรือไม่? ฉันพยายามคลิกและลาก แต่ก็ไม่มีประโยชน์ @Alaa
carmatt95

3
ยินดีต้อนรับคุณ! สำหรับคำถามอื่นให้สร้างคำถามอื่นแล้วฉันจะตอบ ด้วยวิธีนี้ผู้ที่กำลังค้นหาปัญหานั้นสามารถค้นหาได้
Alaa Ali

13
ฉันหวังว่าฉันจะสามารถลงคะแนนได้ทุกครั้งที่ฉันกลับมาอ้างอิงมัน ... ตอนนี้มันมีจำนวนมาก
sevenseacat

4
ใช่กลับมาที่นี่อีกครั้งเพื่ออ้างอิงในสิ่งเดียวกัน คุณคงคิดว่าฉันจะจำมันได้แล้ว
sevenseacat

2
คำสั่งที่รัดกุมยิ่งขึ้นในการกำจัดเมล็ดเก่าทั้งหมดคือ:sudo apt-get autoremove --purge
ctrueden

42

คุณสามารถติดตั้ง Ubuntu-Tweak เพื่อติดตั้งทำตามขั้นตอนต่อไปนี้:

เปิดเครื่อง เพิ่มที่เก็บข้อมูลที่ต้องการด้วยคำสั่ง:

sudo add-apt-repository ppa:tualatrix/ppa

อัพเดตรายการซอฟต์แวร์ด้วยคำสั่ง:

sudo apt-get update

สุดท้ายติดตั้ง Ubuntu Teak ด้วยคำสั่ง:

sudo apt-get install ubuntu-tweak

หลังจากนั้นให้เปิด dash และพิมพ์ "ubuntu tweak"

แล้วไปที่janitorแท็บและเลือกApps, PersonalและSystemตรวจสอบกล่องและคลิกที่cleanปุ่มด้านล่างขวา


9
ดีกว่า messing กับ command line และพยายามที่จะลบเมล็ดทั้งหมด แต่ไม่เป็นปัจจุบันเมื่อพวกเขามีรุ่นที่แตกต่างกัน (ไม่เพียง -32 ในตอนท้าย) และแพ็คเก็ต -extra Ubuntu ปรับแต่งบันทึกฉัน 5 นาทีขอบคุณ!
POMATu

สะดวกกว่ามาก
Saeed Amiri

ฉันไม่สามารถเพิ่ม PPA ได้ แต่ฉันดาวน์โหลด.debจากเว็บไซต์ของ proyect ที่ubuntu-tweak.com
Luigi Siri

ไม่จำเป็นต้องเพิ่ม PPA บน Ubuntu 14.04
Edward Torvalds

1
@edwardtorvalds แน่นอนคุณสามารถติดตั้งได้โดยไม่ต้องเพิ่ม PPA ใน 14.04 และ 14.10 ด้วย.debแพ็คเกจ แต่มันไม่ได้เป็นที่นิยมมากที่สุด เหตุผลที่คุณต้องการติดตั้งผ่าน PPA นั้นเป็นเพราะช่วยให้มั่นใจได้ว่าการอัพเดต
αғsнιη

17

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

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')") 

การทำเช่นนี้ควรเพิ่มเนื้อที่ว่างให้เพียงพอสำหรับการอัปเกรด



3

ในระบบ Ubuntu ที่บ้านของฉันฉันทำตามวิธีที่คล้ายกันกับโพสต์นั้น แต่มันก็ง่ายขึ้นเล็กน้อย

  1. ฉันจะตรวจสอบสิ่งที่ใช้เคอร์เนลที่ใช้เพราะมีความจำเป็นที่จะไม่ยุ่งกับสิ่งนั้น

    uname -a
    
  2. จากนั้นฉันดู / boot โดยมีจุดประสงค์ในการลบไฟล์เคอร์เนลทั้งหมดที่ไม่เกี่ยวข้องโดยตรงกับเคอร์เนลที่กำลังทำงานอยู่ นี่ให้รายการของเคอร์เนลทุกเวอร์ชั่นที่ฉันต้องการลบตัวอย่างเช่น: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. ตอนนี้ฉันใช้เคอร์เนลเวอร์ชันแรกในรายการล้างข้อมูลและค้นหาแพ็คเกจทั้งหมดที่เกี่ยวข้อง

    dpkg -l | grep 3.5.0-17
    
  4. ล้างพวกเขาออกจากระบบ

    sudo apt-get purge <list of packages separated by spaces>
    
  5. ย้อนกลับไปที่ 3 และเลือกรุ่นเคอร์เนลถัดไปในรายการล้างข้อมูลของฉัน

  6. เสร็จสิ้น


1

ฉันได้รับข้อผิดพลาดนี้บทความนี้ช่วย

ฉันใช้df -hเพื่อระบุว่าการบูตเต็มuname -rสำหรับรุ่นจากนั้นใช้purgeสตริงที่แสดงด้านบนเพื่อลบเมล็ดเก่า เคอร์เนลล้างเดียวทำงานหลายไม่ได้ (สำหรับฉัน)

ฉันพบไฟล์ในสิ่ง windows; ฉันไม่สามารถลบได้ต้องใช้เทอร์มินัล แต่มันแสดงเวอร์ชันเก่าที่ฉันมีให้

ฉันไม่รู้ว่าทำไม / boot (sda2) ถูกแบ่งพาร์ติชันเลยและทำไมมันถึงเล็กมาก แต่ตอนนี้ฉันสามารถใช้ Ubuntu updater ได้อีกครั้ง

ผมมีความสำเร็จเล็ก ๆ น้อย ๆ ที่มีsudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, ยังพยายาม BleachBit ซอฟต์แวร์ฟรี ใช้สตริงการล้างข้อมูล แต่ไม่ใช่ในเวอร์ชันปัจจุบันของคุณ หวังว่านี่จะช่วยใครซักคน


แก้ไข: ฉันไม่คิดว่าคุณจะต้องเพิ่ม "-generic" ลงในสตริงการล้าง
Brian P

0

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

dpkg -l "linux-image*" | grep "^i"

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

ฉันขอแนะนำให้ดูที่inux-headers , linux-image-extras ที่เกี่ยวข้อง (ถ้ามี), linux-sourceและแพ็คเกจlinux-toolsซึ่งอาจติดตั้งพร้อมกับแพ็คเกจภาพ linux ที่ไม่ได้ใช้


0

ฉันสงสัยว่ามีหลายคนที่จะเจอกับปัญหานี้ แต่ฉันจะเอามันใส่ไว้ที่นี่เพื่อเป็นเอกสารในกรณีที่ใคร ๆ ก็ต้องการ

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

  • $ cd /usr/src ไดเร็กทอรีที่เคอร์เนลต้นทางอยู่
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

คำตอบของmarianojuapt purgeช่วยจริงๆยกเว้นว่าผมได้รับข้อผิดพลาดในการใช้ ฉันไม่พบตัวเลือกการบังคับ

การรวม dpkg ระดับต่ำลงทำให้ฉันสามารถดำเนินการต่อได้:

sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \
               | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

0

คุณสามารถลองด้วยคำสั่งด้านล่างเพื่อลบแพ็กเกจอิมเมจเคอร์เนลเก่าถ้าคุณมีสิ่งเหล่านั้น

sudo apt autoremove

หลังจากนั้นคุณสามารถอัปเดตได้

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