Emerge

Материал из OpenWiki
Перейти к: навигация, поиск

emerge - Интерфейс командной строки для системы Portage

Описание

emerge - определяющий интерфейс командной строки для системы Portage. Первоначально используется для установки пакетов. emerge может автоматически управлять любыми зависимостями, которые запрашивает пакет. emerge также может обновить дерево портежей, делая новые и обновлённые пакеты доступными. emerge, также, изящно руководит обновлением установленных пакетов до новых версий. Он обрабатывает как исходники, так и бинарные пакеты и может использоваться при создании бинарных пакетов для распространения.

ЕБИЛДЫ, АРХИВЫ TBZ2, СЕТЫ И АТОМЫ

emerge прежде всего предназначен для установки пакетов. Вы можете определить пакеты для установки одним из четырёх основных способов: ебилдом, архивом TBZ2, сетом и атомом.

ЕБИЛД

Ебилд должен быть, как минимум, существующим в Portage именем пакета без версии или категории, например, portage или python. Категории, как и версии, можно использовать как добавление, например, sys-apps/portage или =python-2.2.1-r2. emerge игнорирует обратный слэш, так что можно использовать дополнение имён файлов. Ебилд может также быть реальным именем файла, таким как /usr/portage/app-admin/python/python-2.2.1-r2.ebuild. ВНИМАНИЕ: реализация emerge /путь/к/ебилду поломана и этот синтаксис не может быть использован.

АРХИВ TBZ2

Архив должен быть существующим файлом .tbz2 и создаётся с ебилдом пакета <пакет>-<версия>.ebuild, командой emerge --buildpkg [категория/]<пакет>.

ФАЙЛ

Файл должен быть файлом или каталогом, установленным одним или несколькими пакетами. Для каталогов, которые принадлежат нескольким пакетам, должны быть выбраны все эти пакеты. См. команду portageq(1) owners, если вы хотите запросить владельца одного или нескольких файлов или каталогов.

СЕТ

Сет - это удобное сокращение для большой группы пакетов. Два сета доступны всегда: system и world. Сет system ссылается на группу пакетов, которая считается необходимой для корректной работы системы. Сет world содержит все пакеты перечисленные в /var/lib/portage/world. [Смотрите далее раздел ФАЙЛЫ для более подробной информации]. Другие сеты также могут существовать, в зависимости от текущей конфигурации. По умолчанию, конфигурация сетов расположена в /usr/share/portage/config/sets.conf. Заметим, что сет обычно используется вместе с --update. Когда сет используется в качестве аргумента к emerge, он должен иметь префикс . Для просмотра списка доступных сетов используйте действие --list-sets@.

АТОМ

Атом указывает границы для пакета, который вы хотите установить. смотрите portage(5) для чтения подробностей о синтаксисе атомов. Для примера, >=dev-lang/python-2.2.1-r2 сопоставляет последнюю доступную версию Python выше или равную версии 2.2.1-r2. По тому же принципу, <dev-lang/python-2.0 сопоставляет последнюю доступную версию Python до 2.0. Обратите внимание на то, что во многих оболочках вам понадобится экранировать такие символы как '<' и '='; заключайте атомы в одинарные или двойные кавычки для избежания подобных проблем.

ДЕЙСТВИЯ

Без действий Если никакое действие не указано, действием по умолчанию будет установка указанных пакетов с удовлетворением, при этом, их зависимостей. Аргументами могут являться ebuild'ы, архивы tbz2, сеты или атомы. Обратите внимание на то, что вы должны использовать опцию --usepkg если хотите установить архив tbz2. Пакеты добавляются в в конец файла world, для возможности последующего обновления.

--clean (-c)

Чистит систему, проверяя версии установленных пакетов и удаляя старые. Это достигается путем просмотра всех установленных пакетов и разделением установленных версий по слотам. Clean удалит всё, кроме самых последних версий в каждом слоте. Clean не должна удалять пакеты, не находящиеся в слоте. Примечание: самые последние установленные версии не значит самые новые из существующих.

--config

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

--depclean

