LINUX.ORG.RU

Сообщения dimgel

 
Форум — General

Запилил утилитку: check-link-consistency for ArchLinux

Аналог гентушной revdep-rebuild:

https://github.com/dimgel/check-link-consistency

Пробуйте, пользуйтесь.

UPD. Мотивация: пост, камент. Пример вывода. Добавлено в universe-репу ArtixLinux: pacman -Si check-link-consistency.

 ,

dimgel
()
Форум — General

pavucontrol определяет onboard hd-audio как unplugged

С некоторых пор сломался звук.

TL;DR: pavucontrol:

Configuration / Family 17 HD Audio Controller / Profile = "Default (unavailable)"
Output Devices / Port = "Line Out (unplugged)"

Запуск pipewire из ~/.config/openbox/autostart стандартный:

pipewire &
pipewire-pulse &
wireplumber &
pasystray &

pavucontrol / Configuration показывает две карты:

  1. «GP106 High Definition Audio Controller» (полагаю что-то на nvidia 1060), Profile = «Digital Stereo (HDMI 2) Output» (там куча профилей, но остальные unavailable). Она мне не нужна.

  2. «Family 17h (Models 00h-0fh) HD Audio Controller», Profile = «Off». В выпадающем списке есть ещё один профиль, который мне и нужен: «Default (unavailable)».

При каждом старте иксов:

  1. Открываю из систрея этот pavucontrol, выбираю профиль «Default (unavailable)», затем на вкладке «Output Devices» ставлю галку «Set as fallback» у «Family 17h (Models 00h-0fh) HD Audio Controller Line Out» (там в выпадающем списке «Port» – единственное значение «Line Out (unplugged)») и снимаю эту галку у «GP106…»; и даже после этого на вкладке «Playback» приходится вручную выставлять source для индивидуальных приложений; хорошо хоть она запоминает ранее выставленное.

Схрена ли unplugged? Куда копать?

 , ,

dimgel
()
Форум — Games

shader cache не сохраняется под другим юзером

Перетащил я witcher3 под другого юзера (захотелось). Прям весь wineprefix. Запускается, но при каждом запуске заново компиляет шейдеры.

У меня нвидия блоб. Файл witcher3.dxvk-cache (в каталоге witcher3/bin/x64) – 12 байт; так было всегда, никогда не понимал что это и зачем. Каталога ~/.nv и раньше не было. Куда копать? Может какую-нибудь нужную env-переменную не протаскиваю в xsudo (моя утилитка, протаскивающая .XAuthority, DISPLAY и ещё что-то выборочно), но среди них нету ничего с путями в значениях.

 ,

dimgel
()
Форум — General

Какая .so экспортирует символ miRegionCreate? (UPD: Загрузка .so с игнором GLOBAL DEFAULT UNDEF символа?)

Символы miRegion* импортируются /usr/lib/xorg/modules/drivers/nvidia_drv.so. Прочие mi* импортируемые разнообразными x11-драйверами (nvidia, amd, intel) лежат в /usr/lib/Xorg, а этот не могу найти. И при этом видяха-то работает.

 ,

dimgel
()
Форум — Development

Non-narrowing cast in C++

Есть non-narrowing инициализация: long l = 0; int i {l}; = ошибка. Хочу такой же typecast.

Вот так работает:

long l = 0;
void f(int) {}
f((int){l});  // ошибка
f({l});  // тоже ошибка

…но компилятор выплёвывает warning: -Wpedantic: "ISO C++ forbids compound-literals". Гы, неужели я слишком многого хочу? :)

Сделал в итоге вот такую дичь:

template<class R, class P> R safeCast(P x) {
	R y {x};
	return y;
}
f(safeCast<int>(l));   // ошибка

Не ругается, но дюже громозко (жду каментов «это ж плюсы, пора бы и привыкнуть»).

Есть ещё варианты?

 ,

dimgel
()
Форум — Talks

