Недостаточно свободного места на диске при обновлении


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в терминале , но я все еще получаю сообщение. Кажется, что все страницы, которые я читаю, предназначены для опытных Убунтуров. Я использую 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 Это должно позволить вам обновить / обновить.
Дуггро

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

... где символы х являются числами. Итак, в вашем случае, поскольку у вас много старых версий (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
да, сюда снова, чтобы сослаться на то же самое. Вы думаете, я бы запомнил это сейчас.
Seseseacat

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 в конце), а также пакеты -extra. Настройка Ubuntu спасла мне 5 минут, спасибо!
POMATu

Гораздо удобнее.
Саид Амири

Я не могу добавить PPA, но я скачал .debс сайта проекта ubuntu-tweak.com
Луиджи Сири

нет необходимости добавлять PPA на Ubuntu 14.04
Эдвард Торвальдс

1
@edwardtorvalds Конечно, вы можете установить его, не добавляя его PPA 14.04, а также 14.10 его .debпакетом, но это не самый предпочтительный. Причина, по которой вы хотите установить это через PPA, заключается в том, что он обеспечивает обновления.
αғsнιη 17.12.14

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" к строке очистки
Брайан P

0

У вас установлены какие-либо старые пакеты образов ядра, которые не используются? Те могут занять место на / boot. Я бы порекомендовал просмотреть набор установленных пакетов ядра с помощью следующей команды:

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

Это должно обеспечить обзор набора установленных пакетов образа ядра. Для тех пакетов linux-image , которые не используются и которые, как ожидается, не понадобятся для целей восстановления - например, например, я хотел бы оставить хотя бы одну версию ядра позади установленной активной версии, для восстановления - в противном случае, Вы можете удалить любые такие неиспользованные пакеты, используя ваш любимый инструмент упаковки, например, aptitude.

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


0

Я сомневаюсь, что многие, если таковые возникнут, столкнутся с этой проблемой, но я выкладываю ее здесь для документации на случай, если кому-то это понадобится.

Моя проблема в том, что я собирал разные пользовательские ядра, пока у меня не закончилось место. Чтобы очистить пространство, мне нужно было войти в каждый каталог ядра, в котором я работал, и запустить a sudo make clean.

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

0

Ответ Марианою действительно помог, за исключением того, что я получил ошибку, используя 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.