Чистит систему, удаляя пакеты, не ассоциированные с явно установленными пакетами. Depclean работает, создавая полное дерево зависимостей из сетов system и @world , после чего сравнивает его с установленными пакетами. Установленные, но не являющиеся частью дерева зависимостей пакеты, будут удалены depclean. Смотри описание --with-bdeps@ для изменения поведения --depclean в отношении зависимостей времени выполнения, не являющихся необходимыми. Пакеты, которые являются частью world будут по прежнему сохранены. Они могут быть добавлены вручную к этому сету с помощью emerge --noreplace <атом>. В целях предосторожности, depclean не будет удалять какие-либо пакеты, пока не будут разрешены все необходимые зависимости. В последствии, после выполнения depclean, очень часто требуется выполнить emerge --update --newuse --deep @system @world. ПРЕДУПРЕЖДЕНИЕ: новичкам рекомендуется использовать ключ --pretend с этой опцией для предварительного просмотра списка пакетов, которые будут удалены. Всегда изучайте список пакетов на удаление, для выявления очевидных ошибок. Обратите внимание на то, что программы, перечисленные в package.provided (см. portage(5)), могут быть удалены при использовании depclean, даже если они являются частью сета world. Depclean представляет собой версию --unmerge знающую о зависимостях. Полученная с одним или более атомами, depclean удалит все сопоставленные атомам пакеты, не имеющие обратных зависимостей. Используйте --depclean совместно с --verbose для вывода списка обратных зависимостей.

--deselect[=n]

Удаляяет атом из файла world. Это действие предполагается при выполнении удаления, включая --depclean, --prune и --unmerge. Используйте --deselect=n для избежания удаления пакетов при удалении атомов из файла world.

--help(-h)

Показывает сообщение справки для emerge. Добавление одного из дополнительных аргументов, перечисленных выше даст вам более детальную информацию о нём. Внутренняя документация emerge обновляется чаще, чем эта man-страница; обращайтесь к ней, если у вас возникли проблемы, которые эта man-страница не помогла разрешить.

--info

Выдает информацию, для включения в отчёты об ошибках, с целью помочь разработчикам исправить заявленную проблему. Пожалуйста, включайте эту информацию, когда составляете отчет об ошибках. Расширенный вывод может быть получен с опцией --verbose.

--list-sets

Показывает список доступных сетов.

--metadata

Переносит кеш метаданных из ${PORTDIR}/metadata/cache/ в /var/cache/edb/dep/, обычно, в конце обновления с помощью rsync, использующимся emerge --sync. Этот процесс заполняет кеш базы данных, что используется портежем для preparsed (??) поиска данных пакета. Не заполняется кеш для оверлеев, перечисленных в PORTDIR_OVERLAY. Для генерации кеша оверлеев, воспользуйтесь --regen. В версиях портежа >=2.1.5, ключ --metadata является ненужным, если пользователь включил FEATURES="metadata-transfer" в make.conf(5).

--prune (-P)

ПРЕДУПРЕЖДЕНИЕ: Данное действие может удалить важные пакеты! Удаляет все пакеты, кроме самых новых версий, из вашей системы. Используйте --prune вместе с опцией --verbose для того, чтобы посмотреть обратные зависимости или с --nodeps для игнорирования всех зависимостей.

--regen

Используется портежем для проверки и обновления кеша зависимостей всех ебилдов в дереве портежа. Кеш используется для ускорения поиска и построения дерева зависимостей. Эта команда не рекомендуется для использующих rsync, т.к. rsync обновляет ваш кеш используя кеш со стороны сервера. Если вы не видите разницы между пользователем rsync и остальными пользователями, то вероятнее всего, вы используете rsync :) Для таких пользователей самым лучшим способом является запуск emerge --sync, чтобы обновить кеш. После обновления портежа, пользователи rsync также могут посчитать полезным запустить emerge --metadata для перестройки кеша, чем занимается сам портеж в конце выполнения команды синхронизации. Для задания параллельного выполнения --regen, используйте опции --jobs и --load-average. Если вы желаете создавать и распространять кеш для других пользователей, используйте egencache(1).

--resume

Возвращает самый последний список установки, которая была прервана из-за ошибки. Обратите внимание, что это команда только вернет ошибку при неполадках. Если портеж посчитает, что ему нечего делать, произойдет выход с сообщением об успешном завершении. Список возврата будет существовать до тех пор, пока он полностью не будет завершён, или до тех пор, пока его не заменит новый прерванный список установки. История возврата способна хранить два списка установок. После успешного завершения одного из списков возврата, есть возможность запустить --resume еще раз, для возврата к более старому списку.

--search(-s)

