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 |