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

Я получаю сообщение об ошибке в программе обновления программного обеспечения, когда пытаюсь выполнять свои ежедневные обновления. в нем говорится:

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 installationUUID=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       0matty@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% /devtmpfs                    397M  1.1M  396M   1% /runnone                     5.0M     0  5.0M   0% /run/locknone                     992M  1.8M  990M   1% /run/shmnone                     100M   52K  100M   1% /run/user/dev/sda1                228M  222M     0 100% /bootmatty@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 SMPii 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 SMPii 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 SMPii 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 SMPii 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 SMPii 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 SMPii 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 SMPii 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 SMPii 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 SMPiF 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

Примечание: этот ответ предназначен скорее для "объяснения", чем для предоставления наилучшего / самого простого способа удаления старых ядер. Для лучшего / простого способа удаления старых ядер, пожалуйста, ознакомьтесь с другими ответами.

Хорошо, итак, исходя из результатов /etc/fstab вы опубликовали сообщение, похоже, что ваш /boot монтируется на отдельном разделе, а с выхода df -h, этот раздел заполнен. Это связано с тем, что установлены старые ядра, которые не нужны; вы можете сказать это, посмотрев на выходные данные dpkg -l | grep linux-image который вы опубликовали, где вы можете увидеть более одного "linux-образ" с разными версиями. Нам нужно удалить старые версии.

Во-первых, я хочу, чтобы вы выполнили команду uname -r в терминале это покажет вам версию ядра, которую вы используете в данный момент. Мы никогда не хотим удалять эту версию ядра. Команда скажет что-то вроде этого 3.5.0-26- общий. Запишите это число, 26! Следующие команды будут предполагать, что это ядро, которое вы используете.

Команда для удаления старой версии ядра - это:

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 -r равно 26 (или 28, или даже 25), тогда безопасно выполнить приведенную выше команду. Введите свой пароль при появлении запроса и введите y когда его спросят. Это покажет кучу строк и в конечном итоге приведет к возврату в командную строку (в вашем случае, matty@matty-G41M-ES2L:~$), надеюсь, без ошибок. Когда это будет сделано, сделай df -h и посмотрите на последнюю строку, ту, которая начинается с /dev/sda1. Вы должны обнаружить, что теперь в нем больше места и что используемый процент составляет менее 100%, как это было раньше. Теперь вы можете снова приступить к обновлению.

Вы можете установить 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 кнопка в правом нижнем углу.

Быстрый способ удаления всех неиспользуемых ядер и заголовков (за исключением текущего запущенного ядра) был указан @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]+//')") 

Это должно освободить достаточно места для обновления.

Здесь есть сообщение об ошибке по этой проблеме: https://bugs .launchpad.net/ubuntu /+источник/менеджер обновлений/+ошибка/1183692

Не стесняйтесь сообщать, влияет ли "эта ошибка и на вас", чтобы она могла привлечь больше внимания.

В моей домашней системе 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. Сделано

Я получал эту ошибку, эта статья помогла.

Я использовал df -h чтобы определить, что багажник был заполнен, uname -r для версии, затем использовал purge строка, указанная выше, для удаления старых ядер. очистка одного ядра сработала, мульти- нет (для меня).

Я нашел файлы в Windows; Я не мог их удалить, пришлось использовать терминал, но он показал мне старые версии, которые у меня там были.

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

У меня был некоторый незначительный успех с sudo apt-get update,sudo apt-get upgrade, sudo apt-get clean, также попробовал бесплатное программное обеспечение Bleachbit. Используйте строку очистки, но не в вашей текущей версии. Надеюсь, это кому-то поможет.

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

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

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

Вы можете попробовать с помощью приведенной ниже команды удалить старые пакеты образов ядра, если у вас возникли такие проблемы.

sudo apt autoremove

После этого вы сможете выполнить обновление

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

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

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

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

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

Мне просто нужно было запустить "sudo apt-get autoremove`, чтобы исправить это.

Как говорит @Githlar, ваш fstab может предоставить нам информацию о ваших hd-разделах.

fstab - это файл, содержащий информацию о разделах, которые монтируются при загрузке компьютера. Чтобы отобразить содержимое этого файла, введите cat /etc/fstab в терминале. Скопируйте выходные данные и добавьте их в свой вопрос (вы можете отредактировать свой вопрос). Кроме того, скопируйте выходные данные df -h и dpkg -l | grep linux-image.

Ваша проблема заключается в том, что все дополнительные файлы “linux-image …” в разделе “/ boot” занимают много места - у вас есть только 6 МБ свободного места на разделе. `sudo dpkg -P очистит 'older_linux_image_filename", чтобы удалить все, кроме последних версий = 3.5.0-28.48 и 3.5.0-26.42 Это должно позволить вам обновить / обновить.

Кроме того, содержимое вашего /etc/fstab может быть полезным. Похоже, что /boot смонтирован на отдельном разделе.

@Lekensteyn отвечает на этот вопрос лучше, чем ответы в этой теме hard drive - How do I free up more space in /boot? - Ask Ubuntu

Итак, что мне сделать, чтобы получить доступ к fstab? Я довольно неграмотен в Linux. Какие-нибудь аналогии с Windows? @alaa Спасибо за помощь.

FWIW, я только что отправил сообщение об ошибке о первопричине этой проблемы: https://bugs .launchpad.net/ubuntu /+источник/повсеместность/+ошибка/1465050

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