Мой / загрузочный раздел ударил 100%, и теперь я не могу его обновить. Не удается удалить старые ядра, чтобы освободить место

Хороший способ отладки сбоев в процессе после старта (/etc/init/mysql.conf) - проверить журналы выскочки:

sudo tail -f /var/log/upstart/mysql.log 

Это дало мне ошибку сокета:

: «Не удается подключиться к локальному серверу MySQL через сокет

. В моем случае это было вызвано отсутствием параметра user в группе [mysqld] в my.cnf

1
задан 27 April 2018 в 10:23

10 ответов

В моем случае команды apt и команда dpkg не могут быть завершены и не могут быть удалены. Автоудат не удалось установить 2.6.32-56-server.

Мой первый шаг состоял в том, чтобы определить пространство, которое будет использоваться,

cd /boot
du -sk *|sort -n

У меня было около 30 ядер и поддерживающих файлов.

Я сделал uname -a, чтобы получить запущенное ядро, я обнаружил, что я был на Linux alternate 2.6.32-43-server и сделал tar из 6 версий, которые не были запущены, и были старыми.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Затем я сделал rm -rf того, что я сделал резервную копию:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

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

Теперь, когда у меня было некоторое место на /boot, я смог запустить

apt-get -f install 

Чтобы очистить неудачную установку 2.6.32-56-server.

Затем я сделал

apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Это дало мне возможность вернуть обратно то, что я создал.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Чтобы очистить, я тогда мог запускать :

apt-get autoremove

Я перезагрузился и теперь дошел до использования 4% от /boot.

56
ответ дан 25 May 2018 в 07:59
  • 1
    Это было самым полезным для меня из всех предложений. Большое спасибо! – Joshua F. Rountree 28 March 2015 в 05:53
  • 2
    удаление файлов из / boot просто ужасно ломает apt и dpkg, так как их сценарии установки и удаления не работают HARD, когда файлы отсутствуют. Я не понимаю, как вы это сделали. – FizxMike 12 June 2016 в 01:54

Вы можете использовать dpkg вместо apt-get для удаления старых ядер:

sudo dpkg -r linux-image-3.2.0-29-generic
19
ответ дан 25 May 2018 в 07:59
  • 1
    Может быть, есть плюсы для использования этого, но предложение @ mreiter работало для меня, когда этого не было (этот был предложен на канале поддержки IRC ubuntu). – Aaron Hall 28 March 2015 в 17:09
  • 2
    @AaronHall Этот ответ просто содержит ключевую часть ответа mreiter (последняя строка), и он намного короче, поскольку он не охватывает очистку заголовков (что не помогает в случае отдельного раздела /boot ). – Melebius 6 April 2017 в 13:27

Я заметил, что в загрузочном каталоге все еще есть файлы старых версий:

$ ls /boot
vmcoreinfo-2.6.31-17-server

И диспетчер пакетов будет перечислять старые версии:

dpkg -l | grep linux-image

I поэтому [this] []

dpkg -l | grep linux-headers

Я сделал это:

sudo apt-get purge linux-headers-2.6.32-34

Наконец, остался один пакет, который я не смог удалить с помощью apt-get purge:

$ dpkg -l | grep linux-image
rc  linux-image-2.6.28-11-server

Источник: удалите пакет, помеченный как rc, dpkg

sudo dpkg --purge linux-image-2.6.28-11-server
9
ответ дан 25 May 2018 в 07:59

Это то, что я использовал:

sudo apt-get autoremove linux-image-xxxx

Сделайте это для всех старых ядер и сохраняйте только последние два.

Если вы хотите автоматически удалить старые ядра и обновить GRUB см. это: Документация Ubuntu

2
ответ дан 25 May 2018 в 07:59
  • 1
    Это должен быть принятый ответ. Если вы не против очистки всего, вам даже не нужно указывать образ Linux. – CyberEd 22 December 2016 в 08:34

