суббота, 16 января 2021 г.

FlatPak, Snap, AppImage и прочие современные веяния

В борьбе с "адом зависимостей" и разношёрстностью дистрибутивов Linux, родились системы, которые призваны унифицировать подход к ПО сквозь все дистрибутивы. Их идея в одном - собрать пакет вместе с необходимыми библиотеками в одной программной капсуле. 
Однако, этот подход имеет два вполне известных изъяна:
- Проблема с безопасностью за счёт использования разных версий библиотек в программных "капсулах" и то, что часть из них может быть устаревшими;
- Резко возрастающие объёмы данных, необходимые для хранения всех дублированных библиотек, используемых различными программами.

Безопасность.
Первую проблему пытаются решить с помощью изоляции в песочнице каждой программы - то есть программа запущенная пользователям может ходить только по конкретным местам типа домашней директории пользователя, не может взаимодействовать с другими программами, а её взлом не может сильно навредить компьютеру. 
Минусы этого подхода также вполне очевидны - пользовательская папка таки доступна, ряд операций программа осуществлять обязана по своему функционалу и общей точкой отказа является подсистема (сам Snap, Flatpak и т.п.). То есть при использовании сильно устаревшей версии библиотеки в составе программы, дыра в безопасности таки будет. 
В то же время это вызывает ряд неудобств пользователям - если у пользователя несколько жёстких дисков и, скажем, дистрибутив монтирует их в media, то доступа к ним у программы просто не будет. Я с таким сталкивался на своём ПК, где 5 жёстких дисков и три операционные системы, две из которых из семейства Linux, а папка home преимущественно состоит из символьных ссылок на другой жёсткий диск (чтобы обеспечить прозрачность работы в разных версиях linux, не дублируя пользовательские библиотеки). В итоге после установки Snap версии Telegram Desktop, я не мог закинуть картинки из папки, т.к. программа не имела доступа через симвользую ссылку на другой диск. 

Объёмы данных
Куда более своеобразной является проблема с объёмом данных, который генерируют подобные системы. На картинке выше показана структура папки var, в которой установлены flatpak и snap. Как видно, один из них занимает более 30 Гб, второй более 7 Гб. Стоит напомнить, что полный комплект OS Linux с KDE, LibreOffice, VLC, Blender, Firefox, Chromium, Vivaldi, Skype, Telegram, Inkscape, Krita, Steam, Kdenlive, OBS, Kmail, Nomacs вполне нормально умещаются на 20Гб разделе жёсткого диска, не выползая за него, даже при том, что поддерживается 3 версии ядра. 
При этом, вот в тех 30+ Гб Flatpak содержится всего несколько небольших программ, которые без фарша весят от силы 0,5 Гб. Всё остальное - это по сути дублированные версии всей операционной системы за исключением ядра. "Рациональность" - это не про них. 

Есть, правда и вариант решения этой проблемы - это современные файловые системы типа BTRFS с работающей дедуплекацией данных. В этом случае система уничтожит знатную часть дублированной информации и указанный фарш изрядно похудеет. 

Однако, это в теории, на практике каждая из систем имеет свой снаппер или возможность обращаться к системному, которые все дружно начинают лепить снапшоты на каждый свой чих - мгновенно забивая гигантские объёмы ради решения проблем, которые сами же и создают. 

