Недостатньо вільного місця на диску під час оновлення


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термінал, але все одно отримую повідомлення. Усі прочитані сторінки здаються досвідченим Ubuntuers. Я запускаю 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 встановлений на окремому розділі.
Чак Р

1
Як каже @Githlar, ваш fstab може дати нам інформацію про ваші HD-розділи.
ssoto

1
fstab - це файл, який містить інформацію про розділи, встановлені під час завантаження комп'ютера. Щоб показати вміст цього файлу, введіть cat /etc/fstabтермінал. Скопіюйте висновок та додайте його до свого питання (ви можете редагувати своє запитання). Також скопіюйте вихід df -hі dpkg -l | grep linux-image.
Алаа Алі

1
Ваша проблема полягає в тому, що всі зайві linux-image...файли в /bootрозділі займають простір - на розділі у вас є лише 6 МБ. 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-зображення " з різними версіями. Нам потрібно видалити старі версії.

По-перше, я хочу, щоб ви запустили команду 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
Це спрацювало!!! Дуже дякую! Питання про бонус: коли я вперше завантажив Ubuntu, я випадково видалив папку "малюнки" в домашній області. З цього приводу немає вкладки "картинки" збоку. Я обійшов це, просто створивши папку під назвою "малюнки", але вона не відображається в бічній панелі. Чи знаєте ви, як його туди дістати? Я спробував натиснути та перетягнути, але безрезультатно. @Alaa
carmatt95

3
Ласкаво просимо! Для іншого питання створіть ще одне запитання, і я відповім на нього. Таким чином, люди, які шукають цю проблему, можуть її знайти.
Алаа Алі

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

Після цього відкрийте тире і наберіть "ubuntu tweak".

А потім перейдіть на janitorвкладку та виберіть Apps, Personalі Systemпоставте прапорці та натисніть cleanкнопку внизу праворуч.


9
Набагато краще, ніж возитися з командним рядком і намагатися видалити всі ядра, але не поточні, коли вони мають навіть різні версії (не тільки -32 в кінці), а також -екстра-пакети. Налаштування Ubuntu врятувало мене 5 хвилин, дякую!
POMATu

Набагато зручніше.
Saeed Amiri

Я не можу додати PPA, але я завантажив .debз веб-сайту probuct ubuntu-tweak.com
Luigi Siri

не потрібно додавати PPA на ubuntu 14.04
Едвард Торвальдс

1
@edwardtorvalds Звичайно, ви можете встановити його, не додаючи свій .debпакет PPA 14.04, а також 14.10 своїм пакетом, але це не є найбільш кращим. Причина того, що ви хочете встановити це через його PPA, полягає в тому, що він забезпечує оновлення.
αғsnιη

17

Швидкий спосіб видалити всі невикористані ядра та заголовки (за винятком поточного запущеного ядра) вказав @Lekensteyn у своїй відповіді на питання Як звільнити більше місця в / завантаженні? :

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. Потім я переглядаю / завантажуюся з метою видалити всі пов'язані з ядром файли, не пов'язані безпосередньо з запущеним ядром. Це дає мені список усіх версій ядра, які я хочу видалити, наприклад: 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рядок, перелічений вище, для видалення старих ядер. Очищення однієї ядра працювало, multi - не (для мене).

Я знайшов файли у вікні річ; Я не міг їх видалити, довелося використовувати термінал, але це показало мені старі версії, які я мав там.

Я поняття не маю, чому / boot (sda2) взагалі розділений і чому його так мало. але тепер я можу знову використовувати оновлення Ubuntu.

Я мав деякий незначний успіх sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, також спробували вільної програмним забезпечення BleachBit. Використовуйте рядок очищення, але не в поточній версії. Сподіваюся, що це комусь допоможе.


редагувати: я не думаю, що вам доведеться додавати "-generic" до рядка чистки
Brian P

0

Чи встановлені старі пакети зображень ядра, які не використовуються? Вони можуть займати місце на / завантаження. Я рекомендую переглянути набір встановлених пакетів ядра з такою командою, як:

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

Це має забезпечити огляд набору встановлених пакетів зображень ядра. Для тих пакетів зображень linux , які не використовуються, і які, як очікується, не потрібні для цілей відновлення - наприклад, наприклад, я люблю тримати принаймні одну версію ядра за встановленою активною версією, для відновлення - інакше, ви можете видалити будь-які такі невикористані пакети, скориставшись улюбленим інструментом упаковки, наприклад, apfit.

Я також рекомендую ознайомитись із пов'язаними inux-заголовками , додатковими додатками linux-image (якщо це можливо), також linux-source та пакетами linux-інструментів , які можуть бути встановлені разом із будь-якими невикористаними пакетами linux-образів .


0

Я сумніваюся, що багато людей, якщо вони є, зіткнуться з цим питанням, але я викладаю його тут для документації, якщо хтось потребує цього.

Моє питання полягає в тому, що я збирав різні спеціальні ядра, поки не вистачало місця. Як мені довелося прибирати простір, було входити в кожен каталог ядра, в якому я працював, і запускати sudo make clean.

  • $ cd /usr/src Каталог, де знаходиться джерело ядра
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

Відповідь marianoju дійсно допомогла, за винятком того, що я отримав помилку при використанні apt 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

Після цього ви можете зробити оновлення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.