Оптимальна процедура оновлення Gentoo Linux?


23

Ось так я довго вдосконалював Gentoo. Це рекомендований метод? Будь-які прийоми чи кращі методи використання?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
Я додаю прапор -N на новий персонаж
Том Ріттер,

2
--tree (-t) також зручний для розуміння того, що відбувається
lkraav

Відповіді:


5

Схоже, ви це накрили. Єдина інша порада - можливо, це зробити трохи повільніше, ніж сліпе оптове оновлення. Ви завжди можете оновлювати пакунки або ланцюги залежностей окремо, emerge -DNuav <atom>а не worldвикористовувати (для використання --oneshot для речей, які ви не хочете додавати у світовий файл, наприклад системних файлів).

Зауважте, що це завжди простіше, якщо ви регулярно оновлюєтесь, а не збираєтесь проводити оновлення монолітних пакетів кожні пару місяців. Крім того, щоб уникнути занадто багатьох сюрпризів, вам може бути корисним підписатися на один із списків розсилки, як-от gentoo-user(ПОПЕРЕДЖЕННЯ: ~ 100 повідомлень на день у цьому списку), оскільки, швидше за все, будь-які основні проблеми оновлення відображатимуться у списку велика кількість дискусій, що пояснюють, як їх вирішити.

Я б припустив, що наступним головним "проблемним" оновленням стане міграція до openrc, коли вона стане стабільною (це було зроблено в ~ арці в середині минулого року iirc лише з кількома проблемами, насамперед із змінами в мережі).


2
Так, напевно +1 на постійному оновленні регулярно, а не на величезних шматках. Є випадкові зміни, які просто сильно ламають. github.com/lkraav/gentoo-cron-weekly - це мій спрощений набір інструментів щотижневої звітності.
lkraav

8

Я використовую ті ж кроки, що ви робите, за винятком:

  • eix-syncзамість того, emerge --syncщо мені подобається бачити зміни дерева переносу. Це особливо добре, помічаючи нові пакунки, які я можу встановити.

  • layman -S (періодично) до появи головного, щоб синхронізувати будь-які зміни в накладках.

  • eclean-dist -dпісля revdep-rebuildочищення застарілих тарболів. Я роблю це після кожного появи, тому що знижувальний пакет пакетів не є таким поширеним явищем.

  • eix-test-obsoleteяк останній крок, щоб допомогти зберегти мої / etc / portage файли акуратними та актуальними. Це також дає мені знати, коли я встановив пакети, які були повністю вилучені з portage, тому мені потрібно перейти до ebuild із сховища. Нещодавній приклад: я маскую всі версії iproute2> 2.6.22.20070710 через старіші ядра, що працюють на моєму Xen VPS, але його недавно було видалено з portage.

eix-syncі eix-test-obsoleteзнаходяться в app-portage / eix.

eclean-dist знаходиться в додатку / gentoolkit.


+1 для eix-sync
Тім

5
  1. emerge --syncабо eix-syncабо emerge-delta-webrsyncіeix-update
  2. emerge -av portage
  3. eclean-dist

Переконайтесь, що один з заголовків Linux, glibc, binutils, libtool або gcc має оновлення magor (наприклад, оновлення gcc з 4,6 до 4,8). Якщо це не перейти до кроку 11.

Повна перебудова:

  1. rm -rf PKGDIR/* Замініть PKGDIR на свій шлях до dir пакета!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Перехід на новий gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Якщо у вас є проблеми на кроці 10 або 11, виправте її та спробуйте ще раз

Світ оновлень:

  1. Очистіть свій світовий файл /var/lib/portage/worldвід непотрібних пакетів і перевірте /etc/portageоб'єкти
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

Якщо у вас є проблеми на кроках 14-18, виправте це та повторіть усі кроки з кроку 13

  1. etc-update або dispatch-conf
  2. glsa-check -vp affected Ви можете вплинути на пакунки в слотах після оновлення
  3. emaint --check all

3

Якщо ваша мета - мати абсолютний останній з усіх пакунків, то так, це, здається, охоплює всі основи. Я здивований, що це працювало для вас давно, тому що я думаю, що вас часто кусають блоки, зламані депо тощо вибираючи натомість зробити це частинкою після перегляду дерева оновлення. Здається, розвиток Gentoo минув свій розквіт. Можливо, це через підйом Ubuntu.

У будь-якому разі, одна додаткова річ, яку ви можете спробувати, просто щоб бути дуже прискіпливою до всього процесу, - це очищення ваших невдач. Якщо ви шукаєте, є сценарії.


1
Якщо ви дотримуєтесь розкритих споруд, Gentoo став досить стійким на мою думку, і не кожен насправді ламається завдяки синхронізації та новому світу. Вам потрібно знати, що ви робите, але те ж саме можна сказати і про влучний або смачний. Мене вони покусали обох.
Джон Дауні

1
Три дуже недавніх блокування / поломки, які я можу придумати, - це libcomerr / e2fsprogs, firefox2 / 3 та xorg 1.3 / 1.5. У всіх цих випадках для оптового оновлення працювало нетривіальне масажування, і жодних ключових слів не було.
Адам Д'Аміко

2
Останні версії portage - скажімо, за останні 6 місяців - автоматично вирішують майже всі блоки та перерви. У тому числі libcomerr / e2fsprogs.
Ден Карлі

3
glsa-check -t all
glsa-check -f all

Це те, що вам слід запустити першим. Якщо ви оновите всі пакети, це зайве.

О, і я віддаю перевагу cfg-update;)


1

Це те, що я роблю:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

Якщо ви не повністю розумієте коментарі, прочитайте це, тому що це повноваження щодо оновлення своїх пакетів gentoo.

http://www.gentoo.org/doc/uk/handbook/handbook-x86.xml?part=2&chap=1


0

Ваш процес правильний, хоча виконання кожної команди, ймовірно, не потрібно, я просто виконую синхронізацію та оновлення. Emerge підкаже вам, як правило, потрібно запустити скрипт для відновлення файлу, наприклад, під час великого оновлення Python, а також підкаже, коли слід об'єднати зміни конфігурації. Оскільки Gentoo насправді не має шляху оновлення від версії до версії. Як тільки ви з'явитесь у світі, ви отримаєте останню версію.


0

Давно я завжди використовував цю процедуру:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

Я, моє, вважаю за краще оновлюватись протягом ночі. Але іноді трапляється щось, що не вдається, і тому вам доведеться знову завантажувати всі (або деякі) програми.

Можливо, перемикач --newuse є нецікавим, але я часто редагую свій make.conf, щоб для мене це мало сенс.


Ви можете використовувати "--reinstall change-use" замість "--newuse", це перевстановлює пакети із прапорами використання, які ви явно змінили. Замість застарілих, доданих прапорів і т. Д. Вам все одно час від часу слід працювати з "--newuse".
hayalci

0

Виглядає чудово, хоча я не був би таким швидким, щоб запустити depclean.

Якщо у вас немає такої вимоги, як низький простір на жорсткому диску, ви можете повернутися і відмовитися від менш регулярних інтервалів. Немає шкоди мати їх навколо протягом короткого періоду. Якщо вам не пощастило помітити кілька пошкоджених пакетів після оновлення, ви будете впевнені, що вони не є результатом видалення будь-яких вільних залежностей.


0

Ось так я це роблю на своєму VPS:

крок 0 (від / etc / crontab)

0 0   * * *     root    emerge --sync &> /dev/null

крок 1:

emerge --update --deep --newuse world -av

крок 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.