Также вопросы вызывают сами файловые системы, которые поддерживают дедупликацию. По хорошему из относительно стабильных их всего две - уже упомянутая BTRFS и ZFS. Про первую я уже как-то писал - она вызывает очень много вопросов, как только случается сбой. При этом если у вас была включена дедуплекация - вы никогда не восстановите файлы с поломанной файловой системы (будет каша из кусочков файлов в произвольном порядке, которую никто не разгребёт). А что касается ZFS, то при кажущейся большей надёжности, система во-первых супер-прожёрлива до оперативной памяти (готовы сделать файловую систему потребителем №1 в вашей операционке?) и её качества (настоятельно рекомендуют использовать ECC-корректируему память, т.к. множество небезопасных операций происходит именно в оперативке. А во-вторых она также доставляет трудности при восстановлении данных, широко распространённых открытых инструментов для чего просто не существует.

В итоге, единственным инструментом из всех имеющихся, которым я пользуюсь - остался AppImage. Он хоть и имеет перечисленные недостатки, позволяет сразу оценить масштаб трагедии - сколько будет весить программа по совокупности (а не то, что вам пишут что весит она, скажем 500 Мб, а к ней прилетает база в 11Гб) и позволяет решить вопрос ПО, которое выбилось из цикла поддержки репозиториями вашего дистрибутива нужных версий библиотек.

Как-то так. 

пятница, 8 января 2021 г.

Mac OS X и древние привычки (клепать файлы .DS_Store)

 В отличие от большинства современных операционных систем, OSX Finder хранит настройки отображения папок в создаваемых файлах вида .DS_Store, которые изрядно так бесят, когда взаимодействуешь с другими системами. Чтобы хотя бы заставить систему не писать эти файлы на сетевых хранилищах и USB флешках, необходимо ввести в консоли следующие команды:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true 

 После чего необходимо выйти и зайти в профиль. Каждый раз забываю эти команды, так что оставлю это здесь на память.

суббота, 24 октября 2020 г.

Битые картинки и как их выявить


 Битые картинки в галерее с фотоаппаратов, камер, телефонов и прочих средств... Наверное это знакомо каждому. И большинство из нас не знает масштаба трагедии, пока не наткнётся на парочку таких замечательных картинок, наподобие той, что я прикрепил в шапке. К слову эту картинку я специально попортил, открыв в текстовом редакторе и добавив один символ в середину файла. Понятно, что исправить такой байт - проблема та ещё, т.к. требует глубокого семантического анализа и не всегда восстановление возможно. Однако, подобных проблем можно избежать путём резервного копирования и использования файловых систем, поддерживающих "лечение" поломанных байтов данных. Но, начнём с простого - как определить, какие файлы поломаны, чтобы восстановить их из резервной копии.

Переключатель звуковых каналов в Linux для ленивых

Будучи любителем послушать музыку с комфортом, соединил свой компьютер с ресивером аудиосистемы с помощью TosLink/ S/PDIF и столкнулся с неприятной особенностью моей новой материнки. Так, она не умеет одновременно работать с аналоговым и цифровым выходом, так что старый трюк с добавлением виртуального устройства со вторым типом выхода не прокатил - второй выход оказался немым. В итоге, чтобы переключиться на S/PDIF, мне нужно каждый раз лезть в настройки PulseAudio и переключать выход на нужный в текущий момент (колонки/наушники у компа или аудиосистема по S/PDIF). Но, лень двигатель прогресса - меня этак картина быстро перестала устраивать и я озаботился переключателем, позволяющим быстро изменять режим звуковой карты. Поделюсь тут этим фокусом, может кому пригодится.

суббота, 20 июля 2019 г.

KXStudio и S/PDIF


Столкнулся с дурацкой особенностью связки ALSA+JACK Audio Toolkit. А именно, что по умолчанию он отказывается выводить звук через S/PDIF (что оптический, что коаксиальный). Долго плясал с бубном, пока не обнаружил указание на то, что в alsa цифровые выходы по умолчанию заглушены, т.к. у части звуковых карт нет поддержки одновременного вывода по digital/analog каналам. Так вот этот момент накладывается на то, что для перечисления устройств, Cadence использует команду aplay -l вместо aplay -L и получает упрощённый список а ля hw0:analog hw0:digital nvidia hdmi0 и т.д.  В общем, не показывается в этом списке, что часть каналов заглушена и запускается двумя параллельными триггерами. 
Решается это дело довольно просто - в Cadence нужно остановить JACK Server, затем запустить alsamixer, например в варианте alsamixergui (если не установлен - $sudo apt install alsamixergui), после чего видим весь список устройств и смотрим на значки сверху, что там заглушено - находим нужный интерфейс, включаем и вуаля - всё начинает работать. 
В заключении, хочется сказать, что для записи аудио - jack шикарная штука, а программы проекта KXStudio - великолепны, но вот для повседневной жизни это геморрой тот ещё - чтобы элементарно переключить канал входа или выхода, нужно зайти в Cadence → Configure → ALSA Driver → сменить вход/выход → JACK Stop → JACK Start → JACK Bridges: PulseAudio Start, иначе те же KDE не поймут, где у вас там звук и как он должен работать. 
В случае прямой работы ALSA → PulseAudio, KDE позволяет управлять звуковыми потоками очень гибко, вплоть до перебрасывания приложений между различными средствами вывода (бывает удобно, когда нужно, чтобы что-то шло через наушники, а что-то на громкую. 

пятница, 3 мая 2019 г.

Проблемы с тёмными темами и GTK2/MONO программами


Как любитель тёмных тем, время от времени сталкиваюсь с проблемами в некоторых криво написанных приложениях. Это относится, например, ко всему, что написано на .NET/Mono. К счастью, не много нормальных приложений написано на этой поделке от M$, но встречается. Так, например, произошло с замечательной лёгкой программой для математических вычислений SMath Studio (см. на картинке).

воскресенье, 5 марта 2017 г.

Проблемы с разрешениями для Transmission daemon и не только



Продолжаю настраивать свой домашний NAS и сгребать грабли.
Настроив SAMBA и получив весьма приличный результат по скорости копирования (>90МиБ/с), решил поставить и настроить Transmission daemon - чтоб NAS спокойно качал торренты, а пользователи могли ставить на закачку файлы через Transmission remote GUI, работающий, как с компов, так и с мобилок.

В общем, настройка Transmission daemon - не бог весть какая сложность - редактируешь себе /etc/ transmission daemon/settings.json , добавляешь нужных пользователей в группу transmission (в случае с Debian - это debian transmission), даёшь разрешения на нужные папки этому самому пользователю от которого работает transmission daemon (его можно проверить в конфиге /etc/init.d/transmission-daemon в разделе USER и, казалось бы, дело в шляпе.

Не тут то было. Всё сделал - при попытке скачать torrent получаю ошибку Permission denied.
Лезу, смотрю, что там с папкой:
$ls -l /share/HDB/Download 
Вижу ответ: drwxrwxrwx+ и по невнимательности своей думаю - ну всё ок вроде. Даю права владельца пользователю transmission - начало качать.
Вот только нафига нужны все файлы в одной свалке в "Download"? Не нужны - нужно перемешать в папки Video, Music и т.д. А там - такая же засада.

В общем, долго я мучился, пока не обнаружил тот самый идиотский "+" на конце. Оказывается, жолбаный QNAP, в чьём ведении до этого был жёсткий диск, умудрился проставить всем папкам и файлам ACL разрешения. А они ведь такая зараза, что перекрывают обычные nix'овые. Там и пользователи конкретные могут быть вписаны, и маски заданы.

В общем, снёс нахрен все ACL'ы с этих папок командой:
#setfacl -Rb /share/
Проблема разрешилась - transmission пишет во все нужные папки - жизнь удалась.