среда, 11 декабря 2024 г.

Обновление Gentoo

Обновление Gentoo


Про что идёт речь?

Tips and tricks в одном месте про обновление системы. Новичкам будет полезно, и для себя памятка – то что используется “повседневно”, попробую вербализовать с оглядкой на wiki, будет много wiki.

Этапы обновления

  • синхронизация.
  • скачивание исходных файлов.
  • компилляция и установка.

Синхронизация


wiki

Расположение ebuild:

ранее использовалась переменная $PORTDIR сейчас определена в переменной location /etc/portage/repos.conf/gentoo.conf

location = /var/db/repos/gentoo

про репозитории будет чуть пониже…

есть различные варианты синхронизации ебилдов

  1. rsync
  2. git
  3. svn
  4. webrsync
  5. cvs
  6. laymansync (в истории)

из коробки rsync (см /usr/share/portage/config/repos.conf )

когда появилась синхронизация дерева по git все остальные перестали существовать (для меня). Из плюсов очень удобно управлять репозиториями, очень просто добавить свой локальный гитхабовский репозиторий с ебилдами, указать приоритет и т.д. все плюсы git

Пересказывая вики настройки синхронизации по git: файл /etc/portage/repos.conf/gentoo.conf приобретает черты

[DEFAULT]
main-repo = gentoo

[gentoo]
location = /var/db/repos/gentoo

sync-uri = git://anongit.gentoo.org/repo/sync/gentoo.git
sync-depth = 1
auto-sync = yes
sync-git-verify-commit-signature = true 

sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-keyserver = hkps://keys.gentoo.org
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4

Свой репозитарий можно добавить в этот же конфиг, или (лучше) создать отдельно в /etc/portage/repos.conf/your.conf

минимально

[aweal]
location = /var/db/repos/aweal
sync-type = git
sync-uri = https://github.com/aweal/overlay.git
auto-sync = yes
priority = 10
layman

в истории, использовался ранее для настройки оверлеев и их синхронизации - layman-updater -R
На смену пришел eselect repository

итак, синхронизация.

В самом запущенном варианте, например, когда еще не настроены вышеуказанные конфиги (в хендбуке именно этот вариант): emerge-webrsync

Остальные:

  • eix-sync
  • emerge --sync
  • emaint sync

Разница минимальная, если используется git и eselect repository то emaint -a sync, остальные тоже работают если все настроено, короче вскусовщина

fetch

Скачивание исходников…

Это лишний шаг т.к. после обновления дерева ebuld-ов можно запускать обновление:

emerge --sync && emerge -uDN @world

здесь и далее в качестве параметра указан set world, но можно и emerge -uDN world

Если же нужно скачать или вытащить URL для закачивания.

Актуально если лимитирован трафик (или если нет интернета), сейчас все больше:

SN 1054 ~ # emerge -pf discord

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

Calculating dependencies... done!
Dependency resolution took 6.88 s (backtrack: 0/20).

https://dl.discordapp.net/apps/linux/0.0.76/discord-0.0.76.tar.gz 

Ну и здесь же, нужно указать про FEATURES parallel-fetch, которая определена в /usr/share/portage/config/make.globals, в редких случаях (если distfiles в сетевой папке) можно попасть в race conditions; решение – переменная переопределяется в make.conf

Сборка


Подготовка, различная дополнительная информация.

Для вывода информации какие пакеты будут обновлены – флаг --pretend, -p (хорошо комбинируется с --tree, -t - вывод в виде дерева зависимостей)

emerge -uDUpt @world


[ebuild    FU #] sys-block/partitionmanager-24.12.0 [24.08.3]
[ebuild    FU #] net-p2p/ktorrent-24.12.0 [24.11.90]
[ebuild     U  ] net-im/discord-0.0.76 [0.0.75]
[ebuild    FU #] media-gfx/kio-ps-thumbnailer-24.12.0 [24.11.90]
[ebuild    FU #] kde-misc/markdownpart-24.12.0 [24.11.90]
[ebuild    FU #] kde-misc/kio-gdrive-24.12.0 [24.11.90]
[ebuild    FU #] kde-misc/kdeconnect-24.12.0 [24.11.90]
[ebuild    FU #] app-editors/ghostwriter-24.12.0 [24.08.3]
[nomerge       ] net-p2p/ktorrent-24.12.0 [24.11.90]
[ebuild    FU #]  net-libs/libktorrent-24.12.0 [24.11.90]
[nomerge       ] sys-block/partitionmanager-24.12.0 [24.08.3]
[ebuild    FU #]  sys-libs/kpmcore-24.12.0 [24.08.3]
[ebuild    FU #] kde-misc/kio-gdrive-common-24.12.0 [24.08.3]

легенда из man emerge:

 N   new (not yet installed)
 S   new SLOT installation (side-by-side versions)
 U   updating (to another version)
 D   downgrading (best version seems lower)
 r   reinstall (forced for some reason, possibly due to slot or sub-slot)
 R   replacing (remerging same version)
 F   fetch restricted (must be manually downloaded)
 f   fetch restricted (already downloaded)
 I   interactive (requires user input)
 B   blocked by another package (unresolved conflict)
 b   blocked by another package (automatically resolved conflict)

Если нужно полюбопытствовать какие есть флаги / версии пакета перед установкой.

SN 1054 ~ # eshowkw dev-qt/qtwebengine
Keywords for dev-qt/qtwebengine:
                  |                             |   u            |  
                  | a   a     p s   a l   r     |   n            |  
                  | m   r h   p p   l o m i s m | e u s          | r
                  | d a m p p c a x p o i s 3 6 | a s l          | e
                  | 6 r 6 p p 6 r 8 h n p c 9 8 | p e o          | p
                  | 4 m 4 a c 4 c 6 a g s v 0 k | i d t          | o
------------------+-----------------------------+----------------+-------
5.15.14_p20240510 | + o + o o o o o o o o o o o | 8 o 5/5.15     | gentoo
5.15.16_p20241115 | ~ o ~ o o o o o o o o o o o | 8 o            | gentoo
------------------+-----------------------------+----------------+-------
            6.7.2 | + o + o o o o o o o o o o o | 8 o 6/6.7.2    | gentoo
------------------+-----------------------------+----------------+-------
            6.7.3 | + o ~ o o o o o o o o o o o | 8 o 6/6.7.3    | gentoo
------------------+-----------------------------+----------------+-------
         [I]6.8.1 | ~ o ~ o o o o o o o o o o o | 8 o 6/6.8.1    | gentoo
------------------+-----------------------------+----------------+-------
         6.8.9999 | o o o o o o o o o o o o o o | 8 o 6/6.8.9999 | gentoo
------------------+-----------------------------+----------------+-------
           6.9999 | o o o o o o o o o o o o o o | 8 o 6/6.9999   | gentoo

про лайф сборки

обычно именуются 9999 и собираются из исходников git репозитория (обновлять их придётся отдельно: emerge @smart-live-rebuild) или “нестабильные” ебилды (например нестабильные nvidia-drivers).

Размаскироваются знаком ** см вики:

cat /etc/portage/package.accept_keywords/nvidia.accept_keywords

x11-drivers/nvidia-drivers **

ну и здесь же про USE флаги, подробное их описание

equery u x11-drivers/nvidia-drivers
equery u x11-drivers/nvidia-drivers
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for x11-drivers/nvidia-drivers-565.77:
 U I
 + + X                : Add support for X11
 + + abi_x86_32       : 32-bit (x86) libraries
 - - dist-kernel      : Enable subslot rebuilds on Distribution Kernel upgrades
 + + kernel-open      : Use the open source variant of the drivers (Turing/Ampere+ GPUs only, aka GTX 1650+ -- recommended with >=560.xx drivers if usable) 
 + + modules          : Build the kernel modules
 - - modules-compress : Install compressed kernel modules (if kernel config enables module compression)
 - - modules-sign     : Cryptographically sign installed kernel modules (requires CONFIG_MODULE_SIG=y in the kernel)
 - - persistenced     : Install the persistence daemon for keeping devices state when unused (e.g. for headless)
 - - powerd           : Install the NVIDIA dynamic boost support daemon (only useful with specific laptops, ignore if unsure)
 + + static-libs      : Install the XNVCtrl static library for accessing sensors and other features
 + + strip            : Allow symbol stripping to be performed by the ebuild for special files
 + + tools            : Install additional tools such as nvidia-settings
 + + wayland          : Enable dev-libs/wayland backend

время сборки

app-portage/genlop мастхев (можно узнать время сборки пакета genlop -t firefox или что собирается в настоящее время genlop -c ну и другие примеры есть в man genlop)

emerge -uDUp @world | genlop --pretend

These are the pretended packages: (this may take a while; wait...)

Estimated update time: 11 hours, 17 minutes.

Насколько точно? очень и очень приблизительно, но это и логично, ведь например тот же ff на моей машине собирается с большим разбросом:

SN 1054 ~ # genlop -t firefox | grep time
       merge time: 14 minutes and 57 seconds.
       merge time: 17 minutes and 21 seconds.
       merge time: 31 minutes and 36 seconds.
       merge time: 15 minutes and 55 seconds.
       merge time: 17 minutes and 39 seconds.
       merge time: 17 minutes and 48 seconds.
       merge time: 15 minutes and 47 seconds.
       merge time: 14 minutes and 32 seconds.
       merge time: 1 hour, 25 minutes and 13 seconds.
       merge time: 1 hour, 3 minutes and 39 seconds.
       merge time: 27 minutes.
       merge time: 5 hours, 32 minutes and 8 seconds.
       merge time: 27 minutes and 51 seconds.
       merge time: 27 minutes and 44 seconds.
       merge time: 21 minutes and 45 seconds.
       merge time: 1 hour, 3 minutes and 7 seconds.

ну и сама сборка

emerge -uDU @world

что может пойти не так?

  1. Прерывается сборка
  • если это один пакет и нет багрепорта (и/или не хочется разбираться) то проще будет его пропустить: emerge –resume –skip-first

  • Если нужно постоянно “докомпиливать” при прерывании то есть FEATURES=“keepwork”

  • В ряде случаев когда обрывается на нехватки памяти или места на диске в процессе сборки (после решения проблемы) можно вручную “докомпилить”, так же как и во время попыток исправления исходников (хотя все же проще вытащить проблемную команду из лога):

SN 1054 ~ # emerge dev-qt/qtwebengine
Calculating dependencies... done!
Dependency resolution took 1.52 s (backtrack: 0/20).

>>> Verifying ebuild manifests
>>> Running pre-merge checks for dev-qt/qtwebengine-6.8.1
 * Checking for at least 24 GiB RAM ...                                                                                  [ ok ]
 * Checking for at least 9 GiB disk space at "/tmp/portage/dev-qt/qtwebengine-6.8.1/temp" ...                            [ ok ]
 * Checking for at least 360 MiB disk space at "/usr" ...                                                                [ ok ]
>>> Emerging (1 of 1) dev-qt/qtwebengine-6.8.1::gentoo
>>> Jobs: 0 of 1 complete, 1 running                                    Load avg: 12.7, 12.3, 8.6^C

Exiting on signal 2



SN 1054 ~ # ebuild /var/db/repos/gentoo/dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild merge 
>>> Existing ${T}/environment for 'qtwebengine-6.8.1' will be sourced. Run
>>> 'clean' to start with a fresh environment.
>>> Checking qtwebengine-6.8-patchset-7.tar.xz's mtime...
>>> Checking qtwebengine-everywhere-src-6.8.1.tar.xz's mtime...
>>> WORKDIR is up-to-date, keeping...
 * Checking for at least 24 GiB RAM ...                                                                                  [ ok ]
 * Checking for at least 9 GiB disk space at "/tmp/portage/dev-qt/qtwebengine-6.8.1/temp" ...                            [ ok ]
 * Checking for at least 360 MiB disk space at "/usr" ...                                                                [ ok ]
>>> It appears that 'setup' has already executed for 'qtwebengine-6.8.1'; skipping.
>>> Remove '/tmp/portage/dev-qt/qtwebengine-6.8.1/.setuped' to force setup.
>>> It appears that 'unpack' has already executed for 'qtwebengine-6.8.1'; skipping.
>>> Remove '/tmp/portage/dev-qt/qtwebengine-6.8.1/.unpacked' to force unpack.
>>> It appears that 'prepare' has already executed for 'qtwebengine-6.8.1'; skipping.
>>> Remove '/tmp/portage/dev-qt/qtwebengine-6.8.1/.prepared' to force prepare.
>>> It appears that 'configure' has already executed for 'qtwebengine-6.8.1'; skipping.
>>> Remove '/tmp/portage/dev-qt/qtwebengine-6.8.1/.configured' to force configure.
>>> Compiling source in /tmp/portage/dev-qt/qtwebengine-6.8.1/work/qtwebengine-everywhere-src-6.8.1 ...
  1. Если родитель запустивший emerge -uDN @world пропал (часто бывает при обновлении по ssh с разрывом соединения или если ошибочно закрыть konsole).
  • первое золотое правило app-misc/screen

если ты на автомате владеешь навигацией ^p ^n ^b ^f etc то наверно не раз пытался перескочить на начало строки по ^a и вызывал shift screen (с матами), но есть годный лайфхак как перейти на начало строки в screen - ^a a. очень логично, и потом на автомате если ^a не сработало добавляешь a. Ну и еще наверно хот-кей C-a F (fit) важен – т.к. разные размеры консоли на VDS и локалхосте. Все хоткеи доступны через ^a ?

  • второй вариант - nohup - вывод если не перенаправлен будет в nohup.out, подробнее смотри man nohup он очень краткий.
  1. если хочется странного из оверлея kde то рано или поздно получится

    Fetch instructions for kde-frameworks/kglobalaccel-6.9.0:
     *  _   _ _   _ ____  _____ _     _____    _    ____  _____ ____  
     * | | | | \ | |  _ \| ____| |   | ____|  / \  / ___|| ____|  _ \ 
     * | | | |  \| | |_) |  _| | |   |  _|   / _ \ \___ \|  _| | | | |
     * | |_| | |\  |  _ <| |___| |___| |___ / ___ \ ___) | |___| |_| |
     *  \___/|_| \_|_| \_\_____|_____|_____/_/   \_\____/|_____|____/ 
     -                                                                
     *  ____   _    ____ _  __    _    ____ _____ 
     * |  _ \ / \  / ___| |/ /   / \  / ___| ____|
     * | |_) / _ \| |   | ' /   / _ \| |  _|  _|  
     * |  __/ ___ \ |___| . \  / ___ \ |_| | |___ 
     * |_| /_/   \_\____|_|\_\/_/   \_\____|_____|
     - 
     * kde-frameworks/kglobalaccel-6.9.0 has not been released to the public yet
     * and is only available to packagers right now.
     - 
     * This is not a bug. Please do not file bugs or contact upstream about this.
     - 
     * Please consult the upstream release schedule to see when this 
     * package is scheduled to be released:
     * https://community.kde.org/Schedules/Frameworks
    

    во-первых нужно размаскировать весь сет

    sed -r 's/.{,1}/=/'  /var/db/repos/kde/profiles/package.mask/kde-gear-24.12.0
    
    

    перенаправлять с осторожностью там еще комментарии есть.

    во вторых … подождать релиза google calendar

    в ожидании релиза можно спокойно обновляться

    emerge -uDN @world --exclude 'kde-frameworks/* kde-apps/*'
    
    

    или переходить на live-версии (для обновлении которых есть сет @smart-live-rebuild)

  2. Неявные ошибки.

в большинстве случаев проще перезапустить обновление, но для понимания и для частных случаев разбор

  • смотрите логи:

    • обычно есть в выводе: /var/log/portage/net-im:discord-0.0.76:20241208-182707.log
      Downloading 'https://dl.discordapp.net/apps/linux/0.0.76/discord-0.0.76.tar.gz'
      --2024-12-08 21:27:07--  https://dl.discordapp.net/apps/linux/0.0.76/discord-0.0.76.tar.gz
      Resolving dl.discordapp.net... 188.114.98.225, 188.114.99.225, 2a06:98c1:3122:e000::1, ...
      Connecting to dl.discordapp.net|188.114.98.225|:443... connected.
      OpenSSL: error:0A000126:SSL routines::unexpected eof while reading
      Unable to establish SSL connection.
      !!! Couldn't download 'discord-0.0.76.tar.gz'. Aborting.
      
    • если нет то build.log

      cat /tmp/portage/net-im/discord-0.0.76/temp/build.log
       Downloading 'https://dl.discordapp.net/apps/linux/0.0.76/discord-0.0.76.tar.gz'
      --2024-12-08 21:27:07--  https://dl.discordapp.net/apps/linux/0.0.76/discord-0.0.76.tar.gz
      Resolving dl.discordapp.net... 188.114.98.225, 188.114.99.225, 2a06:98c1:3122:e000::1, ...
      Connecting to dl.discordapp.net|188.114.98.225|:443... connected.
      OpenSSL: error:0A000126:SSL routines::unexpected eof while reading
      Unable to establish SSL connection.
      !!! Couldn't download 'discord-0.0.76.tar.gz'. Aborting.
      

переменная PORTAGE_TMPDIR в моем случае была переопределена. The PORTAGE_TMPDIR variable defines the location of the temporary files for Portage. The value defaults to /var/tmp, resulting in /var/tmp/portage for the build location. В моем случае (tmpfs) PORTAGE_TMPDIR=”/tmp”, у вас может быть другой!

медитативный вуайеризм.

  • legacy (снова) раньше тот же emerge -uDN world выводил все содержимое build.log в первый файловый дескриптор, но можно и вернуть:

     emerge --ignore-default-opts --jobs=1 --quiet-build=n uDN @world
    

    хотя, если честно, проблем с многопоточной компиляцией сейчас нет.

  • quiet-build=y имеет вывод типа

    >>> Emerging (1050 of 100500) dev-qt/qtwebengine-6.8.1::gentoo
    >>> Jobs: 10 of 100500 complete, 1005 running                                    Load avg: 3.09, 1.56, 1.32
    
    

    и не просто понять какой из пакетов сейчас устанавливается (хотя какая разница, если честно), но все же, вместо того чтобы искать что там сейчас компилится есть

    genlop -ci

    для особо долгих процессов можно почекать сколько там осталось (минуя ETA из genlop) что-то типа:

    tail -f  /tmp/portage/dev-qt/qtwebengine-6.8.1/temp/build.log | grep -o '^[^]]*' 
    
    

можно устроить вывод в строку используя цикл: что-то типа
SN 1054 ~ # while true; do echo -en $(genlop -c | grep ETA) && echo -en "\033[1A\n" ; sleep 2; done

    • или же
    watch "tail -n 1  /tmp/portage/dev-qt/qtwebengine-6.8.1/temp/build.log  | grep -o '^[^]]*'"

Остановлюсь поподробнее – полезные опции:

-c, --color – цветной вывод (по умолчанию нет).

-n, --interval 2 – аналог sleep 2 если выводить в цикле (пример выше)

-q, --equexit 10 – если 10 циклов нет изменений в выводе – выход

-g, --chgexit – если поменялся вывод то выход.

можно отслеживать длительные процессы и по завершению выводить статус выхода в файл $? > /tmp/exit_status_file и устраивать межскриптовые гонки watch -g /tmp/exit_status_file как только изменится содержимое файла watch прервётся.

можно “следить” сразу выводом за нескольких программ watch -n 1 --no-title "genlop -ci; echo; echo; tail -v -n 2 /var/log/emerge.log"

так же можно передать функцию в watch:

fn_watch{
   genlop -ci
    echo
    tail -n1 -v "$1"
    echo "";
    tail -n1  -v /var/log/emerge.log
}
export -f fn_watch

watch  q1 -c -x bash -c "fn_watch"

После установки…


обновление конфигурационных файлов.

dispatch-conf или etc-update

от себя рекомендую вручную каждый конф обновлять, т.к. большинство изменений просто затрется…

еще момент. Если пропустить слияние и оставить старый (-9 to discard all updates AND not use ‘rm -i’), после повторной переустановки пакета dispatch-conf не будет пытаться обновить конфигии, т.к. он уже помечен как “обработанный”, я так попался с bash. Ну и решение:

emerge bash --noconfmem

автоматизация обновления ядра

идея проста – при обновлении gentoo-sourses автоматически обновлять ядро (однотипные действия же: старый конфиг скопировать в /usr/src/linux, make oldconifg make make_modueles install и make install). Реализуется созданием /etc/portage/env/sys-kernel/gentoo-sources с переопределнием post_pkg_postinst

есть нюанс – если вызвать по очереди в скрипте на старте обновления создается lock файл Во время обновления (например собралось несколько пакетов, начинает устанавливаться gentoo-sources) и вызов нового инстанса, например, emerge @module-rebuild приведет к race condition.

Я решил строчкой touch /tmp/.kerupdate

cat /etc/portage/env/sys-kernel/gentoo-sources
function post_pkg_postinst() {
        touch /tmp/.kerupdate
}

и уже по завершении обновления в конце скрипта проверять на наличие файла – если в наличии запускается скрипт обновления ядра. Велосипед? Да, но есть и

другой вариант virtual/dist-kernel

(он мне нравится гораздо меньше, как и сборка ядра не “вручную”), в этом кайф gentoo – день потратил на создание конфига ядра сидишь урчишь до глобального обновления железа…

user patches

Крайне удобная вещь. Особенно если нужно каждый раз исправлять в исходниках одну и туже строчку, мне например хочется каждый раз изменять поведение gwenview в режиме spotlight и выходить не из режима а из программы -

cat /etc/portage/patches/kde-apps/gwenview/spotlightmode-quit.patch
--- a/app/spotlightmode.cpp     2024-05-17 01:09:07.000000000 +0300
+++ b/app/spotlightmode.cpp     2024-06-03 13:01:16.137964554 +0300
@@ -9,6 +9,7 @@
 #include "spotlightmode.h"
 
 // Qt
+#include <QApplication>
 #include <QHBoxLayout>
 #include <QPushButton>
 
@@ -53,7 +54,7 @@
 void SpotlightMode::emitButtonQuitClicked()
 {
     GwenviewConfig::setSpotlightMode(false);
-    d->mActionCollection->action(QStringLiteral("view_toggle_spotlightmode"))->trigger();
+    qApp->quit();
 }
 
 } // namespace

или в моем случае есть баг который из версии в версию не дает собраться qtcreator - (ошибка в именах типах которая решается cmake переменной -fext-numeric-literals)

SN 1054 ~ # cat /etc/portage/patches/dev-qt/qt-creator/files/qt-creator-float-suffix-q.patch 
--- a/CMakeLists.txt 
+++ b/CMakeLists.txt
@@ -59,6 +59,9 @@
   set(IMPLICIT_DEPENDS Qt::Test)
 endif()
 
+# float suffix error:
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals")
+
 # suppress bogus warning
 # warning C4573 requires the compiler to capture 'this' but the current default capture mode does not allow it
 # when using QObject::connect in lambda without capturing 'this' - which would lead to warnings

так же можно использовать к определённой версии пакета тогда путь будет вида /etc/portage/patches/${CATEGORY}/${P}-${PR}

/etc/portage/patches/dev-qt/qt-creator-15.0.0-r1/files/qt-creator-float-suffix-q.patch

Ну, и если, ты нагирался написанием bash скриптов (обновление явно такой > 400 строчек выходит), можно посмотреть в сторону:

https://blogs.gentoo.org/gsoc/2023/08/27/final-report-automated-gentoo-system-updater/

четверг, 1 августа 2024 г.

Nvidia 650 kernel-open vs steam .

Steam и NVIDIA drivers 650.

Открытые nvidia модули доступны с 2022 года, скоро будут "по умолчанию". В Gentoo для компилияции открытых модулей есть USE флаг kernel-open (подробнее см вики).

$ cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX Open Kernel Module for x86_64  560.28.03  Release Build  (portage@localhost)  Wed Jul 31 10:48:51 AM MSK 2024
GCC version:  gcc version 14.1.1 20240720 (Gentoo 14.1.1_p20240720 p4) 

Все что будет ниже справедливо для KDE-6 сессии wayland.

Запуск сессии exec dbus-launch --exit-with-session startplasma-wayland

"важные" переменные (у меня определены .bash_profile) но разумнее использовать $HOME/.config/plasma-workspace/env/


# fix: kwin_wayland_drm: atomic commit failed: Invalid argument
export WLR_DRM_NO_ATOMIC=1

#bug: QT_QPA_PLATFORMTHEME not set: transparency performance issues (disable 560)
#export QT_QPA_PLATFORMTHEME=qt6ct

# High DPI Support in Qt
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export QT_QPA_PLATFORM=wayland

export XDG_CURRENT_DESKTOP=KDE
export XDG_SESSION_DESKTOP=KDE
export XDG_BACKEND=wayland


#kwin:  Q подтормаживает;  O2ES - нет курсора? wtf.
export KWIN_COMPOSE=O2

#VSYNC DISABLE
export KWIN_X11_NO_SYNC_TO_VBLANK=1
export KWIN_X11_FORCE_SOFTWARE_VSYNC=1

# https://community.kde.org/KWin/Environment_Variables#KWIN_USE_BUFFER_AGE
# export KWIN_USE_BUFFER_AGE=0

# nVidia Explicit Sync с 555 .
export KWIN_EXPLICIT_SYNC=1

#gsync
export __GL_GSYNC_ALLOWED=0
#gsync flipping
export __GL_VRR_ALLOWED=0



#EAC for apex:
export SDL_VIDEODRIVER='wayland,x11,windows'

так же должны быть созданы и определены XDG_CACHE_HOME XDG_RUNTIME_DIR XDG_RUNTIME_DIR

специфичные nvidia настройки.

в /etc/modprobe.d/nvidia.conf

  • options nvidia-drm modeset=1
  • options nvidia-drm fbdev=1
  • blacklist nouveau

зависимости:

  • DRM KMS must be enabled (см вики).
  • Xwayland с c468d34c коммита.
  • libxcb => 1.13
  • egl-wayland => 1.1.7

подробнее тут

$ bzcat /usr/share/doc/nvidia-drivers-560.28.03-r3/README.txt.bz2


steam

С чем столкнулся:

GLib-GIO-WARNING **: Can't find module 'dconf' specified in GSETTINGS_BACKEND

см багрепотр

решение: GSETTINGS_BACKEND=keyfile steam

Если игре нужен ЕАС, то помимо переменной SDL_VIDEODRIVER='wayland,x11,windows' нужно пересобрать sys-libs/glibc-2.40 c USE-флагом hash-sysv-compat

В 560 игра не запускается (хотя без проблем работала в 555, правда без открытых модулей).

Можно "запустить" с PROTON_USE_WINED3D=1 %command% будет хорошее слайдшоу и беда с текстурами


В итоге запускает в gamescope все без проблем работает.

Ещё потребуются:

  • games-util/gamemode
  • gui-wm/gamescope

launch options:

gamemoderun gamescope -W 1920 -H 1080 -r 144 --fullscreen --force-grab-cursor --grab --steam %command%

Если нужно несколько языков в чате то еще придется добавить примерно такое (у меня по клавише L-super) XKB_DEFAULT_LAYOUT=us,ru XKB_DEFAULT_OPTIONS=grp:lwin_toggle

для других вариантов: grep grp /usr/share/X11/xkb/rules/evdev.lst

вторник, 2 июля 2024 г.

ffmpeg hw acceleration в 2024г.

Заметка под аффектом от ffmpeg.

В двух вещах понадобился ffmpeg и как оказалось что он гораздо круче gui тулз.

  1. Совместить видео и аудио без декодирования.

Хотел скачать видео в дорогу с youtube через savefrom

Насколько понимаю отдельно лежат video и аудиофайлы, при скачивании в нужном мне качестве имеем два файла (videoplayback.mp4 и звук - videoplayback.m4a) собрать из них один очень просто (скорость моментальная):

time ffmpeg -i videoplayback.mp4 -i videoplayback.m4a  -vcodec copy -acodec copy output.mp4

real    0m1.677s
user    0m0.287s
sys     0m0.105s
  1. Грабинг DVD h256.

Раньше (когда дотрагивался) этот процесс занимал целую вечность, сейчас при аппаратном ускорении буквально минуты, да и размер файла оказывается минимальным.

ffmpeg дб собрать с поддержкой HW-acceleration, для nvivdia -- nvenc

equery u  ffmpeg |grep nvenc
+nvenc

ffmpeg -hwaccels shows
...
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
vulkan

...

В папке DVD (как правило VIDEO_TS) находятся видеофайлы. Для уменьшения размера выходного файла оставляем только нужную дорожку:

ffprobe VTS_01_1.VOB
...
  Stream #0:0[0x1bf]: Data: dvd_nav_packet
  Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 8500000/0/0 buffer size: 1835008 vbv_delay: N/A
  Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:3[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s

Имеется 2 аудио-дорожки, искомая (0:2) - отображается в mpv как 1 звуковая дорожка, 0:1 - видео дорожка.

Ну и сам граббинг

time ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB\|VTS_01_4.VOB\|VTS_01_5.VOB -map 0:1 -map 0:2 -c:v hevc_nvenc  output.mp4
real    3m44.409s
user    5m39.764s
sys     0m11.438s

за 4 минуты из 6Гб выходной файл размером в 1.5Гб, при этом мне кажется даже карта особо не напрягается -- каеф...

воскресенье, 19 февраля 2017 г.

fritzing - для печати плат

Хочу поделиться с лучшей программой для ардуинщика в плане печатных плат, скриншоты:
Для примера схема подключения lcd 1602




на выходе: 

для себя набросал ebuild (kf5)



links:
http://rayshobby.net/cheap-16x2-lcd-with-led-back-light/

http://fritzing.org/home/

пятница, 25 марта 2016 г.

Китайский arduino в gentoo

заказал китай-Uno  (не реферальная)

дошло очень быстро без трека:

  • 2016.03.07 06:43 (GMT-7): Shipped by air
  • 2016.03.04 21:12 (GMT-7): Departure from Warehouse
  • 2016.03.04 20:13 (GMT-7): arrive export exchange
  • 2016.03.04 14:55 (GMT-7): Arrival at Warehouse
  • 2016.03.04 14:47 (GMT-7): Warehouses has signed
  • 2016.03.04 06:43 (GMT-7): Export customs clearance complete
  • 2016.03.04 05:12 (GMT-7): Successful departure from Warehouse
  • 2016.03.03 22:55 (GMT-7): Warehouse processing complete
  • 2016.03.03 22:47 (GMT-7): Successful package received by 


при подключении к миниюсб в dmsg


  • [Mar23 23:51] usb 4-5: USB disconnect, device number 5
    [ +2.570622] usb 4-5: new full-speed USB device number 6 using ohci-pci


    нашел в ядре нечто похожее на CH340:

  │ Symbol: USB_SERIAL_CH341 [=m]                                                                                                    │  

  │ Type  : tristate                                                                                                                 │  

  │ Prompt: USB Winchiphead CH341 Single Port Serial Driver                                                                          │  

  │   Location:                                                                                                                      │  

  │     -> Device Drivers                                                                                                            │  

  │       -> USB support (USB_SUPPORT [=y])                                                                                          │  

  │ (3)     -> USB Serial Converter support (USB_SERIAL [=y])                                                                        │  

  │   Defined at drivers/usb/serial/Kconfig:102                                                                                      │  
  │   Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y] 

и теперь при подключении:

[ +0.000011] ch341 4-5:1.0: ch341-uart converter detected
[ +0.023121] usb 4-5: ch341-uart converter now attached to ttyUSB0



установка crossdev в локальный оверлей без layman:



root # mkdir -p /usr/local/overlays/crossdev/{profiles,metadata}  
root # echo "crossdev" > /usr/local/overlays/crossdev/profiles/repo_name  
root # echo "masters = gentoo" > /usr/local/overlays/crossdev/metadata/layout.conf
root # echo "thin-manifests = true" >> /usr/local/overlays/crossdev/metadata/layout.conf
root # cat /etc/portage/repos.conf/crossdev.conf

[crossdev]

location = /usr/local/overlays/
crossdev

masters = gentoo
priority = 10

auto-sync = no

root # gpasswd -a YOUR_USERNAME tty uucp  
root # USE="-openmp -sanitize" crossdev -t avr -s4 -S --without-headers
Может засраться первый после gentoo оверлей - есть смысл проследить за CROSSDEV_OVERLAY переменной, мне пришлось уменьшить приоритет - после этого установка пошла в "нужный"


* CROSSDEV_OVERLAY:      /usr/local/overlays/arduino



root # echo "dev-embedded/arduino examples"  >> /etc/portage/package.use/package
root # emerge arduino -avt





скрин после аплода:





https://wiki.gentoo.org/wiki/Overlay/Local_overlay
http://playground.arduino.cc/linux/gentoo
https://wiki.gentoo.org/wiki/Arduino









среда, 23 декабря 2015 г.

Почему не стоит использовать я.денги и почему не стоит использовать временные пароли.

Перевел свой динозавр - galax s III на cm13 есть ночные сборки

по ощущениям хоть и сыровато (есть проблемы отрисовки эффектов, другие мелочи) но явно лучше стало с производительностью.

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

Если доступ к основному аккаунту яндекса с одноразовыми паролями через yandex.key можно сбросить через телефон, то пасс от я.денег переведенные на одноразовые пароли (google authenticator) непросто так сбросить




и на этом все чтобы сбросить пароль напишите нам, при повторной попытке написать им: смотри письмо 1 )


вообще их поддержка самая сказочная - не могу добиться сброса пароля более 10 лет (соответственно не было логинов - до службы поддержки просто не достучаться).


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



и это не проблема хеплдеска (отличные ребята с трудной работой) - это проблемы, глубокие проблемы организации сервиса. К примеру хватило 1 письма в поддержку гугла (утрачен в тоже время 10 лет назад с яндексом) - восстановили сбросом пароля.

итого что я имею:
1. забытый невосстановимый пароль от яндекс - 2 шт.
2. забытый невосстановимый платежный пароль - 2 шт.


UPD:
ответ был еще круче:

Re: [101325] Забытый пароль  Распечатать
23 дек. в 3:46
supp@money.yandex.ru
подробнее 
Обращаем Ваше внимание на то, что если Вы удалили приложение с паролями, то, как правило, достаточно написать об этом нам.
---
С уважением, команда службы поддержки "Яндекс.Денег"
UPD 1:


supp@money.yandex.ru
подробнее 
Здравствуйте!
Мы понимаем Вашу проблему и сочувствуем. Мы очень сожалеем, что для Вас возникли такие сложности.

Однако наши правила обязательны для всех, и сделать исключение мы не можем. Начиная использовать наш сервис, Вы подтвердили, что принимаете "Соглашение об использовании". Для решения этой проблемы Вам необходимо действовать так, как мы рекомендовали в прошлых
письмах.

Спасибо за запрос.
---
С уважением, команда службы поддержки "Яндекс.Денег"




UPD2:
В Google play был дан ответ на отзыв ru.yandex.key -
Здравствуйте! По поводу восстановления доступа к аккаунту - напишите нам, пожалуйста, на key@support.yandex.ru и уточните, с каким логином проблема, посмотрим, что можно сделать. Если Вы опишете подробнее и возникшую проблему с Яндекс.Деньгами, мы постараемся разобраться и в ней - возможно, надо разбираться совместно с коллегами из Яндекс.Денег.


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





четверг, 26 ноября 2015 г.

KF и его доработка

Все мелкие проблемы с live версией KF:

куча была начиная от powermanager и заканчивая polkit.

сегодня при обновлении ksnapshot тянет зависимости kde4 - удален 5.9999

тут следы его https://gitweb.gentoo.org/proj/kde.git/tree/kde-apps/ksnapshot/ksnapshot-5.9999.ebuild?id=6c61e006354ccbe86157239ab44f68dfedc86643