Skip to content

Всякие фишки и мелочь

https://factory.altlinux.space/

Смена режимов в Альт Рабочая станция GNOME с помощью скриптов

enable-panel-style.sh

bash
#!/usr/bin/env bash
set -e

PANEL_EXT="dash-to-panel@jderose9.github.com" 
MENU_EXT="arcmenu@arcmenu.com" 

gnome-extensions enable "$PANEL_EXT" 
gnome-extensions enable "$MENU_EXT"

disable-panel-style.sh

bash
#!/usr/bin/env bash
set -e

PANEL_EXT="dash-to-panel@jderose9.github.com" 
MENU_EXT="arcmenu@arcmenu.com" 

gnome-extensions disable "$PANEL_EXT" 
gnome-extensions disable "$MENU_EXT"

Своя репа Альта:

Создание собственного репозитория происходит в несколько шагов:

  1. Создаём директорию, в которой будет располагаться Ваш репозиторий, например testrepo:
bash
mkdir testrepo
  1. Переходим в данную директорию:
bash
cd testrepo/
  1. Создаём структуру репозитория. В данном примере создаётся структура из трёх архитектур: x86_64 — 64-битные программы, i586 — 32-битные программы, noarch — всё, что не зависит от архитектуры.
bash
mkdir -p x86_64/RPMS.classic i586/RPMS.classic noarch/RPMS.classic
  1. В директории RPMS.classic необходимо поместить пакеты соответствующих архитектур.

  2. Для каждой архитектуры создаём метаинформацию:

bash
genbasedir --create --progress --topdir=. x86_64 classic
genbasedir --create --progress --topdir=. i586 classic
genbasedir --create --progress --topdir=. noarch classic

По итогу у Вас должна получиться следующая структура:

bash
testrepo
├── i586 # пакеты архитектуры i586
│   ├── base # метаинформация
│   │   ├── pkglist.classic
│   │   ├── pkglist.classic.bz2
│   │   ├── pkglist.classic.xz
│   │   ├── release
│   │   └── release.classic
│   └── RPMS.classic
│       └── foobar-1.2-5.i586.rpm
├── noarch # архитектурно-независимые пакеты
│   ├── base # метаинформация
│   │   ├── pkglist.classic
│   │   ├── pkglist.classic.bz2
│   │   ├── pkglist.classic.xz
│   │   ├── release
│   │   └── release.classic
│   └── RPMS.classic
│       └── foobar-doc-1.2-5.noarch.rpm
└── x86_64 # пакеты архитектуры x86_64
    ├── base # метаинформация
    │   ├── pkglist.classic
    │   ├── pkglist.classic.bz2
    │   ├── pkglist.classic.xz
    │   ├── release
    │   └── release.classic
    └── RPMS.classic
        └── foobar-1.2-5.x86_64.rpm

Далее необходимо опубликовать всю директорию testrepo в сети, например:

Вы можете опубликовать любым способом, используя следующие протоколы: http, ftp, rsync.

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

bash
for arch in x86_64 i586 noarch; do genbasedir --bloat --progress --topdir=путь/до/testrepo/ $arch classic; done

На клиенте необходимо подключить созданный репозиторий, для этого создадим отдельный source.list, например:

bash
touch /etc/apt/sources.list.d/testrepo.list

Далее необходимо заполнить данный файл. Содержимое будет примерно следующим:

# Протокол http
rpm http://<сервер>/testrepo x86_64 classic 
rpm http://<сервер>/testrepo i586 classic
rpm http://<сервер>/testrepo noarch classic

# Протокол ftp
rpm ftp://<сервер>/testrepo x86_64 classic 
rpm ftp://<сервер>/testrepo i586 classic
rpm ftp://<сервер>/testrepo noarch classic

# Протокол rsync
rpm rsync://<сервер>/testrepo x86_64 classic 
rpm rsync://<сервер>/testrepo i586 classic
rpm rsync://<сервер>/testrepo noarch classic

Запуск графического приложения по ssh на удалённой машине с уже запущенной сессией

Мне нужно было запусить Rustdesk, чтобы подключиться полноценно, но клиент был выключен. Сессия у меня была Wayland. Я подключился к компьютеру по ssh под тем же пользователем, что и в графической сессии на той стороне и сделал:

bash
$ export XDG_RUNTIME_DIR="/run/user/$(id -u)"
$ export WAYLAND_DISPLAY="wayland-0"
$ systemd-run --user --collect --wait rustdesk

Проверка работы динамиков

В Linux можно проверить звук через терминал несколькими способами. Вот основные из них:

Проверка через speaker-test (встроенный тест динамика)

Утилита speaker-test генерирует тестовый звук.

