PulseAudio 12.0, PulseEffects 4.1.1, calf-plugins 0.90.0 на Ubuntu 18.04, 18.10

Сегодня у нас сборочные сервера Canonical усердно работали и собрали:

* PulseAudio 12.0 для Ubuntu 18.04 (Mint 19) и 18.10 вместо штатной PulseAudio
В 12.0 сделали адекватную работу module-switch-on-connect (включен по умолчанию в Ubuntu и делает подключаемые устройства вывода дефолтными) при добавлении вирутальных устройств вывода. Это нужно для работы PulseEffects без ручных переключений в pavucontrol после запуска (https://github.com/wwmm/pulseeffects/issues/99).
* * PulseAudio 12.0 собран с сохранением убунтопатчей для дефолтных конфигов, но патчи для AppArmor и Snappy убраны, поэтому _может_ отвалиться звук у snap-пакетов
* * Собрано только в тестовый PPA: https://launchpad.net/~mikhailnov/+archive/ubuntu/desktop1-dev/

Для установки PulseAudio 12.0 на Ubuntu 18.04, 18.10, Mint 19:

sudo add-apt-repository ppa:mikhailnov/desktop1-dev
sudo apt dist-upgrade

* calf-plugins 0.90.0, которые нужны для правильной работы PulseEffects ⩾ 4.0 (https://github.com/wwmm/pulseeffects/issues/227)
* PulseEffects 4.1.1

calf-plugins и pulseffects собраны и в основной репозиторий PulseEffects, и в упомянутый выше ppa:mikhailnov/desktop1-dev, и в мой основной репозиторий ppa:mikhailnov/utils. Pulseaudio 12.0 только в тестовый репозиторий desktop1-dev.

Для установки PulseEffects на Ubuntu 18.04, 18.10:

sudo add-apt-repository ppa:mikhailnov/pulseeffects
sudo apt install pulseeffects

P.S. Теперь add-apt-repository автоматически делает apt update, но это отключается ключом ‘-n’.

dumasnap v0.2

В dumasnap добавлен таймер systemd, который раз в сутки автоматически через apt-btrfs-snapshot создает снапшот (снимок) корня системы, установленной в подтом BTRFS ‘@’.

Читать далее dumasnap v0.2

Разработчик ReactOS о BTRFS для Windows и ReactOS

Начало беседы: https://t.me/radioma/65298
> Чо там нового у Реактоса?
> Запиливаем BTRFS как основную фс
Читать далее Разработчик ReactOS о BTRFS для Windows и ReactOS

Автозапуск Thunderbird или любой другой программы в трее на Linux

Есть графические программы, которые:
а) надо бы запускать автоматически при входе в ОС
б) не умеют сворачиваться в трей, а на весь экран их окно не нужно

У меня такая потребность возникла с Thunderbird. Почтовая база (папка ~/.thunderbird) весит более 14 ГБ, запуск Thunderbird происходит секунд 15, и это на SSD-диске. Поэтому получается, что я хочу открыть почтовый ящик, а приходится довольно долго ждать, пока запустится почтовая программа. При запуске ОС окно Thunderbird на весь экран тоже не нужно, в панели задач оно тоже не должно висеть и мешаться. Встала задача автоматически запускать Thunderbird в трее.

Для этого установим необходимые пакеты:
На Debian/Ubuntu: sudo apt install wmctrl kdocker

Теперь попробуем выполнить в терминале команду:
thunderbird & sleep 17 && kdocker -b -w `wmctrl -l | grep -i thunderbird | awk '{print $1}'`

Она запускает thunderbird, ждет 17 секунд, пока он запустится (измените 17 на время запуска программы у вас), затем находит окно, в названии которого есть слово «thunderbird» с буквами в любом регистре, и сворачивает его в трей. В трее появляется значок Thunderbird. Если развернуть его из трея и свернуть окно, то оно сворачивается обратно в трей, а закрытие окна закрывает его, как и без kdocker.
. Если нужно оставить программу рабочей, но убрать из трея, то нужно нажатием на значок в трее выбрать «Undock».

Далее нужно добавить команду /bin/bash -c "thunderbird & sleep 17 && kdocker -b -w `wmctrl -l | grep -i thunderbird | awk '{print $1}'`" в автозапуск. Например, в XFCE это делается так: Настройки —> Сеансы и запуск —> Автозапуск.

Теперь я могу за доли секунды развернуть окно Thunderbird. Вместо thunderbird можно запускать любую другую программу.

P.S. Пользователи GNOME, ненавидящие трей, который выпилили из их Гнома, могут попробовать как-то запускать программу на отдельном рабочем столе, который не является рабочим столом по умолчанию.

Как скомпилировать exe для Windows на Linux (C, C++)

Если вдруг понадобится на линуксе кросскомпилить бинарник под Windows, вот инструкция: Читать далее Как скомпилировать exe для Windows на Linux (C, C++)

Проверяем работу прокси из командной строки Linux/UNIX

http_proxy="http://username:password@adress:port" https_proxy="http://username:password@adress:port" curl http://yandex.ru/internet | grep IP
(это команда в одну строку, где http_proxy, https_proxy - это переменные окружения)
Firefox (bug #1344551), Chromium, Lynx не умеют брать логин и пароль из переменной окружения.
Должен быть показан IP-адрес прокси-сервера.
можно прописать
export http_proxy="http://username:password@adress:port" https_proxy="http://username:password@adress:port"
в ~/.profile для задания параметров прокси для конкретного пользователя и в /etc/environment, чтобы их задать общесистемно.

Программы могут как читать эту переменную окружения, так и игнорировать ее. Различные графические конфигураторы прокси в KDE/Xfce/др. DE просто настраивают эту переменную окружения.
env | grep -i proxy — чтобы посмотреть текущие значения переменных окружения с параметрами прокси.

Настройка сети systemd-networkd (Ubuntu 18.04 и др.) на FirstVDS KVM

sudo nano /etc/systemd/network/50-1vds.network

[Match]
Name=ens*
[Network]
DHCP=no
# ping to Google DNS 8.8.8.8 is less than to Yandex 77.88.8.*
DNS=8.8.8.8
DNS=77.88.8.8
DNS=77.88.8.1
DNS=9.9.9.9
NTP=ntp.ubuntu.com
Gateway=10.0.0.1
[Address]
Address=212.109.197.147/32
Peer=10.0.0.1

212.109.197.147 замените на IP-адрес своего виртуального сервера (VPS, VDS) с виртуализацией KVM на хостинге FirstVDS (1vds). Name=ens* — проверьте, что в выводе команды ip a сетевой интерфейс называется, например, ens3, а не eth0; если eth0, то тогда: Name=eth*
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
Документация по systemd-networkd здесь.


Для простого DHCP конфиг такой:

[Match]
Name=en*
 
[Network]
DHCP=yes
DNS=8.8.8.8
#DNS=
NTP=ntp.ubuntu.com

Починил php на Ubuntu 18.04

Ubuntu 18.04, панель Vesta.
php -i
php --ini
По этим командам было видно, что из папок с симлинками на конфиги не подгружались конфиги, а все потому что при смене названия файлов в /etc/php/7.2/mods-available/ побились символические ссылки. Этот скрипт их пересоздает для всех установленных версий php, подключая все доступные расширения для модулей cgi, fpm и cli.

alias ls="/bin/ls"
for php_version in $(ls /etc/php/)
do
	rm -fv /etc/php/${php_version}/fpm/conf.d/* /etc/php/${php_version}/cli/conf.d/* /etc/php/${php_version}/cgi/conf.d/*
	for i in i in $(ls /etc/php/${php_version}/mods-available/)
	do
		ln -s /etc/php/${php_version}/mods-available/${i} /etc/php/${php_version}/fpm/conf.d/${i}
		ln -s /etc/php/${php_version}/mods-available/${i} /etc/php/${php_version}/cli/conf.d/${i}
		ln -s /etc/php/${php_version}/mods-available/${i} /etc/php/${php_version}/cgi/conf.d/${i}
	done
done

А ошибки были такого вида:
PHP Fatal error: Uncaught Error: Call to undefined function Symfony\Polyfill\Mbstring\iconv() in /usr/share/php/Symfony/Polyfill/Mbstring/Mbstring.php:534 (при запуске composer)

2018/03/28 23:51:08 [error] 11030#11030: *10 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Symfony\Polyfill\Mbstring\iconv_strpos() in /home/admin/web/domain.com/public_html/vendor/symfony/polyfill-mbstring/Mbstring.php:363
Stack trace:
#0 /home/admin/web/domain.com/public_html/vendor/symfony/polyfill-mbstring/bootstrap.php(32): Symfony\Polyfill\Mbstring\Mbstring::mb_strpos('', '/json', 0, 'UTF-8')
#1 /home/admin/web/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Support/Str.php(103): mb_strpos('', '/json')
#2 /home/admin/web/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php(34): Illuminate\Support\Str::contains('', Array)
#3 /home/admin/web/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Http/Request.php(339): Illuminate\Http\Request->isJson()
#4 /home/admin/web/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Http/Request.php(367): Illuminate\Http\Request->getInputSource()
#5 /home/admin/we" while reading response header from upstream, client: 109.173.112.243, server: domain.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9002", host: "domain.com"

Преимущества и недостатки отчественной ОС ALT Linux

Статья в разработке. Будет дополняться. Пишите в комментариях, чем дополнить.
Читать далее Преимущества и недостатки отчественной ОС ALT Linux