Calculate Forum

Размаскировываем пакеты средствами portage.

portage
emerge
#1

Не так давно наткнулся на интересную фичу в новом portage-2.2. В emerge появились две прекрасные опции: --autounmask-write и --autounmask. Данная функциональность позволяет не устанавливать дополнительный пакет app-portage/autounmask и при этом легко и безопасно манипулировать размаскировкой пакетов.

–autounmask [ y | n ]

Автоматически размаскировывает зависимости устанавливаемых пакетов. Опция включена по умолчанию. Если нужно что-то поправить в конфигурационных файлах - сообщит об этом и прервет установку.

–autounmask-write [ y | n ]

Записывает изменения в конфигурационные файлы. Конечно же, учитывает опцию --ask и CONFIG_PROTECT. В случае, когда CONFIG_PROTECT не отключён, напомнит запустить etc-update, чтобы обновить конфиги в /etc/portage/.

Рассмотрим пример установки media-sound/audacious-2.5.3 и media-plugins/audacious-plugins-2.5.3. На момент написания статьи эти пакеты были нестабильными (~x86).

Размаскируем требуемые пакеты, запустив команду

emerge -av --autounmask-write =media-sound/audacious-2.5.3 =media-plugins/audacious-plugins-2.5.3

Получим такое сообщение:

calculate ~ # emerge -av --autounmask-write =media-sound/audacious-2.5.3 =media-plugins/audacious-plugins-2.5.3

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ~] dev-libs/libmowgli-0.9.50 [0.7.0] USE="-examples" 103 kB
[ebuild     U ~] media-sound/audacious-2.5.3 [2.4.4] USE="nls session sse2 (-altivec) -chardet" 1,191 kB
[ebuild     U ~] media-plugins/audacious-plugins-2.5.3 [2.4.4-r1] USE="aac alsa cdda cue ffmpeg 
flac gnome ipv6 libnotify lirc mp3 nls scrobbler sdl sse2 vorbis wavpack -adplug (-aqua) -bs2b 
-fluidsynth (-jack) -lame -libsamplerate -midi -mms -mtp -oss -pulseaudio -sid -sndfile" 3,408 kB

Total: 3 packages (3 upgrades), Size of downloads: 4,701 kB

The following keyword changes are necessary to proceed:
#required by media-plugins/audacious-plugins-2.5.3, 
required by =media-plugins/audacious-plugins-2.5.3 (argument)
>=media-sound/audacious-2.5.3 ~x86
#required by media-sound/audacious-2.5.3, 
required by media-plugins/audacious-plugins-2.5.3, 
required by =media-plugins/audacious-plugins-2.5.3 (argument)
>=dev-libs/libmowgli-0.9.50 ~x86
#required by media-sound/audacious-2.5.3, 
required by =media-sound/audacious-2.5.3 (argument)
>=media-plugins/audacious-plugins-2.5.3 ~x86

NOTE: This --autounmask behavior can be disabled by setting
      EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.

Would you like to add these changes to your config files? [Yes/No] yes

Autounmask changes successfully written. Remember to run etc-update.

Обратим внимание, что требуемый по зависимостям пакет dev-libs/libmowgli размаскировывать нам не потребовалось, всё сделано за нас. Запускаем, как нас и просили, etc-update:

calculate ~ # etc-update 
Scanning Configuration files...
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/portage/package.keywords/deps (1)
Please select a file to edit by entering the corresponding number.
              (don't use -3, -5, -7 or -9 if you're unsure what to do)
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i')
                           (-7 to discard all updates)
                           (-9 to discard all updates AND not use 'rm -i'): -3
Replacing /etc/portage/package.keywords/deps with /etc/portage/package.keywords/._cfg0000_deps
mv: переписать «/etc/portage/package.keywords/deps»? y
Exiting: Nothing left to do; exiting. :)

Теперь осталось установить то, что нам надо:

emerge -av =media-sound/audacious-2.5.3 =media-plugins/audacious-plugins-2.5.3

Обращаем внимания, что на данном этапе опция --autounmask-write не указывается, иначе emerge снова предложит записать изменения в конфигурационные файлы.

