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

http://www.calculate-linux.ru/blogs/ru/274/show

пинки, замечания и предложения приветствуются.

Предложение, как всегда, перенести в блог. Там тоже можно оставлять комментарии и делать правки.

с радостью, но, если я не ошибаюсь, я пока не могу туда писать. Если смогу - просто полностью скопировать статью?

Вы правы, уже можете. Статью лучше скопировать и оставить здесь ссылку.

Есть одно замечание (если я ничего не напутал)
На счет

Размаскируем требуемые пакеты, запустив команду
emerge -av --autounmask-write =media-sound/audacious-2.5.3 =media-plugins/audacious-plugins-2.5.3

Оно как-то не так.
Устанавливал я программу (уже не помню какую, допустим, audacious). Выдало предупреждение, что нужно размаскировать… и можно воспользоваться -autounmask-write. Я так и сделал emerge --autounmask-write y audacious. И все.
Не нужно явно указывать portage, что именно размаскировывать, тогда смысла в этой новой функции никакого, если я буду и дальше строчки писать, но вместо echo применять autounmask-write.

Только что проверил на хромиуме:

calculate ~ # eix ^chromium$
[I] www-client/chromium
     Available versions:  
    (0) 12.0.742.91-r1 12.0.742.112 ~13.0.782.32 ~13.0.782.41 [M]~14.0.797.0 [M]~14.0.803.0
    (live)  [M]**9999-r1
    {cups gnome gnome-keyring kerberos linguas_am linguas_ar linguas_bg linguas_bn linguas_ca linguas_cs linguas_da linguas_de linguas_el linguas_en_GB linguas_es linguas_es_LA linguas_et linguas_fa linguas_fi linguas_fil linguas_fr linguas_gu linguas_he linguas_hi linguas_hr linguas_hu linguas_id linguas_it linguas_ja linguas_kn linguas_ko linguas_lt linguas_lv linguas_ml linguas_mr linguas_nb linguas_nl linguas_pl linguas_pt_BR linguas_pt_PT linguas_ro linguas_ru linguas_sk linguas_sl linguas_sr linguas_sv linguas_sw linguas_ta linguas_te linguas_th linguas_tr linguas_uk linguas_vi linguas_zh_CN linguas_zh_TW test xinerama}
     Installed versions:  12.0.742.112(01:57:45 09.07.2011)(cups gnome gnome-keyring xinerama -kerberos -test)
     Homepage:            http://chromium.org/
     Description:         Open-source version of Google Chrome web browser

calculate ~ # emerge -av --autounmask-write www-client/chromium

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

Calculating dependencies... done!
[ebuild   R    ] www-client/chromium-12.0.742.112  USE="cups gnome gnome-keyring xinerama -kerberos -test" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

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

То есть не размаскировывает ничего и предлагает переустановить то, что уже установленно.

Пробуем вариант как в статье:

calculate ~ # emerge -av --autounmask-write =www-client/chromium-14.0.803.0

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

Calculating dependencies... done!
[ebuild     U #] www-client/chromium-14.0.803.0 [12.0.742.112] USE="cups gnome gnome-keyring xinerama -kerberos -test" LINGUAS="bg%* de%* es%* fr%* it%* pl%* pt_BR%* ro%* ru%* uk%* -am% -ar% -bn% -ca% -cs% -da% -el% -en_GB% -es_LA% -et% -fa% -fi% -fil% -gu% -he% -hi% -hr% -hu% -id% -ja% -kn% -ko% -lt% -lv% -ml% -mr% -nb% -nl% -pt_PT% -sk% -sl% -sr% -sv% -sw% -ta% -te% -th% -tr% -vi% -zh_CN% -zh_TW%" 198,384 kB

Total: 1 package (1 upgrade), Size of downloads: 198,384 kB

The following keyword changes are necessary to proceed:
#required by =www-client/chromium-14.0.803.0 (argument)
>=www-client/chromium-14.0.803.0:0 ~x86

The following mask changes are necessary to proceed:
#required by =www-client/chromium-14.0.803.0 (argument)
 # /usr/portage/profiles/package.mask:
 # Pawel Hajdan jr <phajdan.jr@gentoo.org> (17 Jun 2011)
 # Dev channel releases are only for people who are developers or want more
 # experimental features and accept a more unstable release.
>=www-client/chromium-14.0.803.0:0

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] n

