Стадии страдания гентушника

1. посмотреть на календарь и осознать что мир не обновлялся уже более 1 дня
2. скачать мировые новости emerge --sync
3. грустно запустить просчет мира emerge @world и горько заплакать
4. долго и усердно сражаться с блокирующими зависимостями
5. пересчитать мир ещё раз, увидеть сколько пакетов нужно компилировать и горько заплакать
6. увидеть что chromium, firefox, rust и libreoffice обновились на 0.0.0.0.1 версию и горько заплакать.
7. долго и усердно сражаться с компиляцией пакетов
8. запустить emerge @world и сильно радоваться актуальности мира
9. см. пункт 1

#gentoo

2021.02.16 16:25

И снова здравствуй gentoo world

Совсем недавно мне удалось найти волшебную строку для решения проблем со сборкой мира:

% emerge -1av $(equery depends  | sed 's/-[0-9]\{1,\}.*$//')

Но при всём волшебстве данного решения у него есть минус — оно пересобирает все зависимосити от данного пакета, даже если они они уже были собраны и не требуют обновления. Что иногда ОЧЕНЬ РАЗДРАЖАЕТ. Например , когда нужно пересобрать хромиум и либреофис пару лишних раз.

Но есть элегантное решение!

#!/bin/bash

PACKAGE="$1"
if [ "$PACKAGE" == "" ]; then
	echo 'Pass package name as param'
	exit
fi

emerge -1av $(emerge -pv --color n $(equery depends $1 | sed 's/-[0-9]\{1,\}.*$//') | grep --color=none '\[ebuild' | awk '!/\[ebuild.*?R.*?\]/' | sed 's/\[[^/]*\]//g' | sed 's/-[0-9]\{1,\}.*$//') 

Я не могу только понять почему чего-то подобного (и нормально сделанного) нет в базовой поставке — это же самое важное из того что нужно при обновлении этого проклятого мира.

(И давайте обойдёмся без оскорблений в комментариях в этот раз — я сам всё прекрасно про себя понимаю)

#gentoo

2021.02.16 12:55

gentoo@localhost # emerge @world || fix blocks

И снова здравствуйте! Не прошло и трёх лет (а нет, прошло) как мне очень захотелось обновить всё что катится, а всё что не катится покатить и тоже обновить. Пришло время моей gentoo сделать очередной rolling realise, знаете ли.

Вот уже третьи сутки пойдут скооро, а к заветному сабжу ещё даже не удалось подступиться, всё всякие зависимости и их блокировки, знаете ли rolling release всё же!


В интернетах получилось найти удивительную комбинацию неадекватного безумия и бесконечной гениальности:

emerge -1av $(equery depends <package-name> | sed 's/-[0-9]\{1,\}.*$//')

Допустим случилось невероятное и у вас возник блок пакета, типа emerge в общем-то и не против поставить уже новую версию пакета, но старая версия очень уж нужна другим пакетам:

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

sys-libs/readline:0

  (sys-libs/readline-8.0_p1:0/8::gentoo, installed) pulled in by
    >=sys-libs/readline-8.0:0= required by (app-shells/bash-5.0_p11:0/0::gentoo, ebuild scheduled for merge)
    ^^                  ^^^^^^                                                                                                                                                        
    sys-libs/readline:0/8= required by (app-text/hunspell-1.7.0-r1:0/1.7::gentoo, installed)
                     ^^^^^                                                                                                      
    (and 10 more with the same problems)

  (sys-libs/readline-7.0_p5:0/7::gentoo, ebuild scheduled for merge) pulled in by
    sys-libs/readline:0/7=[abi_x86_32(-),abi_x86_64(-)] required by (dev-db/sqlite-3.29.0:3/3::gentoo, installed)
                     ^^^^^                                                                                                                           
    (and 12 more with the same problem)

Вариантов решения такой проблемы как бы три:

1) Удалить пакет и забыть, а emerge там как-нибудь сам что-нибудь сделает, но такое можно сделать сильно невсегда

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

emerge -1av --nodeps sys-libs/readline:0

3) Обновить вручную все те пакеты что требуют старую версию пакета. Вот именно тут приходит на пользу строка упомянутая выше. Она, конечно, не обновляет все пакеты которые требуют старую версию, зато она просто обновляет все пакеты которым нужен указанный пакет. ВО-С-ХИ-ТИ-ТЕ-ЛЬ-НО:

emerge -1av $(equery depends sys-libs/readline:0 | sed 's/-[0-9]\{1,\}.*$//')

Случаются удивительные курьезы с версиями пакетов, например вот мне рассказывают что мой текущий пакет очень-очень устаревший, нужно очень-очень срочно его обновить:

- sys-libs/binutils-libs-2.32::gentoo (masked by: package.mask)
# If you still use one of these old toolchain packages, please upgrade (and
# switch the compiler / the binutils) ASAP. If you need them for a specific
# (isolated) use case, feel free to unmask them on your system.

Но на что же нам предлагают его обновить то?

[ebuild     U  ] sys-libs/binutils-libs-2.32-r1:0/2.32::gentoo [2.32:0/2.32::gentoo] USE="nls -64-bit-bfd -multitarget -static-libs" ABI_X86="32 (64) (-x32)" 20,431 KiB

Ага, то есть 2.32 плохо, а вот 2.32-r1 — это прям вот то что нужно, на острие!

Причём сам пакет замаскирован:

If you still use one of these old toolchain packages, please upgrade (and switch the compiler / the binutils) ASAP.

Affected packages: <sys -devel/gcc-5.4>, <sys-libs/glibc-2.28>, <sys-devel/binutils-2.32-r1>, <sys-devel/binutils-hppa64-2.32-r1>, <sys-libs/binutils-libs-2.32-r1>

Удивительный @world!

#gentoo

2019.09.06 03:30

Про обновление gentoo

В период тяжелого душевного состояния ради успокоения души решил расстаться с давним прошлым, расстался с ядром “vmlinuz-3.8.0-gentoo” и на его место воткнул “vmlinuz-3.19.1-gentoo”.

И двух лет и двух месяцев не прошло!

Так же обновил udev с версии 197 на актуальную и ноутбук даже загрузился сам!

С нетерпением жду xorg. Если и он не ляжет за 2 года необновления, то я буду уже в панике искать подставу. Слишком всё хорошо.

UPD: А нет, всё хорошо. Не удалил xorg из авторана и он загрузился без клавиатуры. А то я уж запереживал! А оно не подвело!

#gentoo

2015.03.09 23:35