Gentoo Archives: gentoo-user-ru

From: Alex Efros <powerman@×××××××.ua>
To: gentoo-user-ru@l.g.o
Subject: [gentoo-user-ru] Описание portage
Date: Wed, 04 May 2005 15:07:50
Message-Id: 20050504150755.GD26108@home.power
1 Hi!
2
3 Когда я изучал Gentoo и собирался на него переходить (я в этот момент
4 уже года два-три работал на само-собранном дистрибутиве по идеям LFS,
5 он меня полностью устраивал, но его поддержка требовала слишком много
6 времени) я столкнулся с тем, что хотя документации по portage было
7 довольно много, но она была не полная и не систематизированная (по
8 крайней мере, не систематизированная удобным для меня образом).
9
10 К примеру, ответ на вопрос: "как обновить систему?" в виде "emerge world"
11 меня категорически не устраивал, т.к. после сборки своего дистрибутива я
12 в полной мере осознавал что так просто это делаться не может, если,
13 конечно, вам интересно чтобы после обновления система всё ещё работала. :)
14
15 Тогда я начал составлять для себя некое описание portage, просто чтобы
16 лучше понимать как им пользоваться. Было это года полтора назад.
17 В процессе составления такого описания, в какой-то момент понимание что
18 и как делать у меня появилось и описание с тех пор я обновлять и
19 прорабатывать TODO перестал. Поскольку недавно я это осознал, и понял
20 что до удобоваримого вида я его уже не доведу, и переводить на
21 английский, как планировал, не буду, то я решил его запостить в том виде,
22 в котором оно сейчас есть. Может быть оно кому-нить пригодится. Если нет -
23 ну что-ж, тогда сорри за траффик. :)
24
25 P.S. Лицензия: с этим тектом можно делать всё, что хотите. :)
26
27 P.P.S. Если у кого будут вопросы по тексту - например, почему я не
28 пользуюсь RC-скриптами, или наоборот, ответы на вопросы в моём разделе
29 "вопросы нуждающиеся в уточнении" - you are welcome. :)
30
31
32 ***************************************************************
33 *** Устройство и работа portage с точки зрения пользователя ***
34 ***************************************************************
35
36 Здесь собрана информация по нюансам использования portage из самых разных
37 источников: документации, web-сайтов, Gentoo'шных форумов, maillist-ов и
38 личного опыта. В некоторых местах (особенно где английский текст) -
39 это просто cut&paste из этих источников.
40
41 Предполагается, что базовые знания по portage уже есть, и, например,
42 рассказывать что такое `emerge sync` или USE-флаги не нужно.
43
44 Основной упор при сборе информации делался на:
45 - описание разницы между разными способами выполнить одну и ту-же задачу
46 (с примерами/аргументами описывающими последствия выполнения задачи "не
47 правильным" способом)
48 - составление "рецептов" по решению типовых задач
49 - полноту описания отдельных аспектов portage
50
51 NOTE Всё что касается RC-скриптов я не изучал вообще т.к. я ими не пользуюсь.
52
53 *** Настройка portage
54
55 # FEATURE: Установить $CFLAGS для оптимизации компиляции программ.
56 # FEATURE: Выбрать стабильную или тестовую версию пакета.
57 # FEATURE: Выбрать опциональные возможности пакета включаемые при компиляции
58 # (USE-флаги).
59 # FEATURE: Замаскировать/демаскировать выбранные версии пакетов.
60 Настраивать portage можно через:
61 * /etc/make.profile (симлинк указывающий на текущий профайл)
62 * /etc/make.conf (пользовательские настройки)
63 * /etc/portage/ (пользовательские изменения для отдельных пакетов и профайла)
64 * переменные окружения
65 Изменять переменные окружения не рекомендуется т.к.
66 эти изменения не будут учтены при последующих
67 перекомпиляциях пакетов.
68 Текущие настройки выдаёт `emerge info`. Они являются результатом объединения
69 глобальных настроек (перечисленных ниже) и пользовательских настроек
70 (перечисленных выше). Файлы с глобальными настроками редактировать нельзя.
71 Глобальные настройки можно посмотреть в:
72 * /etc/make.globals (глобальные настройки)
73 * /usr/portage/* (файлы с разными настроками, в т.ч. package.mask)
74 * /usr/portage/ВАШ/ТЕКУЩИЙ/ПРОФАЙЛ/
75 Плюс все профайл-каталоги которые этот профайл "наследует"
76 (имя унаследованного профайла-каталога находится в
77 файле parent, а сам каталог с профайлом определяется
78 через симлинк /etc/make.profile - см. выше).
79
80 Документация по возможным параметрам portage:
81 * `man make.conf`
82 * `man portage`
83 * /etc/make.conf.example
84
85 *** Выбор устанавливаемых пакетов
86
87 # FEATURE: Можно выбрать, какую версию нужной программы устанавливать.
88 # FEATURE: Каждый ebuild скрипт может быть помечен как
89 # стабильный/тестируемый/не работает отдельно для каждой архитектуры.
90 Portage-у, для установки определенной версии определенной программы, нужен
91 специальный скрипт (ebuild) в котором описаны специфичные для этой
92 программы/версии команды компиляции/инсталляции, опциональные возможности и
93 текущий статус: стабильная/нестабильная/неработающая версия.
94 Одновременно в portage может быть несколько разных версий, часть из которых
95 может быть помечена как стабильные, часть как нестабильные, etc. и всегда
96 можно форсировать установку любой из этих версий пакета. По умолчанию portage
97 будет устанавливать либо максимальную из стабильных версий, либо из
98 нестабильных - в зависимости от настроек.
99
100 Для установки нестабильной или нерабочей версии нужно разрешить их
101 индивидуально для каждого пакета в /etc/portage/package.keywords .
102 Кроме того можно глобально разрешить установку нестабильных версий для
103 всех пакетов в настройках portage, специально для любителей потестировать
104 самые свежие глюки. :)
105
106 ebuild may be marked '-arch', meaning "does not work", '~arch', meaning
107 "unstable", or 'arch', meaning "stable".
108
109 Примеры записей в /etc/portage/package.keywords :
110 cate-gory/package
111 разрешает использовать любые "нестабильные" версии пакета (кстати, в
112 документации я такого синтаксиса не нашёл - имеется в виду возможность
113 не указывать ~x86, что очень удобно)
114 =cate-gory/package-version ~x86
115 разрешает использовать именно эту "нестабильную" версию пакета, не будет
116 пытаться downgrade-нуть её на предыдущую стабильную при emerge -u, и не
117 будет автоматически апгрейдить её на более новые "нестабильные" версии
118 ~cate-gory/package-version ~x86
119 где version не включает номер ревизии (-rX) будет работать как и
120 предыдущий вариант с одним исключением - автоматические апгрейды на
121 более новые "нестабильные" ревизии этой-же (!!!) версии пакета будут
122 разрешены
123
124 Некоторые версии программ могут быть замаскированы:
125 * для всех профайлов: /usr/portage/profiles/package.mask
126 * для текущего профайла: /etc/make.profile/packages
127 * пользователем: /etc/portage/package.mask
128 * пользователем при предыдущей установке этого пакета: /var/lib/portage/world
129 Это может произойти если при emerge указывалась конкретная
130 версия пакета через = (или допустимые диапазоны версий
131 через <>) без использования --oneshot, и в файл world
132 была добавлена строка содержащая эти ограничения.
133 Для установки замаскированного пакета его нужно демаскировать: для первых
134 двух случаев через /etc/portage/package.unmask для третьего просто убрав
135 ограничение из /etc/portage/package.mask а в последнем случае убрав ограничение
136 из /var/lib/portage/world .
137
138 You can "pin" a package. Just put ">=app-grp/appname-x.y.z" into
139 /var/lib/portage/world and emerge -u world won't try to downgrade, or use
140 = instead of >= and it will never try to change the version at all.
141
142 # FEATURE: Можно иметь свои локальные наборы ebuild скриптов.
143 Ebuild-скрипты должны находится либо в основном каталоге portage,
144 либо в одном из дополнительных каталогов portage.
145 Основной каталог задается в настройках portage как PORTDIR (обычно это
146 /usr/portage/). Дополнительные каталоги можно указать в настройках portage
147 как PORTDIR_OVERLAY (обычно это один каталог: /usr/local/portage).
148 Если ebuild для одной и той-же версии программы будет найден и в основном
149 каталоге, и в дополнительных - будет использован скрипт из дополнительного
150 каталога.
151 Свои ebuild скрипты нужно хранить в дополнительных каталогах,
152 т.к. изменения в основном каталоге будут потеряны при
153 `emerge sync`. Это же касается изменений основных ebuild-ов -
154 нужно сначала скопировать их из основного каталога в
155 дополнительный и уже там изменять.
156
157 # FEATURE: Все программы сгруппированы по категориям.
158 Внутри каталога portage ebuild скрипты сгруппированы по категории и
159 названию программы: /usr/portage/CATEGORY-NAME/SOFT/NAME-VERSION.ebuild .
160 Иногда программу переносят из одной категории в другую, все такие
161 переименования описаны в файлах /usr/portage/profiles/updates/* .
162
163 *** USE-флаги
164
165 USE-флаги бывают "глобальные" (используемые более чем одним пакетом) и
166 "локальные" (используемые только одним пакетом). Их описания в файлах:
167 /usr/portage/profiles/use.desc и /usr/portage/profiles/use.local.desc .
168
169 Дополнительные USE-флаги могут быть добавлены автоматически после установки
170 соответствующего софта: /etc/make.profile/use.defaults (но они перекрываются
171 любыми юзерскими настройками - make.conf, /etc/portage/ и $USE).
172
173 Приоритет USE-флагов:
174 - Default USE setting declared in /etc/make.profile/make.defaults
175 (плюс make.defaults из унаследованных профайл-каталогов)
176 - Inherited USE setting if a package from /etc/make.profile/use.defaults
177 is installed (плюс use.defaults из унаследованных профайл-каталогов)
178 - User-defined USE setting in /etc/make.conf
179 - User-defined USE setting in /etc/portage/package.use
180 - User-defined USE setting as environment variable
181
182 После изменения USE-флагов рекомендуется пересобрать все пакеты,
183 на которые влияют эти флаги: `emerge --newuse world`, после чего
184 сделать что-нить типа
185 emerge -p depclean
186 чтобы удалить ставшие лишними из-за изменения USE-флагов пакеты.
187
188 *** Полное обновление системы
189
190 * Приведение в порядок /var/lib/portage/world . В world должен быть список
191 программ, которые нужно доустановить плюс к тем, которые уже входят в
192 "system" (т.е. в текущий профайл).
193 - в world не должно быть никаких библиотек, etc., которые не нужны
194 сами по себе, а нужны только для удовлетворения чьих-то зависимостей
195 (чтобы не продолжать устанавливать/обновлять их если они уже станут
196 не нужны по какой-то причине)
197 - программ, которые уже входят в "system" не должно быть в world
198 (почему, кстати, и где это написано? и как быть с тем, что содержимое
199 system может меняться при изменении профайла?)
200 - в world нельзя указывать определенную версию софта, это лучше делать
201 в /etc/portage/package.mask (а это почему и где написано?)
202 - скрипт `regenworld` может помочь восстановить world путем анализа
203 /var/log/emerge.log и генерации на его базе файла world
204 (он перезапишет текущий world!)
205 - скрипт `dep -p -w` поможет найти избыточные записи в world
206 (которые всё-равно нужны другим записям в world или входят в system).
207 * Перед серьёзными обновлениями желательно просмотреть /etc/portage/* ,
208 т.к. там могут быть уже не актуальные записи мешающие текущему обновлению.
209 * Обновление profile.
210 - Не каждый Gentoo release включает в себя новый profile (например,
211 2004.1 был без profile).
212 - Даже если новый profile есть, то переходить на него не обязательно
213 (если это будет обязательно, то старый профайл будет deprecated и
214 emerge об этом должен будет громко кричать).
215 - Инструкция по обновлению profile будут выкладываться здесь:
216 http://www.gentoo.org/doc/en/gentoo-upgrading.xml
217 и как правило сводиться к изменению симлинка /etc/make.profile .
218 * USE-флаги.
219 - Запустить `emerge -uDpv --newuse world` и проверить что USE-флаги для
220 всех пакетов выставлены корректно, и при необходимости скорректировать
221 USE-флаги через /etc/make.conf или /etc/portage/package.use .
222 * Запуск обновления системы (если не нужно ли обновлять toolchain).
223 - Если `emerge -uDpv --newuse world` показывает что будет обновляться
224 пакет входящий в toolchain (linux-headers, glibc, binutils или gcc), то
225 крайне рекомендуется полностью перекомпилировать всю систему -
226 см. следующий пункт - а иначе можно вместо следующего пункта просто
227 запустить:
228 emerge -uDav --newuse world
229 - Некоторые причины не использовать emerge -U вместо -u :
230 Reason 1: Problems with SLOTs
231 This occured to quite a few people that wanted gimp-2 instead of
232 gimp-1.2. Imagine gimp-1.2 marked stable and in SLOT 1, gimp-2
233 marked unstable and in SLOT 2. Now you do an "ACCEPT_KEYWORDS=~x86"
234 emerge gimp" and get gimp-2. Later on you consider it's time to update
235 your system with anything similar to "emerge -U world". This will
236 install gimp-1.2, because gimp is in the worldfile, and "-U" doesn't
237 handle the SLOTs here as one might expect it.
238 Reason 2: Problems if ebuilds are removed from Portage tree
239 Imagine there are two versions of package foo in portage, foo-1.4 marked
240 stable and foo-1.6 marked unstable. You want unstable and emerge it like
241 gimp above. Some time later you update world like above, but in the
242 meantime foo-1.6.1 came out fixing an important security hole in
243 foo-1.6. Now there are two possibilities:
244 a) foo-1.6 got removed from Portage. This
245 results in foo-1.4 getting installed, thus a downgrade instead of
246 "-U"
247 b) even worse when foo-1.6 wasn't removed from Portage due to whatever
248 reason: foo-1.6 (the one with the security hole) would stay on your
249 system until something greater than foo-1.6 gets marked stable.
250 * Обновление одного из пакетов входящих в toolchain.
251 - Если обновляется хотя-бы один из linux-headers, glibc, binutils или gcc,
252 то рекомендуется пересобрать их дважды, после чего весь system, после
253 чего весь world.
254 Цель двойной компиляции toolchain - получить гарантированно стабильный и
255 корректный toolchain не зависящий от предыдущего.
256 Перекомпилировать system/world после этого жёсткой необходимости нет,
257 по крайней мере если остальной софт продолжает работать (возможно даже
258 используя библиотеки из старого toolchain - см. предыдущие пункты об
259 апгрейде).
260 Цель перекомпиляции system/world - чтобы весь софт получил потенциальное
261 преимущество от установки нового toolchain. system перекомпилируется
262 перед world из тех-же соображений, т.к. при компиляции программ из world
263 используются утилиты из system.
264 - Если увеличивается первая или вторая цифра версии gcc, то перед второй
265 сборкой нужно переключиться на новую версию через gcc-config - иначе
266 новый gcc просто установится параллельно со старым в "новый слот" но
267 по умолчанию использоваться будет старый.
268 - При сборке system после двойной перекомпиляции toolchain нет
269 необходимости опять компилировать toolchain как часть system.
270 Аналогично при сборке world после system нет небходимости опять
271 компилировать пакеты из system как часть world. Это можно попробовать
272 обойти либо вручную, либо используя скрипты из
273 http://forums.gentoo.org/viewtopic.php?t=282474 либо через бинарные
274 пакеты и `emerge -k` (я предпочитаю последний вариант).
275 - Итого, рекомендованный набор команд:
276 # для того, чтобы безопасно использовать `emerge -k` нужно очистить
277 # каталог с текущими бинарными пакетами
278 # (напр., переместить его в /tmp/portage-packages)
279 pkgdir=$(portageq pkgdir)
280 mv $pkgdir /tmp/portage-packages
281 install -d -o portage -g portage $pkgdir
282 # первая сборка toolchain
283 emerge linux-headers glibc binutils gcc-config gcc
284 # выбрать новый gcc если он установился в новый слот
285 gcc-config имя_или_номер_нового_gcc # см. `gcc-config -l`
286 source /etc/profile
287 # компиляция toolchain с созданием бинарных пакетов
288 emerge -b glibc binutils gcc portage
289 emerge -bke system # не компилить glibc, binutils и gcc
290 emerge -bke world # не компилить предыдущие пакеты (включая system)
291 - Чисто теоретически существует пакет binutils-config, который когда-нить
292 может потребоваться использовать аналогично gcc-config.
293 * Обновление безопасности.
294 - Даже после `emerge -uDav --newuse world` в системе могут оставаться
295 устаревшие пакеты с дырами в безопасности - в слотах!
296 glsa-check -l | grep '\[N\]'
297 emerge ... # если нужно
298 * Удаление не используемых пакетов.
299 - После обновления системы в ней могут оказаться пакеты, которые никто
300 не использует. Эти пакеты желательно удалить, т.к. они не будут в
301 дальнейшем обновляться при `emerge -uDav --newuse world`.
302 emerge -a depclean # очень осторожно!!!
303 * После обновления библиотек может потребоваться перекомпилировать
304 программы, которые эти библиотеки используют:
305 rm /root/.revdep-rebuild*.?_*
306 revdep-rebuild -p
307 revdep-rebuild
308 * Обновление конфигов.
309 dispatch-conf
310 * Если используется runit-init и обновлялся пакет baselayout, то нужно
311 восстановить /sbin/init:
312 ls -l /sbin/*init*
313 if (/sbin/init это бинарник, а не симлинк) {
314 mv /sbin/init /sbin/init-sysv
315 ln -s runit-init /sbin/init
316 }
317 * Отслеживание важных сообщений при установке пакетов.
318 - В процессе `emerge world` выдаётся очень много сообщений, причём
319 важные комментарии перемешаны с командами компиляции, и отследить
320 их при сборке нескольких пакетов одновременно не возможно.
321 Но все эти сообщения можно получить из log-файлов после окончания
322 установки `emerge world`. Для этого нужно использовать либо
323 `enotice` либо `portlog-info`.
324
325 *** Обновление критических системных пакетов
326
327 * Апгрейд gcc.
328 - Должен быть абсолютно безопасным благодаря использованию SLOT-ов!
329 Проблемы при установке нового gcc возникнут если новый gcc бинарно
330 несовместим со старым. Вероятно это связано с тем, что некоторые
331 бинарники (например, /usr/sbin/mysqld) используют библиотеки gcc
332 (например, /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/libstdc++.so.5).
333 В таких случаях этим "бинарно несовместимым" версиям gcc назначаются
334 разные SLOT-ы, и апгрейд на такую версию приведет к установке новой
335 версии без удаления старой (выбирать, какая версия будет
336 использоваться при компиляции новых программ можно через `gcc-config`).
337 * Апгрейд gcc/glibc/других критических библиотек.
338 - Перед апгрейдом может иметь смысл отключать AUTOCLEAN (см. `man
339 make.conf`) чтобы старая версия glibc не была удалена до того как
340 весь зависящий от неё софт не будет пересобран с новой версией.
341 После того как всё будет пересобрано можно будет удалить старые версии
342 через `emerge --clean`.
343 - Так-же может иметь смысл на всякий случай сохранить до обновления
344 текущие версии через `quickpkg glibc`. Тогда её можно будет
345 восстановить в случае проблем с новой версией:
346 `emerge -k /usr/portage/packages/sys-libs/glibc-2.3.2-r1.tbz2`.
347 - После апгрейда нужно обязательно запускать `revdep-rebuild`, чтобы
348 пересобрать проги зависящие от старой версии обновляемой библиотеки.
349 * Апгрейд любого из пакетов входящих в toolchain (linux-headers, glibc,
350 binutils, gcc) или перекомпиляция их с серьёзными отличиями в USE-флагах
351 (напр. nptl, hardened).
352 - Во избежание глюков крайне рекомендуется не экономить на времени
353 компиляции и сделать всё как описано в разделе "Полное обновление
354 системы", вариант с обновлением toolchain.
355
356 *** Перезаписывание существующих файлов при установке пакета
357
358 Файлы принадлежат последнему установленному пакету. Все зависит от
359 порядка инсталляции и не зависит от номера версии или номера ревизии
360 установленных пакетов. Удаление пакета установленного последним и
361 содержащего некий файл, удалит и сам файл, даже если установлены пакеты
362 более старших версии того же самого программного обеспечения (полагая, что
363 пользователь вручную не изменял файл).
364
365 Описание работы фичи "config file protection", благодаря которой часть файлов
366 (в основном, в /etc/) не переписывается автоматом при установке новой версии
367 пакета можно прочитать в `emerge --help config`. Такие файлы должны быть
368 обновлены вручную после установки пакета через утилиту `dispatch-conf`
369 или другие альтернативные утилиты (но использовать `etc-update` крайне
370 не рекомендуется!).
371
372 *** Удаление пакетов
373
374 Удаление пакетов опасно. Если вы удалите какой-нибудь важный пакет
375 ваша система, скорей всего, перестанет функционировать, а удаление
376 библиотек может неудачно повлиять на работу программного обеспечения.
377 Portage не предупредит вас если вы удалите системный пакет или какую-нибудь
378 зависимость для других пакетов.
379
380 При удалении пакета всегда есть риск что этот пакет нужен другим
381 установленным пакетам. Можно попытаться проверить зависят ли от удаляемого
382 пакета другие через `qpkg -q -I имяпакета` и/или через `dep -r имяпакета`.
383 После удаления можно проверить что он сейчас никому не нужен через
384 `emerge -Dp world` и/или `revdep-rebuild -p`.
385
386 *** Разное
387
388 Если нужно установить какой-то пакет временно, для эксперимента или
389 из каких-то "системных" соображений (например, если он был нечаянно
390 удалён или его нужно обновить чтобы закрыть дыру в безопасности),
391 либо если нужно ПЕРЕустановить какой-то пакет - всегда нужно
392 использовать параметр --oneshot чтобы этот пакет не дописался в world.
393
394 Значение CHOST в /etc/make.conf можно изменять только при установке из stage1,
395 до запуска bootstrap.
396
397 You can always pass a full path to an ebuild to emerge, and this will bypass
398 all mask checking, so this is another quick way to install one masked package.
399 Но при этом пишут, что запускать `emerge /path/to/file.ebuild` нельзя.
400 В частности, в `man emerge`: "WARNING: The implementation of
401 emerge /path/to/ebuild is broken and so this syntax shouldn't be used.".
402
403 TODO
404 Просмотреть:
405 http://forums.gentoo.org/viewtopic.php?t=171464
406 Сравнить (поиск по форуму) cfg-update и dispatch-conf; colordiff! etc.
407
408 Куча дополнительного софта для работы с portage:
409 /usr/portage/app-portage/* :) плюс
410 http://gentooexperimental.org/script/repo/list
411 - enotice
412 - portlog-info (вероятно, не нужен при использовании enotice)
413 - gest (сравнить с `genlop -p` и `splat -s`)
414 - glcu (для серверов):
415 http://www.panhorst.com/glcu/
416 http://forums.gentoo.org/viewtopic-p-2123630.html
417 - find-old-distfiles (довести до ума)
418 - dep
419 - cruft, cruft2.py (проверить на безопазность и полезность)
420
421 * Обновление пакетов из-за секьюрити
422 - glsa-check
423 - ручной inject некоторых glsa из-за багов glsa-check
424
425 * Еще одна вещь, о которой следует упомянуть, - это команда
426
427 emerge ingect =pkg-PV-PR
428
429 Она позволяет зарегистрироватт определенную версию пакета без его
430 установки. Ее можно применить, если, скажем, после очередного выполнения
431 rsync Вы проверили результат
432
433 emerge -pu world
434
435 и в целом Вам все нравится, вот только Вы не хотите выполнить upgrade
436 какого-то определенного пакета. Тогда его можно просто принудительно
437 включить в дазу данных как обновленный, выполнив команду
438
439 emerge inject pkg-PV-PR
440 NB! Начиная с 2.0.51:
441 The use of --inject is deprecated for the time being. Injecting
442 packages should now be done by adding the package to
443 /etc/portage/profile/package.provided using the full name
444 (<category>/<name>-<version>) instead.
445 Для обнаружения inject-нутых пакетов и переноса их в package.provided
446 можно использовать:
447 http://www.stud.uni-karlsruhe.de/~uxhz/gentoo/misc/einjected
448
449 и затем спокоино выполнять
450
451 emerge -u world
452
453 *** Краткий справочник по параметрам основных команд
454
455 * Полезные фичи etcat:
456
457 etcat -v ... # вывести все версии пакета ... в портаже
458 etcat -u ИМЯ # с какими настройками USE (только из влияющих
459 # на эту программу) была установлена программа
460
461 * Полезные фичи qpkg:
462
463 qpkg -I # список установленных пакетов
464 qpkg -I -v # список установленных пакетов с версиями
465 qpkg -I -v /pkg- # версия установленного пакета pkg :-)
466 qpkg -q -I ... # вывести пакеты зависящие от заданного
467 # (насколько я понял, это лучше делать через
468 # dep)
469
470 * Полезные фичи emerge ("..." означает список имен программ):
471
472 TODO В полезные фичи emerge нужно дописать инфу по --resume и --skipfirst !
473
474 # Информация
475 emerge info # вывести текущие настройки (в т.ч. USE)
476 emerge -s ... # поиск в имени
477 emerge -p -v ... # какие USE флаги влияют на эту программу и
478 # сколько Kb еще нужно докачать исходников
479 emerge -p -f ... # вывод url откуда можно тянуть sources
480 emerge -p -e ... # показать все зависимости программы без glibc
481 emerge -p -u ... # показать, что будет обновляться
482 emerge -p depclean # вывести пакеты которых нет в world и от
483 # которых никто не зависит (для удаления)
484 # Выкачка
485 emerge sync # обновление portage через rsync://
486 emerge -f ... # только выкачка sources без установки
487 # Установка
488 emerge -p ... # вывод что нужно для установки программы
489 emerge -p -t ... # вывод что нужно для установки программы
490 # (зависимости выводятся в виде дерева)
491 emerge -a ... # то-же что и -p, но после вывода информации
492 # спрашивает продолжить ли выполнять emerge
493 emerge -k ... # установка прекомпилированной программы из
494 # /usr/portage/package/All/ __ЕСЛИ__ там есть
495 # нужная версия программы
496 emerge -K ... # как и -k, но если нужной прекомпилированной
497 # версии нет, то используется какая есть
498 emerge ... # установка программы
499 emerge -u ... # обновить пакет (возможно, на меньшую версию)
500 emerge -uD --newuse world # полный апгрейд системы
501 emerge -C ... # удалить пакет (unmerge). зависимости при
502 # удалении __НЕ__ проверяются!!!
503
504 Программа(ы) в "..." могут быть заданы как:
505
506 system # базовый набор софта
507 world # весь софт, который ставился ручками + system
508 name # автовыбор лучшей версии программы name
509 "=name-version" # установка именно этой версии
510 "<name-version" # установка лучшей версии меньшей заданной
511 ">name-version" # установка лучшей версии большей заданной
512 "<=name-version"
513 ">=name-version"
514
515 При выводе -p могут быть использованы обозначения:
516
517 B (blocks) The package listed to the left is blocking the emerge
518 of the package listed to the right
519 N (new) The package is new to your system and will be emerged
520 for the first time
521 R (reemerge) The package isn't new, but needs to be reemerged
522 F (fetch) The package requires that you download the source code
523 manually (for instance due to licencing issues)
524 U (update) The package already exists on your system but will be
525 upgraded
526 UD (downgrade) The package already exists on your system but will be
527 downgraded
528 U- (slot warning) The package you have installed on your system is listed
529 as a package that can not coexist with a different
530 version, but your update does. The update will be
531 installed and the older version will be removed.
532
533 *** Вопросы, нуждающиеся в уточнении
534
535 Чистка distfiles.
536
537 Разобраться, включен ли у меня sandbox и достаточно ли этого для безопасной
538 компиляции (что такое user* FEATURES и нужны ли они вместе/вместо sandbox).
539
540 Интересно, как будет ставиться прога, которой нужно установить suid-ные
541 root-овые файлы если её собирать так:
542 FEATURES="userpriv usersandbox sfperms"
543
544 Что такое `fixpackages`? Нужно ли его запускать ручками?
545
546 /etc/portage/bashrc подчитывается перед установкой каждой программы, даже если
547 emerge ставит их много одновременно?
548 http://home.jesus.ox.ac.uk/~ecatmur/gentoo/etc/portage/bashrc написан в
549 расчете именно на это (изменяет $CFLAGS индивидуально для ethereal).
550
551 Насколько безопасно в /etc/portage/rsync_excludes засунуть:
552 /usr/portage/metadata/cache
553
554 portageq envvar NOCOLOR
555
556 Проверить действительно ли --metadata ускоряет рассчёт зависимостей
557 для вытянутого архива с portage (аналогично можно проверить --regen).
558
559 *** Полезные файлы и программы
560
561 Одна из gentoo-шных утилит, которой стоит пользоваться: `env-update`.
562 (Она вызывается автоматом после установки любого пакета.)
563
564 TODO обновить этот список для последней версии portage перед тем как его
565 описывать!
566 - описать все файлы/каталоги используемые в portage с точки зрения их задач:
567 /var/cache/edb/*
568 /var/db/pkg/*
569 /var/log/portage/
570 /var/log/emerge.log
571 /usr/portage/distfiles/
572 /usr/portage/metadata/*
573 /usr/portage/packages/
574 /usr/portage/profiles/*
575 /usr/portage/profiles/updates/
576 /usr/portage/rpm/
577 /usr/portage/scripts/*
578 /usr/local/portage/
579 /etc/env.d/
580 /etc/modules.d/
581 /etc/dispatch-conf.conf
582 /etc/etc-update.conf
583 - описать полезные программы используемые для манипуляции этими файлами:
584 modules-update
585 /usr/bin/xpak -> ../lib/portage/bin/xpak 1087030209
586 /usr/bin/repoman -> ../lib/portage/bin/repoman 1087030209
587 /usr/bin/g-cpan.pl -> ../lib/portage/bin/g-cpan.pl 1087030209
588 /usr/bin/portageq -> ../lib/portage/bin/portageq 1087030209
589 /usr/bin/emerge -> ../lib/portage/bin/emerge 1087030209
590 /usr/bin/quickpkg -> ../lib/portage/bin/quickpkg 1087030209
591 /usr/bin/tbz2tool -> ../lib/portage/bin/tbz2tool 1087030209
592 /usr/sbin/fixpackages -> ../lib/portage/bin/fixpackages 1087030209
593 /usr/sbin/env-update -> ../lib/portage/bin/env-update 1087030209
594 /usr/sbin/etc-update -> ../lib/portage/bin/etc-update 1087030209
595 /usr/sbin/emerge-webrsync -> ../lib/portage/bin/emerge-webrsync 1087030209
596 /usr/sbin/regenworld -> ../lib/portage/bin/regenworld 1087030209
597 /usr/sbin/archive-conf -> ../lib/portage/bin/archive-conf 1087030209
598 /usr/sbin/ebuild -> ../lib/portage/bin/ebuild 1087030209
599 /usr/sbin/dispatch-conf -> ../lib/portage/bin/dispatch-conf 1087030209
600 /usr/sbin/ebuild.sh -> ../lib/portage/bin/ebuild.sh 1087030209
601 /usr/sbin/pkgmerge -> ../lib/portage/bin/pkgmerge 1087030209
602 /usr/lib/portage/bin/domo
603 /usr/lib/portage/bin/queryhost.sh
604 /usr/lib/portage/bin/fix-db.py
605 /usr/lib/portage/bin/fixdbentries
606 /usr/lib/portage/bin/sandbox
607 /usr/lib/portage/bin/chkcontents
608 /usr/lib/portage/bin/pkgmerge.new
609 /usr/lib/portage/bin/db-update.py
610 /usr/lib/portage/bin/extra_functions.sh
611 /usr/lib/portage/bin/emergehelp.py
612 /usr/lib/portage/bin/pkgname
613 /usr/lib/portage/bin/find-requires
614 /usr/lib/portage/bin/fixvirtuals
615 /usr/lib/portage/lib/sandbox.bashrc
616 /usr/share/man/man5/ebuild.5.gz
617 /usr/share/man/man5/portage.5.gz
618 /usr/share/man/man5/make.conf.5.gz
619 /usr/bin/euse
620 /usr/bin/qpkg
621 /usr/bin/etcat
622 /usr/bin/revdep-rebuild
623 /usr/bin/glsa-check
624 /usr/bin/dep-clean
625 /usr/bin/equery
626 /usr/bin/ewhich
627 /usr/bin/pkg-size
628 /usr/sbin/pkg-clean
629 /usr/sbin/mkebuild
630 /usr/share/doc/gentoolkit-0.2.0_pre8/*/README
631 genlop
632 esearch
633 /usr/bin/ebump
634 /usr/bin/gensync
635 /usr/bin/epkgmove
636 /usr/bin/echangelog
637 /usr/bin/ekeyword
638 ufed
639
640
641 --
642 WBR, Alex.
643 --
644 gentoo-user-ru@g.o mailing list

Replies

Subject Author
Re: [gentoo-user-ru] Описание portage Alexander Tratsevsky <support@×××××××××.ru>
[gentoo-user-ru] Re: [gentoo-user-ru] Описание portage "Марсель Рысаев" <mrysaev@×××××.ru>
[gentoo-user-ru] Установка KDE 3.4 Alexander Tratsevsky <support@×××××××××.ru>
[gentoo-user-ru] Re: Описание portage Alex Efros <powerman@××××××××××××××××××.com>