Должен ли я подставлять своё имя в строку «Copyright» в тексте WTFPL, и почему собственно?

Т.е. здесь вместо

Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> 

вписать

Copyright (C) 2021-2666 Моё Имя <моё@мыло> 

?

А то вдруг этот (c) относится к автору собственно текста лицензии, а себя любимого я должен ещё куда-нибудь вписать (e.g. AUTHORS.txt).

 

dimgel
()
Форум — Talks

А я уязвимость нашёл! В su.

Если после ввода неправильного пароля сразу нажать Ctrl+C (т.е. послать этому su не помню уж какой сигнал), то можно не дожидаться таймаута перед сообщением «Authentication failure», и перебирать пароли гораздо быстрее.

 ,

dimgel
()
Форум — Development

Перехватить ВЕСЬ свой stdout, в т.ч. выводимый чужими подлинкованными либами.

Как? Набрёл на вот такое:

char buf[SIZE];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buf);

ЯННП как это работает. Почему /dev/null на вход stdout? Каким боком это к задаче его перехвата?

И нельзя ли как-то без фиксированного размера буфера? Чую что надо pipe открыть, но как/куда/каким концом его потом?

 ,

dimgel
()
Форум — Security

Объясните плиз по-человечески, что такое NoSpam в ToxID.

С примером на пальцах если можно. В вике слишком сжато. Нашлась ещё какая-то Rust API дока, но от тамошнего английского у меня глаза на клавиатуру вытекли.

 

dimgel
()
Форум — Talks

А я всегда говорил, что source-based vs binary — это как статическая vs динамическая типизация.

И вот, недели не прошло как я поставил artix:

Там где гента матюгнулась бы ещё в процессе сборки пакета, тут мы обнаруживаем ошибку, пытаясь открыть pdf-ку.

  1. Сначала в иксах – и удивляемся, почему сначала ничего не происходит, а потом вместо моего любимого qpdfview вдруг пытается вылезти firefox (ему запретил: # chown root:root ~me/.mozilla; chmod …), а потом chromium (этот сука успешно).

  2. Потом в консоли – с подозрением на альцгеймер полез в ~/.config/mimeapps.

  3. Потом вызвал из консоли qpdfview и увидел что .so не найден.

  4. Потом ldd ``which qpdfview``, so не увидел.

  5. Потом догадался # pacman -S pax-utils; lddtree ``which qpdfview``.

  6. Потом вспомнил, что обновлялось 3 qt-шных пакета сразу, нашёл их в /var/log/pacman.log, по двум другим вызвал `pacman -Ql {package} | grep -F .so’, по найденным .so прогнал dlltree чтобы убедиться, что они тоже битые.

  7. Ручками отдаунгрейдил 3 пакета (вместе с libreoffice – 4) и прописал в игнор-лист в /etc/pacman.conf.

В будущем этот путь будет короче (как минимум без п.4), но всё равно – напороться на косяк в процессе работы (причём в данном случае – умеренно-срочной) крайне неприятно.

Сижу думаю над правильным аналогом гентушного revdep-rebuild; неправильный в AUR есть и он ни о чём т.к. не различает обязательные и опциональные зависимости. И вообще на питоне написан.

 

dimgel
()
Форум — Admin

/var/lib/pacman/local/*/{files vs mtree}, pacman -Qo

Правильно ли я понял:

  1. .MTREE нужен для установки пакета: в нём прописано с какими правами нужно создавать каталоги и т.д. Он копируется в /var/lib/pacman/local/*/mtree ради pacman -Qk. В каждой строчке по дефолту type=file, mode=хз-что-да-и-пох.

  2. Непонятно: зачем атрибут time в каждой строчке?

  3. pacman -Qo использует не mtree, а files, который генерится в момент установки.

 ,

dimgel
()
Форум — Linux-hardware

arch: Установить на флешку драйвера всех карт, чтобы можно было грузануться с неё в любой ноут.

Поставил я пакет nvidia (то бишь блоб). Разрешение в консоли конечно же слетело*, но иксы стартуют в нативном разрешении безо всяких xorg.conf (как и полагается).

Вопрос в сабже. А точнее:

  1. Встанут ли драйвера amd и intel рядом с nvidia, не будет ли каких-нибудь конфликтов (типа как при установке nvidia блэклистится nouveau)?

  2. Будут ли иксы сами определять, какой из драйверов загружать? Или от меня потребуются какие-то дополнительные пляски? (Какие?)

  3. Какие нынче драйвера нынче в моде – для amd (там была какая-то свистопляска) и для intel? С именами пакетов плиз.

4*. (праздное любопытство) Вроде ж была не так давно новость, что nvidia пилят что-то вокруг framebuffer? Не смог найти.

 , ,

dimgel
()
Форум — General

Что значит и откуда берётся «Starting version 249.6-1-artix» в начале загрузки?

  1. Это версия чего?

  2. Кто выводит это сообщение? Грепом 'Starting version' в /usr/lib/initcpio не нашёл.

 , ,

dimgel
()
Форум — Admin

pacman предлагает один и тот же пакет из разных реп, как сделать автовыбор?

«Multiple providers» bla-bla-bla. Чаще всего выбор из world (artix-репа, эквивалент арчевой extra) и extra (arch-репа). По дефолоту предлагает world (что логично: она в pacman.conf объявлена выше) (UPD: что попало по дефолту предлагает), однако даже тупо жать enter на все вопросы не то чтобы сильно влом, но как-то глупо.

 ,

dimgel
()
Форум — Talks

Господи, какое ж это щастье, когда менеджер пакетов не на питоне!

У меня всё.

Если кто не понял: хрен бы с ней с компиляцией, но вычисление зависимостей, поиск пакета-владельца файла и т.п. – pacman делает мгновенно, в то время как на «самом быстром дистре» emerge, equery, eix пердолятся часами.

 

dimgel
()
Форум — Development

Ковыряю тут s6 в artix, и вопросы у меня, архитектурного свойства...

Вопрос раз. Идея, что большая часть работы PID1 выполняется в early init (stage1) и shutdown (stage3), и весь этот код не нужен в аптайме (stage2) – очень толковая. Идея реализации этого принципа через три разных процесса, переход между которыми – тупо exec() без fork() – шикарная. Т.е. все три процесса имеют PID1. На stage1 работает s6-linux-init, на stage2 – лёгкий s6-svscan, и их функционал не пересекается. А вот с shutdown ЯННП:

1.1. Схренали в stage2 (т.е. весь аптайм) висит supervised-демон s6-linux-init-shutdownd? Прямо нарушая всю идею.

1.2. Схренали ли скрипты /run/service/.s6-svscan/{crash,finish} оба вызывают s6-linux-init-hpr -fr (forced reboot)? Т.е. получается, что в модели «exec() следующей stage из предыдущей» stage3 – это не shutdown, а исключительно мгновенный ребут в случае падения, а логический shutdown выполняется в рамках stage2.

1.3. Схрена ли s6-svscan по SIGTERM сначала останавливает супервизоры (и управляемые ими процессы), дожидается их завершения – и опять-таки проваливается в finish т.е. в forced reboot. Чем это отличается от shutdownd? Ну наверное можно найти чем: shutdownd вызывает /etc/s6/current/scripts/rc.shutdown, который вызывает s6-rc (полагаю, для остановки сервисов; доки подсистемы s6-rc ещё не читал). Т.е. по идее это более «корректная» остановка сервисов, чем тупо остановка long-running процессов, но всё равно ощущается как задвоение функционала с shutdownd.

1.4. И отсюда: почему нельзя было сделать так, чтобы по SIGTERM s6-svscan exec()-ался не в {crash,finish}, а в какой-нибудь другой скрипт, выполняющий честный stage3 (shutdown / halt / reboot), с вызовом s6-rc и всё такое?

Вопрос два. Аргументация, что /sbin/init должен быть сверхмаленьким и сверхнадёжным, – логична. Но: тут же этот s6-svscan под тем же рутом поднимает кучу процессов s6-supervise – по одному на сервис (точнее на long-running supervised process). Отсюда сразу две непонятки:

2.1. Схрена ли нельзя было все сервисы обслуживать одним супервайзером?

2.2. Схрена ли нельзя было объединить s6-svscan и s6-supervise, раз уж они один хрен все под рутом. (Впрочем, на эту тему автор что-то писал: мол, даже если супервайзер какой-то подохнет, PID1 останется жив. Но я не уверен, насколько это серьёзная аргументация.)

Вообще, я выбрал s6 т.к. повёлся на манифест его автора «нахрена ещё одна init-система», и может быть когда-нибудь в итоге даже и порадуюсь – мол какой я умный, разобрался и даже без 66 обошёлся. Но пока что чёт страшновастенько как-то…

Перемещено alpha из admin

 , ,

dimgel
()
Форум — Development

insert or update by std::map iterator

Имеется:

std::map<K,V> cache;
void updateCache(K k, V v) {
    auto it = cache.find(k);
    if (it == cache.end() || it->second.value != v) {
        cache[k] = v;
        persistCache();
    }
}

Как бы мне в строчке cache[k] = v; избежать повторного поиска ключа в map, а заюзать вместо этого уже имеющийся it?

 ,

dimgel
()
Форум — Admin

В runit есть фича «reload service without restart»? Как оно вообще с runit живётся?

Чтобы какой-нибудь nginx конфиг перечитал, не перезапускаясь.

В artix вики пишут:

Restart # sv restart service_name
Reload  # sv restart service_name 

В gentoo вики пишут:

The sv reload and sv try-restart commands are equivalent to sv -v hup, sv -v term respectively

Я правильно понимаю, что SIGHUP процессу это reload и есть, т.е. гентушная документация правильная?

И в догонку: какие в openrc есть фичи, которых нет в runit? Шоб такскать знать, чего потеряю. Например: есть ли dependencies override аналогично openrc-шному need !net net.eth0 в /etc/conf.d/...?

 

dimgel
()
Форум — Desktop

Насколько гиморно юзать AUR под ArtixLinux? Как оно вообще в Artix живётся?

А то пишут, что дескать возможны проблемы если устанавливаемый из AUR пакет зависит от systemd. Это что, автоматом никак не отслеживается? Т.е. e.g. раз systemd в арче один хрен обязателен, то и в зависимости пакетов он нигде не прописывается – ни в AUR, ни в других цепляемых артиксом арчевых репах?

Кстати, артикс вообще юзает по дефолту арчевы репы? И как там в этом Artix вообще с пакетами?

 , ,

dimgel
()
Форум — Development

Зогатко: wmctrl работает если вызывать через system(), не работает через fork() + exec().

Имеется Qt-прога myapp. Её главное окно соответственно имеет WM_CLASS=myapp (это неизменяемое поведение Qt) и заголовок «mycaption». Имеется открытый QtCreator с заголовком окна «globals.h (src @ myapp) …».

Вызываемое из самой этой проги fork() + execl("/usr/bin/wmctrl", "-x", "-a", "myapp", (char*)nullptr) не работает (активирует QtCreator если в заголовке его окна есть myapp, иначе ничего не делает), а вот system("wmctrl -x -a myapp") работает (активирует окно проги).

В чём может быть фокус? Не хочу лишний шелл вызывать.

// myMainWindow->activateWindow() не предлагать, оно поднимает окно в своём виртуальном десктопе, который может быть неактивен. Средствами Qt это не решается, задрачиваться с EWMH не имею желания.

 , ,

dimgel
()

RSS подписка на новые темы