Предлагает изменить конфиги.

Вы правы в том, что для одного пакетика сие добро ничуть не лучше echo, но если за замаскированным пакетом тянутся замаскированные либы - оно удобнее.

опять же, если в слоте есть стабильная версия, а надо размаскировать нестабильную, то используем так:

emerge -av --autounmask-write =www-client/chromium-14.0.803.0

если в слоте стабильных версий вообще нет, а есть только нестабильные, то достаточно использовать так, как вы сказали:

emerge -av --autounmask-write sci-geosciences/openstreetmap-icons

Допишу этот момент в статью.

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

Да, подходы разные. Спасибо за замечание, добавил этот момент в статью.

Господа, помогите.

calculate ~ # emerge -av --autounmask-write =media-sound/deadbeef-0.5.1-r1

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

Calculating dependencies… done!
[ebuild N ~] media-sound/deadbeef-0.5.1-r1 USE=“aac alsa cdda encode ffmpeg flac gtk libnotify mp3 musepack nls vorbis -adplug -cover -curl -dts -gme -hotkeys -imlib -lastfm -libsamplerate -m3u -mac -midi -mms -null -oss -pulseaudio -shellexec -sid -sndfile -supereq -threads -tta -vtx -wavpack -zip” 2,264 kB [1]

Total: 1 package (1 new), Size of downloads: 2,264 kB
Portage tree and overlays:
[0] /usr/portage
[1] /var/lib/layman/calculate

The following keyword changes are necessary to proceed:
#required by =media-sound/deadbeef-0.5.1-r1 (argument)
=media-sound/deadbeef-0.5.1-r1 ~amd64

The following problems occurred while writing autounmask changes:
!!! No file to write for ‘/etc/portage/package.keywords’

Где ошибка? Куда копать? Где и что поправить?
Спасибо.

Странно, смотрю в дереве media-sound/deadbeef-0.5.1-r1 в свободном доступе, не замаскирован. Попробуйте сначала выполнить:

eix-sync

затем снова:

emerge -av deadbeef

Алексей Ершов wrote:

Господа, помогите.

calculate ~ # emerge -av --autounmask-write =media-sound/deadbeef-0.5.1-r1

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

Calculating dependencies… done!
[ebuild N ~] media-sound/deadbeef-0.5.1-r1 USE=“aac alsa cdda encode ffmpeg flac gtk libnotify mp3 musepack nls vorbis -adplug -cover -curl -dts -gme -hotkeys -imlib -lastfm -libsamplerate -m3u -mac -midi -mms -null -oss -pulseaudio -shellexec -sid -sndfile -supereq -threads -tta -vtx -wavpack -zip” 2,264 kB [1]

Total: 1 package (1 new), Size of downloads: 2,264 kB
Portage tree and overlays:
[0] /usr/portage
[1] /var/lib/layman/calculate

The following keyword changes are necessary to proceed:
#required by =media-sound/deadbeef-0.5.1-r1 (argument)
=media-sound/deadbeef-0.5.1-r1 ~amd64

The following problems occurred while writing autounmask changes:
!!! No file to write for ‘/etc/portage/package.keywords’

Где ошибка? Куда копать? Где и что поправить?
Спасибо.

смотрим последнюю строчку. Оно нам говорит, что нет файлика, в который можно записать изменения. Поэтому сначала создайте файл в нужной директории:
touch /etc/portage/package.keywords/dependences

и повторите процесс снова. Это написано в последнем абзаце статьи.

Спасибо всем, кто откликнулся. Помогло. Начинаю убеждаться, что сообщество gentoo одно из самых дружелюбных.

echo "=media-sound/deadbeef-0.5.1-r1 ~amd64" >> /etc/portage/package.keywords/dependences

Если файла dependences ранее не существует, то командой echo такой создастся в указанной директории и запишется (">>") нужная размаскировка пакета - touch тогда не нужна

Если же файл dependences существует, то нужная размаскировка просто добавится в следующую строку