Ищет совпадения переданной строки в дереве портов. По умолчанию emerge использует чувствительный к регистру простой поиск, хотя вы можете включить поиск по регулярному выражению, поставив в начале строки поиска %. Для примера, emerge --search "%^kde" ищет любой пакет, имя которого начинается с "kde"; emerge --search "%gcc$" найдет все пакеты, имена которых заканчиваются на "gcc"; emerge --search "office" ищет пакеты, в имени которых содержится "office". Если вам надо включить категорию в строку поиска, вставьте в начале : emerge --search "%^dev-java.*jdk". Если вам нужен поиск в описании пакетов, используйте опцию --searchdesc.

--searchdesc (-S)

Сверяет искомую строку с полем описания, а также с именем пакета. Будьте осторожны, так как описания также сравниваются по регулярным выражениям

--sync

Запускает обновление дерева портов, используя одно из зеркал rsync.gentoo.org. Обратите внимание, все ваши изменения в дереве портов будут утеряны. Кроме особых случаев, для обновления используется rsync. Cмотрите описание PORTDIR_OVERLAY в make.conf(5) для способа сохранения ваших изменений.

--unmerge(-C)

ПРЕДУПРЕЖДЕНИЕ: Это действие может привести к удалению важных пакетов! Удаляет все совпавшие с запросом пакеты. Зависимости не проверяются, поэтому это может привести к удалению важны для функционирования вашей системы пакетов. Аргументами могут быть атомы или ebuild'ы. Для знающей о зависимостях версии --unmerge, используйте --depclean или --prune.

--update (-u)

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

--version (-V)

Отображает версию программы emerge

ОПЦИИ

--accept-properties=ACCEPT_PROPERTIES

Эта опция временно заменяет переменную ACCEPT_PROPERTIES. Переменная ACCEPT_PROPERTIES является действующей по нарастанию, т.е. дополнительные настройки прикрепляются к существующему значению, хранящемуся в вашей конфигурации. Специальный знак -* используется для отмены существующей конфигурации и создании нового значения с нуля. Смотрите секцию MASKED PACKAGES и make.conf(5) для более подробной информации о ACCEPT_PROPERTIES. Примером типичного использования данной опции является --accept-properties=-interactive для временного сокрытия интерактивных пакетов. Учитывая конфигурацию по умолчанию, в результате получится значение "* -interactive".

--alphabetical

При выводе USE и других флагов, объединяет включенные и выключенные списки в один список и сортирует его по алфавиту.

--ask (-a)