Вы не можете воздействовать на пакеты, но вы можете воздействовать на другие файлы. Сначала пройдите через домашнюю папку и посмотрите, есть ли что-нибудь, что вы можете удалить. Если нет, попробуйте переместить большое количество файлов в другой раздел (или флэш-диск), а затем попробуйте sudo apt-get install -f очистить проблемы с зависимостью пакета (скорее всего, вы установили файл .deb через dpkg), а затем очистить любые старые ядра. Как только вы благополучно будете иметь не менее 10 МБ, попробуйте очистить ненужное программное обеспечение или файлы.

2
ответ дан 25 May 2018 в 07:59

Используйте диспетчер пакетов Synaptic. Просто выберите пакет, который хотите удалить, и он попросит вас также удалить пакеты, зависящие от него. По моему опыту, пакеты ядра всегда входят в группы из двух (или более, в зависимости от того, как вы считаете), которые являются взаимозависимыми. Обычно вы можете быстро найти старые, используя «локальный / устаревший» фильтр.

1
ответ дан 25 May 2018 в 07:59
  • 1
    Например. на сервере (только для текста) отсутствует Synaptic. На самом деле это не очень выгодное решение для серверов. – nerdoc 31 August 2017 в 23:41

Запустите это:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

Источник: Я получаю эту ошибку после обновления. пожалуйста, помогите

1
ответ дан 25 May 2018 в 07:59
  • 1
    что делает sudo dpkg-reconfigure -a это делать? На Ubuntu 16 говорится о неизвестном варианте -a – Shivam Kotwalia 28 November 2017 в 11:59
  • 2
    Для этого вопроса apt не удастся удалить пакеты ядра, поскольку сам процесс удаления генерирует файлы в /boot, который уже заполнен. Вот почему apt-get autoremove терпит неудачу. Вопрос, который вы ищете, - askubuntu.com/q/142926/158442 , который уже имеет autoremove. – muru 23 January 2018 в 09:52
  • 3
    @muru Я просто разместил его, потому что он сделал трюк, для меня: D – Ardi Nusawan 23 January 2018 в 18:06
  • 4
    Я уверен, что это так, я говорю, что ваша проблема была бы другим вопросом, а не этим. – muru 23 January 2018 в 18:08
  • 5
    @muru oh ok получил это: D – Ardi Nusawan 23 January 2018 в 18:10

Просто запуск sudo apt-get -f autoremove разрешил мою проблему.

0
ответ дан 25 May 2018 в 07:59
  • 1
    У вас было 100% дисковое пространство / загрузка? – ubashu 27 April 2018 в 09:58
  • 2
    Не смотря на мою историю мониторинга, этого не произошло. PS: Я нахожусь в Vagrant xenial, и моя загрузочная файловая система /dev/sda1 установлена ​​на / – ForzaGreen 29 April 2018 в 14:26

Я обнаружил, что единственное, что сработало для меня, это использовать Aptitude.

sudo aptitude

Затем, когда он открывается, он обычно скажет что-то о неудовлетворительных зависимостях внизу. Вы можете нажать на букву g, чтобы продолжить предлагаемое удаление. Он перенесет вас на страницу, где будет указано, что произойдет.

Рядом с разбитыми ядрами должен быть минус -. Нажмите g еще раз, и он удалит сломанные ядра. Нажмите q, чтобы выйти. Затем вы сможете использовать sudo apt-get autoremove, чтобы избавиться от старых ядер и освободить место.

0
ответ дан 25 May 2018 в 07:59

Проверьте использование /var/tmp с du -sh /var/tmp/. Все файлы в этой папке можно удалить, чтобы освободить место.

Затем вы можете запустить следующее, чтобы удалить старые ядра:

sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub
0
ответ дан 25 May 2018 в 07:59
  • 1
    Что /var/tmp связано со старыми ядрами? И не всегда безопасно удалять все в /var/tmp ... – ubashu 27 April 2018 в 10:09

Другие вопросы по тегам:

Похожие вопросы: