Возникла задача автоматизировать статический анализ пакетов в составе дистрибутива. Наилучший инструмент для этого — PVS Studio, потому что умеет перехватывать вызовы компилятора с помощью strace, таким образом, не требуя никаких изменений в сборочных скриптах. Сначала под наблюдением pvs-studio-analyzer
запускается сборка, собирает лог, затем запускается анализатор этого лога и формируется отчет. Рассмотрим, как такое настроить, избежав внесения правок в каждый пакет.
Читать далее Автоматический статический анализ с помощью PVS Studio при сборке RPM-пакетов
Автоматизация GDB с помощью xdotool
Понадобилось в отладчике gdb очень много раз повторить одинаковое действие, чтобы поймать значения переменных, которые были в момент сегфолта.
Открыл 2 терминала, в одном запустил программу под gdb, поставил точку остановки (breakpoint), запустил (run), другой средствами оконного менеджера закрепил поверх других окон, запустив в нем:
sleep 5; while true ; do xdotool type c && for type in A B ; do xdotool key KP_Enter && xdotool key p && xdotool key space && for i in $type E V R ; do xdotool type $i ; done; done && xdotool key KP_Enter ; sleep 0; if ! ps aux | grep -vE 'gdb|grep' | grep -q '/usr/bin/python3 /usr/bin/livecd-creator' ; then break ; fi; done
Этот код вводит нужные команды в gdb и проверяет, не остановился ли процесс, т.е. не произошел ли сегфолт, а если произошел, то перестает их вводить. Пошел по своим делам, оно само отработало, вернулся, передо мной был наглядный результат.
Не делать конкретные микрофон или динамики устройством по умолчанию в PulseAudio (Linux)
В PulseAudio есть модуль module-switch-on-connect, который делает подключаемое устройство ввода или вывода звука устройством по умолчанию.
Читать далее Не делать конкретные микрофон или динамики устройством по умолчанию в PulseAudio (Linux)
Алгоритм починки BTRFS
Скопирую сюда хорошее описание порядка действия для починки BTRFS. На английском.
Читать далее Алгоритм починки BTRFS
Хренак, хренак и зарелизили Федору
Выкачал копии репозиториев Fedora, выкачивал так:
Читать далее Хренак, хренак и зарелизили Федору
Обновление переводов в исходниках drakxtools
Все время забываю, как это делается, каждый раз приходится догадываться по Makefile, поэтому запишу процедуру обновления переводов после правки кода drakxtools.
cd perl-install/share/po
make libDrakX.pot (это добавит новую строку, в данном случае America/Nuuk, в шаблон с переводами)
make merge (обновить po из шаблона pot)
Дописать перевод в ru.po
make merge еще раз для форматирования po
Видео по работе с Git на примере пакетов в ROSA
Изощренное создание %pre скриптлета RPM-пакета из шаблона
Дано:
файл quagga-sysusers.conf («Source3: quagga-sysusers.conf» в RPM-спеке) с таким содержимым:
u @quagga_user@ - "Quagga routing suite user" /run/quagga g @quagga_user@ - m @quagga_user@ @quagga_user@ g @vty_group@ - m @quagga_user@ @vty_group@
При этом хочется использовать этот конфиг systemd-sysusers в предустановочном скриптлете RPM-пакета (%pre). Но нужно шаблоны @quagga_user@
и @vty_group@
заменить на их значения.
Читать далее Изощренное создание %pre скриптлета RPM-пакета из шаблона
КриптоПро, ошибка при создании контейнера: ctkey.c:1894:GenKey() Error number 0x80090020
При выполнении команды csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\container_name'
в CryptoPro внутри контейнера systemd-nspawn возникала ошибка:
ctkey.c:1894:GenKey() Error number 0x80090020
Пришлось запустить под strace, чтобы придумать решение:
mv -v /opt/cprocsp/lib/amd64/librdrrndmbio_gui_fgtk.so /opt/cprocsp/lib/amd64/librdrrndmbio_gui_fgtk.so.bak
По всей видимости, оно пыталось открыть окошко для генерации энтропии мышкой, но не могло это сделать в chroot без доступа к X-серверу.
Проверка DKIM и SPF из консоли на Linux
dig +short TXT domain.tld
dig +short TXT @ns1.domain.tld. domain.tld
spfquery --scope mfrom --id info@domain.tld --ip 111.222.333.444 --helo-id webserver1.domain.tld
Взято из Acymailing.