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

Не так давно наткнулся на интересную фичу в новом 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.*/. В противном случае никаких изменений не будет и операция завершится сообщением об отсутствии файла для записи.

1 Like

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

Aleksey Vasilyevich писал(а):

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

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

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

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

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

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

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

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

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

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

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

Yes it is.

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

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

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

Обновил Libreoffice на версию 7.2.5.2 с помощью данной статьи. Проц. i-5 8400 постоянная загрузка 97-100%. Сборка заняла где-то час. Честно думал, что завис процесс.

Спойлер

calculate ~ # emerge -av --autounmask-write =app-office/libreoffice-7.2.5.2

Local copy of remote index is up-to-date and will be used.

Local copy of remote index is up-to-date and will be used.

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

Calculating dependencies… done!
[binary N ] dev-util/cppunit-1.15.1-r3:0/1.15::gentoo USE="-doc -examples " ABI_X86="(64 ) -32 (-x32 )" 0 KiB
[binary N ] dev-util/gperf-3.1::gentoo 0 KiB
[binary N ] media-libs/glm-0.9.9.8-r1::gentoo USE="-test " CPU_FLAGS_X86=“avx avx2 sse2 sse3 " 0 KiB
[binary N ] sys-devel/ucpp-1.3.5::gentoo 0 KiB
[binary N ] app-arch/rpm2targz-2021.03.16::gentoo 0 KiB
[ebuild U ~ ] app-office/libreoffice-l10n-7.2.5.2::gentoo [7.1.7.2::gentoo] USE=”-offlinehelp " L10N="be bg bs cs da de el en es et fi fr hr hu it kk lt lv nl pl pt pt-BR ro ru sk sl sq sr sv uk -af -
am -ar -as -ast -bn -bn-IN -bo -br -brx -ca -ca-valencia -ckb -cy -dgo -dsb -dz -en-GB -en-ZA -eo -eu -fa -fur -fy -ga -gd -gl -gu -gug -he -hi -hsb -id -is -ja -ka -kab -km -kmr-Latn -kn -ko -kok -ks -
— /etc/portage/package.accept_keywords/custom 2022-01-11 14:15:46.085079402 +0300
+++ /etc/portage/package.accept_keywords/._cfg0000_custom 2022-01-12 11:15:06.498299414 +0300
@@ -5,3 +5,9 @@

required by @selected

required by @world (argument)

=app-office/libreoffice-l10n-7.2.4.1 ~amd64
+# required by app-office/libreoffice-7.2.5.2::gentoo
+# required by @selected
+# required by @world (argument)
+=app-office/libreoffice-l10n-7.2.5.2 ~amd64
+# required by =app-office/libreoffice-7.2.5.2 (argument)
+=app-office/libreoffice-7.2.5.2 ~amd64

(1 of 1) – /etc/portage/package.accept_keywords/custom
q quit, h help, n next, e edit-new, z zap-new, u use-new
m merge, t toggle-merge, l look-merge:
calculate ~ # emerge -av --autounmask-write =app-office/libreoffice-7.2.5.2

Local copy of remote index is up-to-date and will be used.

Local copy of remote index is up-to-date and will be used.

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

