Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20090426

Недостаточно места для обновления дистрибутива?

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

У меня разбиение диска такое: корневой раздел / 10 гигабайт, на нём же /var/cache/. Обычно свободно около 1 гигабайта (поудаляв редко используемое, можно освободить 2 ГБ). Для обновления система затребовала больше 4,5 гигабайт — новые пакеты нужно куда-то скачать. Что делать, не переразбивать же диск только ради апгрейда? Тем более, что всё остальное время мне такого / вполне хватает.

Есть выход. Дополнительное место нужно для временного размещения скачанных пакетов. Потом оно будет не нужно (обычные обновления системы не требуют многих гигабайт). В Debian/Ubuntu скачанные пакеты помещаются в /var/cache/apt/archives/. И я просто временно разместил этот каталог на внешнем диске, где места достаточно.

Дополнение: ниже описано, как поступил я. Как подсказывают в комментариях, можно было поступить гораздо проще:
$ sudo mount --bind /каталог/в/разделе/где/много/места /var/cache/apt/archives
Признаюсь, что можно сделать --bind, просто забыл. В следующий раз попробую.


Действовал же так:

1) Сделал резервную копию текущего состояния archives/:
$ sudo rsync -avz --delete /var/cache/apt/archives ~/backup/var-cache-apt-archives

2) На диске, где вдоволь свободного места создал файл, в котором собираюсь разместить временный раздел под архивы (6 ГБ):
$ dd if=/dev/zero of=aptcache.img bs=1k count=6291456

3) Отформатировал этот файл как обычный раздел:
$ mke2fs aptcache.img

4) Подключил этот этот файл на место /var/cache/apt/archives/ (скрыв этим настоящий archives/):
$ sudo mount -o loop aptcache.img /var/cache/apt/archives/

5) Скопировал в него всё из старых archives/ (необязательно, там просто архив уже скачанных пакетов):
$ sudo rsync -avz ~/backup/var-cache-apt-archives/archives/ /var/cache/apt/archives/

6) Проверяю сколько свободного места есть, вижу, что теперь достаточно:
$ df -h / /var/cache/apt/archives/
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 9.5G 7.0G 2.1G 78% /
/dev/loop0 6.0G 12M 5.6G 1% /var/cache/apt/archives

Далее обновляю систему как обычно. После обновления системы можно сделать apt-get clean (удалить скачанные пакеты) и отключить временный /var/cache/apt/archives/.

14 коммент.:

  1. А банальной мягкой ссылки не хватило бы? Типа
    mv /var/cache/apt/archives /mnt/large_dist/
    ln -s /mnt/large_disk/archives /var/cache/apt/archives

    ОтветитьУдалить
  2. Может и хватило бы, надо пробовать. В следующий раз :)

    Мне кажется, что мягкой ссылки не хватило бы, потому что, скорее всего, программа обновления просто смотрит свободное место на разделе с /var/cache/apt/archives и могла бы всё равно ругнуться. Хотя может она и достаточно умная, чтобы проверять раздел, куда ссылка указывает, и тогда хватило бы. Не знаю.

    Преимущество описанного способа (с mount), что после перезагрузки всё будет как обычно, никаких дополнительных действий уже не нужно. Символическую ссылку же нужно перед перезагрузкой убрать и ручками вернуть всё как было.

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. ох, а почему не так:
    "mount --bind /папка_на_свободном_диске /var/cache/apt/archives/"
    ? :)

    ОтветитьУдалить
  5. 2 DOMr:

    Ну можно, наверное, и так, согласен. Тут ведь вопрос в том: программа установки поймёт, что места в /var/cache/apt/archives/ достаточно, или ругнётся? df вроде понимает.

    ОтветитьУдалить
  6. +1 mount -o bind лучше всего, Не нужно заморачиваться, бэкап archives тоже делать не нужно, это просто пакеты ранее скачаные и обычно более вам не нужные, чтобы их удалить даже команда спец есть apt-get clean.
    симлинк работать будет (по крайней мере если делать apt-get dist-upgrade или aptitude dist-upgrade)

    вообще линукс не винда - обычно получается as expected а не случайный результат.

    ОтветитьУдалить
  7. 2 Morgoth, 2 DOMr:

    Согласен, --bind проще. Я о нём просто не подумал. Добавил в заметку. Спасибо!

    ОтветитьУдалить
  8. Хотел обновиться, но меня предупредили, что "в 9.04 нет используемого драйвера FGLRX". Решил подождать. Есть кто с видеокарточками ATI - это правда?

    ОтветитьУдалить
  9. 2 legrus:

    Вы это лучше на форуме убунту спросите. Там ваш вопрос скорее увидят. Например, на forum.ubuntu.ru.

    ОтветитьУдалить
  10. Если почти всё на / то этого иногда может не хватить.
    Например если часто будет софт собираться жирный или ядра.
    Место сейчас не дорогое и хдд уже допрыгнули до 2Тб.
    Так что не экономьте, делайте раздел побольше. :)

    ОтветитьУдалить
  11. 2 Raiden:

    Если выбирать между большим /home и большим /, я за большой /home. И 10 ГБ для системы в общем-то до сих пор хватает. Очень требовательные к месту работы делаю в отдельном разделе, но как раз ядра в нём собираются редко, у меня ж не генту :-)

    Да, а 2,5" дисков больше 500 ГБ я пока не видел.

    ОтветитьУдалить
  12. У меня /var/cache/apt/ ссылка на ~/apt и в source.list этот каталог прописан первым. Так повелось еще с Ubuntu 6.06 И все прекрасно работает.

    ОтветитьУдалить
  13. Обновилась таким способом (с bind) с 8.10 до 9.04, спасибо =) полгода уже собиралась это сделать +) Хотела еще обновиться дальше, до 9.10, но убунта требует все равно еще 500 метров на корневом разделе, хоть тресни =((

    ОтветитьУдалить
  14. Хотя свободен почти гиг. Зачем ей столько места для обновления, не понимаю +))

    ОтветитьУдалить