Перед выполнением действия, выводится сообщение о предстоящих действиях(информация о сервере для --sync, --pretend# вывод для merge, и т.д.) после чего предлагает пользователю продолжить или отменить действия. Использование --ask@ более эффективно использования --pretend, с последующим вызовом без --pretend, т.к. вычисление зависимостей произойдет всего один раз. ПРЕДУПРЕЖДЕНИЕ: Если в командной строке был нажат "Enter" (без дополнительного ввода), он будет интерпретирован как одобрение первого варианта. Обратите внимание, что буфер ввода не очищается перед запросом на ввод, поэтому случайное нажатие клавиши "Enter" до приглашения для ввода будет воспринято как сделанный выбор!

--binpkg-respect-use < y | n >

Указывает emerge игнорировать бинарные пакеты, если их флаги не соответствуют текущей конфигурации(по умолчанию: нет).

--buildpkg (-b)

Заставляет emerge строить бинарные пакеты для всех обработанных ebuild'ов в дополнение к установке пакетов. Полезно как для мэйнтейнеров или если вы администрируете сразу несколько систем под Gentoo Linux(строите один раз, устанавливаете везде из тарболлов (tbz2)), так и для восстановления системы. Пакет будет создан в PKGDIR директории(смотрите make.conf(5)). Альтернативой для уже установленных пакетов является использование quickpkg(1) который создает тарболлы tbz2 c файлами из вашей использующейся файловой системы.

--buildpkgonly(-B)

Создает бинарный пакет для всех обработанных ebuild'ов без установки. Это происходит с условием, если все зависимости времени построения уже установлены в системе.

--changelog(-l)

Используется в связке с опцией --pretend для вывода истории изменений всех обновляемых пакетов.

--color < y | n >

Включает или выключает цветной вывод. Эта опция может перекрывать NOCOLOR (см make.conf(5)), а также, может использоваться для форсированного цветного вывода, когда stdout не является tty (по умолчанию цветной вывод отключается, если stdout не является tty).

--columns

При использовании наряду с --pretend имя пакета, новая и старая версии отображаются в выровненном формате, удобном для копирования.

--complete-graph[=n]

заставляет emerge считать глубину зависимостей всех пакетов, включенных в system и world сеты. С этой опцией emerge будет остановлен, если выполняемая операция будет нарушать зависимости, входящие в граф. Наравне с опцией --deep, опция --complete-graph значительно увеличивает время, затрачиваемое на нахождение зависимостей. В отличии от опции --deep, --complete-graph не принуждает к обновлению посторонние пакеты, которые могут быть обновлены, если данная опция не включена.

--config-root=DIR

Устанавливает переменную окружения PORTAGE_CONFIGROOT.

--debug (-d)

Указывает emerge запустить команду сборки в режиме отладки. В этом режиме окружение сборки bash будет запущено с опцией -x, которая выдает подробную отладочную информация на стандартный вывод. Также включает множество другой информации (большей частью сообщения о разрешении зависимостей).

--deep [DEPTH] (-D)

Описываемый флаг принуждает emerge считать полное дерево зависимостей пакетов, вместо проверки прямых зависимостей пакета. Например, это позволяет отловить обновления в библиотеках, которые не связаны напрямую с пакетом. Смотри также --with-bdeps для изменения поведения в отношении зависимостей времени построения.

--emptytree(-e)

Переустанавливает все пакеты с их зависимостями, согласно с действующим значением флага USE, стараясь как можно меньше отходить от текущего списка установленных пакетов.

--fetchonly (-f)

Не производит действия, касающиеся установки пакетов, только выполняет скачивание для всех указанных пакетов (скачивает файлы из SRC_URI на основе установленных флагов)

--fetch-all-uri (-F)

Не производит действия, касающиеся установки пакетов, только выполняет скачивание для всех указанных пакетов (скачивает все файлы из SRC_URI вне зависимости от установленных флагов)

--getbinpkg[=n] (-g)

Используя сервер и местоположение, определенные в PORTAGE_BINHOST (смотри make.conf(5)), portage будет получать информацию из найденных бинарных пакетов для построения списка зависимостей. Эта опция подразумевает использование -k. (Используйте -gK для бинарной установки.)

--getbinpkgonly[=n] (-G)

Эта опция действует так же как и -g, рассмотренная выше, за исключением того, что бинарные пакеты с удаленного сервера становятся предпочтительнее локальных, если они не совпадают.

--ignore-default-opts

Игнорирует EMERGE_DEFAULT_OPTS (смотрите make.conf(5))

-j[JOBS], --jobs[=JOBS]

Определяет количество пакетов для одновременной сборки. Если опция передана без аргументов, emerge не ограничивает количество заданий, выполняемых параллельно. Смотрите также родственную опцию --load-average.

--keep-going[=n]

Продолжает установку после возникновения ошибки настолько, насколько это возможно. При возникновении ошибки зависимости для остальных пакетов автоматически пересчитываются и все пакеты с неудовлетворенными зависимостями автоматически исключаются. Также смотрите подобную опцию --skipfirst.

--load-average=LOAD

Заданная опция означает, что новые построения не должны начинаться до тех пор, пока идут другие построения и средняя нагрузка выше LOAD (число с плавающей точкой). Данная опция рекомендована в связке с --jobs для избегания чрезмерных нагрузок. Смотрите make(1) для информации об аналогичной опции, настраиваемой через MAKEOPTS в make.conf(5).

--newuse (-N)

Указывает emerge включить установленные пакеты, в которых с момента предыдущей компиляции изменились флаги. Изменение флагов включает в себя: К пакету был добавлен USE флаг. USE флаг был удален из пакета. USE флаг был включен для пакета. USE флаг был выключен для пакета. Флаги могут быть включены/выключены вашим профилем, также как и через файл package.use и переменную окружения USE.

--noconfmem

При использовании данной опции, portage пренебрегает записями, указываюшими на то, что файлы в директории CONFIG_PROTECT были уже установлены. Обычно portage устанавливает эти файлы единожды, чтобы избежать их редактирование пользователем несколько раз. Данный флаг указывает на то, что эти файлы будут устанавливаться всегда.

--nodeps (-O)

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

--noreplace(-n)

Пропускает пакеты, указанные в командной строке, если они уже были установлены. Без заданной опции, любые пакеты, ebuild'ы, или зависимости(deps), указанные вами в командной строке будут установлены, даже если они уже присутствуют в системе. По умолчанию portage не станет переустанавливать зависимости. Стоит заметить что данная опция обладает более высоким приоритетом чем, например, --newuse, предотвращая переустановку пакетов, даже если соответствующий флаг был изменен.

--nospinner

Отключает циклический счетчик в текущей сессии. Счетчик активен, когда используемое устройство терминала является TTY. Данная опция отключает его не обращая на это внимания.

--oneshot (-1)

Устанавливает пакет как обычно, но не добавляет его в world файл для последующего обновления.

--onlydeps (-o)

Устанавливает (или претендует на установку) только зависимости данного пакета, но не сам пакет.

--pretend (-p)

Вместо выполнения установки, просто отображает пакеты которые будут установлены, если опция --pretend не будет использоваться. Использование --pretend настоятельно рекомендуется перед установкой незнакомых пакетов. В выводе:

  • N новый (еще не установленный)
  • S установка в новый слот (устанавливается параллельно с существующей версией)
  • U обновление (более новая версия)
  • D откат (лучшей является более старая версия)
  • R замена (замена той же версией)
  • F ограниченное скачивание (пакет должен быть скачан вручную)
  • f ограниченное скачивание (пакет уже скачан вручную)
  • I интерактивная установка (требуется пользовательский ввод)
  • B блокировано другим пакетом (неразрешенный конфликт)
  • b блокировано другим пакетом (автоматически разрешенный конфликт)

--quiet(-q)

Результат может быть разнообразным, но основной результат в уменьшении объема сообщений portage.

--reinstall changed-use

Требует от emerge включать установленные пакеты, в которых был изменен USE флаг с момента последней установки. В отличии от --newuse, это опция не включает пакеты, флаги которых были добавлены или удалены, но не затронуты пользователем.

--root=DIR

Устанавливает переменную окружения ROOT.

--root-deps[=rdeps]

Если опция передана без аргумента, зависимости времени построения пакетов для ROOT устанавливаются в ROOT вместо /. Если присутствует аргумент rdeps тогда отменяются все зависимости времени построения для ROOT. Эта опция является полезной, если используется совместно с ROOT, но не должна использоваться в обычных случаях. Для поддерживаемых в настоящее время значений EAPI, зависимости времени построения определены в переменной DEPEND. Тем не менее, поведение может измениться для новых версий EAPI, когда будут добавлены новые расширения.

--selective[=n]

Опция, похожая на --noreplace опцию, за исключением того, что имеет более низкий приоритет, чем такие опции как --newuse. Некоторые опции, такие как --update, неявно подразумевают --selective. Используйте --selective=n, если хотите отключить --selective, не смотря на использование таких опций как --update.

--skipfirst

Эта опция используется только совместно с --resume. Удаляет из возвратного списка первый пакет. Зависимости пересчитываются для оставшихся пакетов, все пакеты, имеющие замаскированные или неудовлетворенные зависимости автоматически отбрасываются. Также смотри похожую опцию --keep-going.

--tree (-t)

Показывает дерево зависимостей для выбранной цели с помощью отступов. Данная опция полезна только в совокупности с --emptytree или --update и --deep.

--usepkg[=n] (-k)

Указывает emerge использовать бинарные пакеты (из $PKGDIR) если они доступны, таким образом избегая трудоемких сборок. Данная опция полезна при установке с CD; вы можете выполнить export PKGDIR=/mnt/cdrom/packages, а затем использовать данную опцию чтобы заставить emerge взять бинарные пакеты с CD для удовлетворения зависимостей.

--usepkgonly[=n] (-K)

Указывает emerge использовать только бинарные пакеты (из $PKGDIR). Все бинарные пакеты должны быть доступны во время вычисления зависимостей или emerge просто прервется. Система портежей не использует $PORTDIR когда вычисляет зависимости, таким образом вся маскировочная информация игнорируется.

--verbose (-v)

Tell emerge to run in verbose mode. Currently this flag causes emerge to print out GNU info errors, if any, and to show the USE flags that will be used for each package when pretending. The following symbols are affixed to USE. Flags in order to indicate their status: - prefix not enabled (either disabled or removed)

  • suffix transition to or from the enabled state

% suffix newly added or removed () circumfix forced, masked, or removed

Источник: http://www.calculate-linux.ru/main/ru/emerge