Небольшое замечание. Если нам надо размаскировать нестабильную версию в слоте при имеющейся стабильной (в данном примере, media-sound/audacious-2.4.4 - стабилен, media-sound/audacious-2.5.3 - нет), то при использовании опции --autounmask-write необходимо точно указать, какую версию надо размаскировать, как это было сделано в примере выше. Если же устанавливаемый пакет не имеет стабильных версий в слоте, например, на данный момент, dev-java/java-service-wrapper, то точно указывать номер размаскировываемой версии необязательно:

calculate ~ # eix dev-java/java-service-wrapper
* dev-java/java-service-wrapper
     Available versions:  ~3.2.3 ~3.3.1 ~3.3.3 {doc elibc_FreeBSD source test}
     Homepage:            http://wrapper.tanukisoftware.org/
     Description:         A wrapper that makes it possible to install a Java Application as daemon.

calculate ~ # emerge -av --autounmask-write dev-java/java-service-wrapper

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-java/javatoolkit-0.3.0-r6  17 kB
[ebuild  N     ] dev-java/java-config-wrapper-0.16  8 kB
[ebuild  N     ] dev-java/java-config-2.1.11-r3  60 kB
[ebuild  N     ] dev-java/icedtea6-bin-1.10.2  USE="X alsa nsplugin -doc -examples -source" 36,141 kB
[ebuild  N     ] virtual/jdk-1.6.0  0 kB
[ebuild  N     ] virtual/jre-1.6.0  0 kB
[ebuild  N     ] dev-java/ant-core-1.8.1  USE="-doc -source" 5,740 kB
[ebuild  N     ] dev-java/ant-nodeps-1.8.1  0 kB
[ebuild  N    ~] dev-java/java-service-wrapper-3.3.3  USE="-doc -source -test" 294 kB

Total: 9 packages (9 new), Size of downloads: 42,257 kB

The following keyword changes are necessary to proceed:
#required by dev-java/java-service-wrapper (argument)
>=dev-java/java-service-wrapper-3.3.3 ~x86

NOTE: This --autounmask behavior can be disabled by setting
      EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.

Would you like to add these changes to your config files? [Yes/No]

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

Важное замечание. Чтобы размаскировка работала с использованием данного метода, требуется уже иметь любой файл (даже пустой) в изменяемых подпапках /etc/portage/package.*/. В противном случае никаких изменений не будет и операция завершится сообщением об отсутствии файла для записи.

#2

спс, полезная, наглядная и главное лаконичная статья…

#3

Aleksey Vasilyevich писал(а):

спс, полезная, наглядная и главное лаконичная статья…

лаконичная? :slight_smile:

#4

да :slight_smile: исключаем:

<pre>
и более чем лаконичная... разве нет?!
#5

ну… я попытался разжевать, а разжёванность и лаконичность у меня не оч ассоциируются вместе :slight_smile:

#6

разжевано лаконично :smiley:

#7

Вместо etc-update можно набрать dispatch-conf и согласиться с заменой. Изменения будут добавлены в конец последнего файла, находящегося в portage.keywords.

#8

Денис Терехов писал(а):

Вместо etc-update можно набрать dispatch-conf и согласиться с заменой. Изменения будут добавлены в конец последнего файла, находящегося в portage.keywords.

всё верно, это уже кому как больше нравится.

#9

Важное замечание. Чтобы размаскировка работала с использованием данного метода, требуется уже иметь любой файл (даже пустой) в изменяемых подпапках /etc/portage. В противном случае никаких изменений не будет и операция завершится сообщением о невозможности создать файл (примерно как то так звучит сообщение об ошибке).

#10

Yes it is.

#11

Алексей Чуклимов писал(а):

Важное замечание. Чтобы размаскировка работала с использованием данного метода, требуется уже иметь любой файл (даже пустой) в изменяемых подпапках /etc/portage. В противном случае никаких изменений не будет и операция завершится сообщением о невозможности создать файл (примерно как то так звучит сообщение об ошибке).

Верно, сам сталкивался, а написать забыл. Сейчас внесу правку. Спасибо за замечание.

Mastodon Mastodon