bash
speaker-test -t wav -c 2
  • -t wav — тип сигнала (можно также sine для синусоиды).
  • -c 2 — количество каналов (2 = стерео).

Чтобы остановить — нажмите Ctrl+C.

Если команда не найдена, установите пакет alsa-utils:

bash
apt-get install alsa-utils

Проверка уровня громкости и состояния звука

Через ALSA:

bash
amixer sget Master

Если звук выключен:

bash
amixer sset Master unmute
amixer sset Master 80%   # установить громкость
bash
pactl list sinks short    # список аудиовыходов
pactl get-sink-volume @DEFAULT_SINK@   # текущая громкость
pactl set-sink-volume @DEFAULT_SINK@ 80%   # установить громкость
pactl set-sink-mute @DEFAULT_SINK@ false   # включить звук

Проверка, работает ли звуковая карта

bash
lspci | grep -i audio
# или для USB-устройств:
lsusb

Также можно посмотреть логи:

bash
dmesg | grep -i audio

Простой тест через beep (если поддерживается)

Некоторые системы поддерживают системный спикер:

bash
echo -e "\a"
# или
beep

Утилита beep может потребовать установки и прав на /dev/input/by-path/....

皆さんこんにちは! Устанавливаем поддержку нормальной японской раскладки (Пока с этим гайдом есть проблемки)

https://www.altlinux.org/IME#Fcitx5

mozc позволит печатать romaji и получать на выходе хирагану, катакану и, соответственно, кандзи.

Я настраивал это только в KDE Plasma 6

  1. Устанавливаем необходимые пакеты:
bash
apt-get install fcitx5 fcitx5-autostart fcitx5-qt fcitx5-gtk fcitx5-configtool fcitx5-mozc
  1. Редактируем файл:
bash
nano ~/.bash_profile

Добавляем строки:

bash
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
  1. Перезагружаем компьютер. Теперь раскладкой управляет fcitx5.

  2. Переходим в настройки KDE: Клавиатура - Клавиатура.

Включаем раскладки, удаляем все лишние, оставляем только Английская (США)

  1. Переходим в настройки fcitx5. В трее правой кнопкой мыши по текущей раскладке, далее нажимаем настройки.

  2. В группу добавляем метод ввода mozc и другие нужные раскладки.