Calculating dependencies… done!
[binary N ] dev-util/cppunit-1.15.1-r3:0/1.15::gentoo USE="-doc -examples " ABI_X86="(64 ) -32 (-x32 )" 0 KiB
[binary N ] dev-util/gperf-3.1::gentoo 0 KiB
[binary N ] media-libs/glm-0.9.9.8-r1::gentoo USE="-test " CPU_FLAGS_X86=“avx avx2 sse2 sse3 " 0 KiB
[binary N ] sys-devel/ucpp-1.3.5::gentoo 0 KiB
[binary N ] app-arch/rpm2targz-2021.03.16::gentoo 0 KiB
[ebuild U ~ ] app-office/libreoffice-l10n-7.2.5.2::gentoo [7.1.7.2::gentoo] USE=”-offlinehelp " L10N=“be bg bs cs da de el en es et fi fr hr hu it kk lt lv nl pl pt pt-BR ro ru sk sl sq sr sv uk -af -
am -ar -as -ast -bn -bn-IN -bo -br -brx -ca -ca-valencia -ckb -cy -dgo -dsb -dz -en-GB -en-ZA -eo -eu -fa -fur -fy -ga -gd -gl -gu -gug -he -hi -hsb -id -is -ja -ka -kab -km -kmr-Latn -kn -ko -kok -ks -
lb -lo -mai -mk -ml -mn -mni -mr -my -nb -ne -nn -nr -nso -oc -om -or -pa -rw -sa -sat -sd -si -sid -sr-Latn -ss -st -sw-TZ -szl -ta -te -tg -th -tn -tr -ts -tt -ug -uz -ve -vec -vi -xh -zh-CN -zh-TW -z
u” 89373 KiB
[binary N ] dev-perl/Archive-Zip-1.680.0::gentoo USE="-examples -test " 0 KiB
[binary N ] app-doc/doxygen-1.9.1::gentoo USE="-clang -debug -doc -dot -doxysearch -qt5 (-sqlite )" 0 KiB
[ebuild U ~ ] app-office/libreoffice-7.2.5.2::gentoo [7.1.7.2::gentoo] USE=“bluetooth cups dbus gstreamer gtk kde mariadb odk pdfimport vulkan -accessibility -base -branding -clang -coinmp -custom-cf
lags -debug -eds -firebird -googledrive -java -ldap -postgres -test " LIBREOFFICE_EXTENSIONS=”-nlpsolver -scripting-beanshell -scripting-javascript -wiki-publisher " PYTHON_SINGLE_TARGET="python3_9 -pytho
n3_8 -python3_10 " 356502 KiB

Total: 9 packages (2 upgrades, 7 new, 7 binaries), Size of downloads: 445874 KiB

Would you like to merge these packages? [Yes /No ] y

Verifying ebuild manifests
Running pre-merge checks for app-office/libreoffice-7.2.5.2
***** If you plan to use Base application you must enable USE base.
***** Without USE java, several wizards are not going to be available.

  • Checking for at least 512 MiB RAM … [ ok ]
  • Checking for at least 6 GiB disk space at “/var/calculate/tmp/portage/app-office/libreoffice-7.2.5.2/temp” … [ ok ]

Emerging binary (1 of 9 ) dev-util/cppunit-1.15.1-r3::gentoo
Emerging binary (2 of 9 ) dev-util/gperf-3.1::gentoo
Emerging binary (3 of 9 ) media-libs/glm-0.9.9.8-r1::gentoo
Emerging binary (4 of 9 ) sys-devel/ucpp-1.3.5::gentoo
Installing (4 of 9 ) sys-devel/ucpp-1.3.5::gentoo
Emerging binary (5 of 9 ) app-arch/rpm2targz-2021.03.16::gentoo
Installing (1 of 9 ) dev-util/cppunit-1.15.1-r3::gentoo
Emerging binary (6 of 9 ) dev-perl/Archive-Zip-1.680.0::gentoo
Installing (3 of 9 ) media-libs/glm-0.9.9.8-r1::gentoo
Emerging binary (7 of 9 ) app-doc/doxygen-1.9.1::gentoo
Installing (2 of 9 ) dev-util/gperf-3.1::gentoo
Installing (5 of 9 ) app-arch/rpm2targz-2021.03.16::gentoo
Installing (6 of 9 ) dev-perl/Archive-Zip-1.680.0::gentoo
Emerging (8 of 9 ) app-office/libreoffice-l10n-7.2.5.2::gentoo
Installing (7 of 9 ) app-doc/doxygen-1.9.1::gentoo
Installing (8 of 9 ) app-office/libreoffice-l10n-7.2.5.2::gentoo
Emerging (9 of 9 ) app-office/libreoffice-7.2.5.2::gentoo
Installing (9 of 9 ) app-office/libreoffice-7.2.5.2::gentoo
Jobs: 9 of 9 complete Load avg: 2.35, 4.56, 6.37

  • Messages for package app-office/libreoffice-7.2.5.2:

***** If you plan to use Base application you must enable USE base.
***** Without USE java, several wizards are not going to be available.

  • Messages for package app-office/libreoffice-7.1.7.2:

***** Directory symlink(s) may need protection:


***** /usr/share/doc/libreoffice-7.1.7.2/sdk/examples


***** Use the UNINSTALL_IGNORE variable to exempt specific symlinks
***** from the following search (see the make.conf man page).


***** Searching all installed packages for files installed via above symlink(s)…


***** The above directory symlink(s) are all safe to remove. Removing them now…


  • Messages for package app-office/libreoffice-7.2.5.2:

***** Building skia with gcc may lead to performance issues. Disable vulkan or enable clang.

Auto-cleaning packages…

No outdated packages were found on your system.
calculate ~ #