Фотогалереи

Услуги

Помощь при использовании сайта

Обновление Gentoo Linux

Обновление Gentoo Linux несколько нетривиально по сравнению с другими дистрибутивами. В user-friendly дистрибутивах таких как Mandriva, OpenSUSE, Ubuntu за Вас все сделает менеджер управления пакетами, достаточно лишь озадачить его этим. В Gentoo Linux также имеется система управления пакетами под названием Portage которая разруливает зависимости и делает процесс обновления намного легче чем например в Slackware.

Однако в силу того что Gentoo является source-based дистрибутивом (весь софт компилируется из исходных кодов) появляются некоторые особенности. Например Вы не сможете обновить ядро автоматически как в Ubuntu где оно поставляется одинаковым для всех.
Для начала нам нужно иметь работающее подключение к интернету и прописанную переменную адреса сервера в файле /etc/make.conf с которого будет обновляться дерево portage. Я обновляюсь с зеркала яндекс поэтому в make.conf прописал именно его

GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"

Следующим шагом нужно синхронизировать дерево портов командой

emerge --sync

Далее запускаем полное обновление системы с учетом всех зависимостей:

sudo emerge -avquDN world

Portage выведет список всех доступных обновлений с указанием версий пакетов и используемых USE флагов
Если список используемых USE флагов и пакетов для обновления Вас устраивает можно начать сборку.

В качестве небольшого хинта: Для того чтобы не писать каждый раз emerge и некоторые его постоянно использующиеся ключи я добавил алиасы (добавочные имена) в файлы ~.bashrc и .bash_profile. Чтобы в будущем упростить ввод впишем в вышеназванные файлы строчку

EM="sudo emerge -avq"

Теперь команда

EM

будет соответствовать команде

sudo emerge -avq

Если в списке обновляемых пакетов есть хотя бы один из составляющих toolchain (glibc, gcc, binutils, linux-headers), то желательно пересобрать эти пакеты два раза, после чего пересобрать весь мир (world).

emerge -1avq linux-headers glibc binutils gcc-config gcc binutils-config libtool

На самом деле это не обязательно по крайней мере если после обновления тулчейна все ПО работает также стабильно. Делается это в основном потому что glibc и другие пакеты из toolchain используются для сборки всех остальных пакетов и пересборка мира новым тулчейном позволит использовать преимущества имеющиеся в новой версии в масштабе всей системы.

Мантейнеры Gentoo конечно заботятся о пользователях и выпускают собственные патчи для того чтобы все пакеты собирались нормально, но все же иногда (возможно по недосмотру пользователя) отдельные пакеты отказываются собираться без вмешательства юзера, например как здесь.
Для того чтобы продолжить сборку с того же места где она остановилась запускаем

EM -uDN world --resume

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

EM -uDN world --resume --skipfirst

После удачной сборки не забываем запустить скрипт

revdep-rebuild

который произведет в системе поиск исполняемых файлов со сломанными зависимостями и пересобрав их сделает перелинковку. Заключительным этапом будет запуск

dispatch-conf

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

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

3
7 votes
Ваша оценка: Нет


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя measles

Про "наличие изменений в конфигурационных файлах" и как их править можно было бы и подробнее, для меня это единственная головная боль в Gentoo никак не могу разобраться грамотно.

Аватар пользователя admin

Здесь дело в том, что нельзя однозначно ответить какие именно файлы затронут обновления и тем более нельзя сказать как их поправить так как многое индивидуально. Само использование dispatch-conf достаточно простое. При его запуске отобразится конфиг в который по мнению системы должны быть внесены изменения. Строки начинающиеся с "+" это строки которые будут добавлены в тот или иной конфиг, а те которые начинаются с "-" будут убраны. Соответственно нажав "u" конфиг будет обновлен, нажав "z" конфиг останется прежним, нажав "e" будет запущена ручная правка конфига с последующим его сохранением.
P.S. Я тоже не особо знаю bash и такие скрипты как udev-postmount, busybox тупо заменяю на новые, а те которые правил сам - оставляю как было. Была один раз проблема с xdm но я решил ее быстро.