Профит. С какого то раза всё заработало и работает корректно, только, блин, нельзя настроить Control+L_Shift в качестве комбинации для переключения раскладки(

Wayland-VS_Codium-fcitx5

С этой системой в Wayland шалит VS Codium. Чтобы это решить, отредактируйте параметры запуска, измените их на:

bash
--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime %F

Я привёл параметры запуска в ярлычке в меню приложений KDE. Если запускаете через консоль, то уберите %F

Проброс репозитория в закрытый контур

  1. Разворачивают локальный репо.
  2. Далее с делают копию на флеш-устройство нашего репо.
  3. Проверяют флеш-устройство на антивирусе (требования ФСТЭК) .
  4. С проверенного флеш-устройствоа синхронизируют с локальным репо в закрытом контуре. Синхранизации наш репо- флеш-устройство-локальный репо в закрытом контуре делают через rsync. Это стандартная процедура для закрытого контура.

Второй вариант. Если используются сертифицированные версии МЭ. И есть доступ через них в закрытый контур (Физически не разделены) То регулятор разрешает так скажем однустороннюю связь по определенным портам. Тогда Локальный репо в открытой их сети. Проверка этого репо чере антивирус. И синхронизациия уже этого репо с репо в закрытой сети через сертифицированный МЭ.

Обязательно в любом случае повторно проверяется перед использованием репо в закрытой сети антивирусом. Желательно другим. То есть в KAV в открытой (не сертифицированной сети) или флеш-устройство. В Закрытой Drweb. Или Наоборот. Но это рекомендация ФСТЭК. Можно и одним но опять не рекомендовано. Но наказание за это не предусмотрено. Максимум рекомендация ФСТЭК при проверке ОИ.

Чем можно проверить диск в Альт Линукс

smartctl (smartmontools)

Дополнительно в gnome доступен следующий инструмент: gnome-disk-utility

hdparm — Инструмент для тестирования скорости чтения (бенчмаркинг) и управления параметрами работы в основном HDD-дисков через низкоуровневые настройки.

badblocks — Утилита для прямого поиска сбойных секторов на поверхности диска.

fsck — стандартная утилита для проверки и исправления ошибок файловых систем (ext2/ext3/ext4, FAT, NTFS и др.)

testdisk

btrfs check

Ограничение пропускной способности сетевого соединения в Linux

Если в процессе работы с вашей системой Linux для настольных компьютеров вы нередко одновременно используете множество работающих с сетью приложений или разделяете пропускную способность своего домашнего сетевого соединения между несколькими компьютерами, вы наверняка хотите максимально контролировать использование ресурсов имеющегося сетевого соединения. В противном случае при загрузке файлов большого объема с помощью специализированного приложения ваша интерактивная сессия SSH может начать работать с большим замедлением или перестать работать вообще. Либо в процессе синхронизации директории большого объема с сервером Dropbox ваши домашние могут начать жаловаться на постоянные перерывы, возникающие в процессе просмотра видео из сети.

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

Ограничение пропускной способности сетевого соединения на уровне приложения в Linux

Одним из инструментов для ограничения пропускной способности сетевого соединения, использующим интерфейс командной строки системы, является утилита под названием trickle. Trickle позволяет осуществлять шейпинг трафика, генерируемого любым из существующих приложений, путем «подгрузки» библиотеки с реализацией механизма сетевых сокетов и алгоритмов ограничения пропускной способности сетевого соединения в процессе запуска приложения. Преимущество утилиты trickle заключается в том, что она функционирует исключительно в пространстве пользователя, поэтому вам не понадобятся привилегии пользователя root для ограничения пропускной способности сетевого соединения на уровне какого-либо из приложений. Для совместимости с утилитой trickle приложение должно использовать интерфейс сетевых сокетов без статического связывания с соответствующей системной библиотекой. Утилита trickle может оказаться полезной тогда, когда вам нужно ограничить пропускную способность сетевого соединения на уровне приложения, которое не имеет аналогичного встроенного механизма.

Для установки trickle в ОС Альт следует использовать следующую команду:

bash
apt-get install trickle

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

bash
$ trickle -d <лимит-скорости-приема> -u <лимит-скорости-передачи> <команда>

С помощью данной команды устанавливаются заданные лимиты скоростей приема и передачи данных (в КБ/с) для приложения, запускаемого с помощью заданной команды.

Например, для установки ограничения максимальной скорости передачи данных для утилиты scp, равного 100 КБ/с, может использоваться следующая команда:

bash
$ trickle -u 100 scp backup.tgz alice@remote\_host.com:

При желании вы можете установить ограничение максимальной скорости приема данных (равное, к примеру, 300 КБ/с) для вашего веб-браузера Firefox, создав специальный файл запуска приложения со следующей командой запуска:

bash
trickle -d 300 firefox %u

Наконец, утилита trickle может запускаться в режиме демона и контролировать «общую» пропускную способность сетевого соединения для всех приложений, которые были запущены с помощью нее. Для запуска trickle в режиме демона (т.е., trickled) может использоваться следующая команда:

bash
trickled -d 1000

После того, как демон trickled начнет работу в фоновом режиме, вы можете запускать другие приложения с помощью утилиты trickle. Теперь, если вы запустите с помощью утилиты trickle одно приложение, его скорость приема данных будет ограничиваться 1000 КБ/с. Если же вы запустите с помощью утилиты trickle еще одно приложение, скорость приема данных каждого из этих приложений будет ограничиваться 500 КБ/с и так далее…

Ограничение пропускной способности сетевого соединения на уровне сетевого интерфейса в Linux

Еще один способ управления пропускной способностью вашего сетевого соединения заключается в установке лимитов скоростей приема и передачи данных на уровне сетевого интерфейса. Данный подход может оказаться полезным тогда, когда вы делите соединение с сетью Интернет с кем-либо еще. Как и в подавляющем большинстве случаев, в Linux есть необходимый для этого инструмент. Сценарий wondershaper предназначен для выполнения описанной задачи: он ограничивает пропускную способность сетевого соединения на уровне сетевого интерфейса.

На самом деле, wondershaper является простым сценарием командной оболочки, который использует утилиту tc для установки параметров шейпинга трафика и качества сетевого соединения на уровне заданного сетевого интерфейса. Шейпинг исходящего трафика осуществляется путем распределения пакетов по очередям с разными приоритетами, шейпинг входящего трафика - путем отбрасывания пакетов.

Фактически, список полезных функций сценария wondershaper не ограничивался добавлением возможности управления пропускной способностью для каждого из сетевых интерфейсов. Wondershaper также пытается максимально снизить задержки интерактивных сессий, таких, как SSH в процессе загрузки или передачи файлов больших объемов. Кроме того, он гарантирует, что при передаче файлов больших объемов (например, при синхронизации директорий с сервером Dropbox) не будет значительно снижаться скорость загрузки файлов и наоборот.

Для установки wondershaper в ОС Альт следует использовать следующую команду:

bash
apt-get install wondershaper

Сценарий wondershaper используется следующим образом:

bash
wondershaper <интерфейс> <лимит-скорости-приема> <лимит-скорости-передачи>

Например, для установки максимальных скоростей приема/передачи данных для сетевого интерфейса eth0, равных 1000 и 500 Кб/с соответственно, может использоваться следующая команда:

bash
wondershaper eth0 1000 500

Вы можете удалить установленное ограничение пропускной способности сетевого интерфейса с помощью следующей команды:

bash
wondershaper clear eth0

Если вас интересует принцип работы сценария wondershaper, вы можете изучить его содержимое (/sbin/wondershaper).

Заключение

В данном руководстве я рассказал о двух различных вариантах ограничения пропускной способности сетевого соединения в системе Linux для настольных компьютеров, а именно, об ограничении пропускной способности сетевого соединения на уровне отдельных приложений и на уровне сетевых интерфейсов. Оба рассмотренных инструмента являются максимально простыми и позволяют быстро и просто организовать шейпинг ранее никоим образом не контролируемого сетевого трафика. Те из вас, кто желает узнать больше о способах ограничения пропускной способности сетевых соединений в Linux, могут ознакомиться со следующим руководством.

Откат и фиксация версии пакета в Альт

https://www.altlinux.org/Apt/Preferences

Если Вы не обновляли систему и версия Wine осталась 10.18.1-alt2 (https://packages.altlinux.org/ru/p11/srpms/wine/3305776168109423221)*

Создайте файл /etc/apt/preferences.d/wine

В нём укажите следующее:

bash
Package: wine
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-common
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-devel
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-devel-tools
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-full
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-ping
Pin: release v=1769530897
Pin-Priority: 1001

Package: wine-programs
Pin: release v=1769530897
Pin-Priority: 1001

release v=1769530897 означает, что apt будет данный пакет устанавливать из репозитория, в котором в base/release.classic написано Version: 1769530897. Это значение можно посмотреть в самом файле, например: http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/base/release.classic; чаще всего это значение $(date -s) на момент начала создания girar'ом баз apt'а.

После этого, можно обновлять систему, во время выполнения dist-upgrade Вы увидите примерно следующее:

bash
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Завершено
Следующие пакеты будут СОХРАНЕНЫ:
  wine  wine-common  wine-gecko-2.47.4
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 3 не будет обновлено.

Должны сохраниться такие версии ПО:

bash
$ rpm -qa | grep wine
wine-mono-10.3.0-10.3.0-alt1.noarch
wine-10.18.1-alt1.x86_64
i586-wine-cpcsp_proxy-0.7.7-alt1.i586
wine-cpcsp_proxy-0.7.7-alt1.x86_64
wine-common-10.18.1-alt1.noarch
winetricks-20250207-alt3.noarch
wine-mono-9.0.0-9.0.0-alt1.noarch
wine-gecko-2.47.4-2.47.4-alt1.noarch

Если же Вы обновляли систему, то необходимо совершить дополнительные манипуляции:

  1. Удалить пакеты Wine:
bash
apt-get remove wine
  1. Подключить архивный репозиторий:
bash
apt-repo rm all
apt-repo add p11 20260128
apt-get update
  1. Установить Wine:
bash
apt-get install wine

Далее, после того, как зафиксировали версии, возвращаем репозитории:

bash
apt-repo rm all && apt-repo add p11

Ошибка "Disk quota exceeded"

Ошибка "Disk quota exceeded" вероятнее всего указывает на превышение лимитов, настроенных кем-то/чем-то в /etc/security/limits.conf, проверить это можно утилитой "quota" (за подробностями в "man quota").

Дополнительно, при проверке свободного места на диске помимо "df -h", следует также проверять свободные inode - "df -ih"

Получение списка установленных пакетов не из официального репозитория Альта

bash
rpm -qa --queryformat "$(rpm --querytags | awk '{print $1 ": %{" $1 "}"}')" | awk '/^BUILDHOST:/ && !/altlinux.org/ {host=$2; next} /^NAME:/ && host {print $2 ";" host; host=""}'

зацепка это тег BUILDHOST. Каждому тимовцу и иной официальной сущность дается свой, но все они в сборочнице.. и у всех домен altinux.org на выходе csv из левых пакетов - имя пакета - хостгдесобран

Как узнать какие процессы исполюзуют блочное устройство

bash
lsof /dev/sdb

# По конкретным разделам
lsof /dev/sdb1 /dev/sdb2
bash
fuser -v /dev/sdb

# По устройству раздела
fuser -vm /dev/sdb1

# По точке монтирования
fuser -vm /mnt/my_disk

Контакты: bystrovno@basealt.ru