Установил я Gentoo... А дальше что?
Обновление системы состоит из четырёх основных этапов.
Первый этап: обновление собственно дерева portage (и/или используемых дополнительных оверлеев).
Осуществляется командой emerge --sync
В зависимости от способа подключения к Сети и предпочтений по стратегии обновления могут потребоваться (или пригодиться) утилиты emerge-webrsync
и/или emerge-delta-webrsync
(app-portage/emerge-delta-webrsync).
К части стратегии стоит отметить, что не смотря на наличие инструментов, делающих это не обязательным, наименьшее количество проблем наблюдается в ситуации, когда используемое ПО соответствует срезу portage.
Второй этап: собственно обновление.
Сначала установленных программ:
emerge -pvuND --with-bdeps=y world
Почитать вывод. При необходимости устранить блокировки (дополнить/проправить список USE-флагов в /etc/make.conf
и /etc/portage/package.use
).
Согласиться с предлагаемой последовательностью действий (или исправить её в соответствии со своими представлениями о здравом смысле).
После чего собственно:
emerge -uND world
Также, иногда, полезна опция --with-bdeps=y которая заставляет обновиться пакеты требующиеся только во время сборки пакета, даже в том случае когда пакету который их вытянул обновление не требуется.
Обновление конфигурационных файлов:
etc-update
(или dispatch-conf
или ...)
Третий этап: Зачистка системы:
1. Проверка и пересборка битых зависимостей в исходном положении: revdep-rebuild
В случае обновления python
'а --- python-updater
.
2. Удаление ставших ненужными пакетов:
emerge -pv --depclean
смотреть что цепляет лишнего (если цепляет --- установить его явно, через --no-replace), если удаляет что-то из существенного (gcc, python, возможно xorg) --- реконфигурировать систему в соответствии с руководствами с gentoo.org.
И собственно удалить:
emerge --depclean
3. Ещё раз проверить на предмет сломанных зависимостей (revdep-rebuild
.
4. Удалить неиспользуемые исходники:
eclean-dist
Четвёртый этап: обновление ядра.
Ядро --- особый пакет. И отношения к себе заслуживает особого.
portage удаляет только те файлы, который сам клал.
Поэтому после обновления в /usr/src остаёся каталог kernel-$VERSION
, содержащий оставшиеся после сборки ядра временные файлы.
Его (как и /lib/modules/$VERSION
) можно удалить ручками (но только когда они совсем не нужны, до получения подтверждения полной работоспособности нового ядра категорически рекомендуется оставить возможность загрузки с старым ядром!).
Если нет желания каждый раз конфигурировать ядро с нуля, то можно взять за основу существующий конфиг. Обычно (в большинстве виденных мной конфигураций) его можно взять из /proc/config.gz
.
В предположении, что символьная ссылка /usr/src/linux
указывает на каталог, содержащий исходники ядра, которое предполагается собирать рекомендуемая последовательность команд следующая:
# cd /usr/src/linux # gzcat /proc/config.gz > .config # make oldconfig # make menuconfig # make && make modules_install # mount /boot # cp arch/$ARCH/boot/bzImage /boot/linux-$VERSION fix lilo config # /sbin/lilo
P.S. Если что не так. Какой соломки и куда стелить.
Рекомендую почитать man portage
на предмет FEATURES.
В качестве минимального набора рекомендую FEATURES="collision-protect buildsyspkg" (прописывать в /etc/make.conf, по первой предупреждение: portage не всегда корректно удаляет за собой символьные ссылки).
- Для комментирования войдите или зарегистрируйтесь
В случае обновления Perl'а
В случае обновления Perl'а предусмотрен инструмент для автоматизации пересборки использующих оный приложений (аналогичный
python-updater
'у) ---perl-cleaner
.:wq
--
Live free or die
System.map
Добавь пожалуйста
В случае установки новых компонентов в компьютер - этот момент может быть критичным.
make install в директории с
make install в директории с исходными кодами скопирует vmlinuz-X.Y.Z config-X.Y.Z и System.map-X.Y.Z. в директория /boot, если /boot вынесен на отдельный раздел удостоверьтесь, что он примонтирован перед выполнением этой команды.
Интересный тезис
Видится мне, суть порождение практики использования genkernel'а.
Ибо в моём случае (вариант #1: x86,
/boot
на отдельном разделе, в качестве загрузчикаlilo
) для актуального ядра (установлено по kernel-upgrade.xml) имею::wq
--
Live free or die
System.map
При ручной сборке ядра собирается и System.map
подробности про System.map на Wikipedia
честно говоря я не уверен насчет правильности /boot/.map
хотя если в lilo.conf прописано map=/boot/.map
то должно работать
.map <> System.map !!!
Есть мнение, что это _сильно_ разные файлы (согласно странице руководства на современном железе директива
map
lilo.conf
избыточна).Дело не в типе "сборки", а в используемой процедуре (
make install
скопирует тебе иSystem.map
).ЗЫ: http://www.dirac.org/linux/system.map/ зеркало http://rlworkman.net/system.map/
:wq
--
Live free or die