LINUX.ORG.RU

Сообщения wandrien

 

Content-addressable file storage

Существует ли в природе готовое решение для развёртывания zeroconfig content-addressable file storage в локальной сети?

Есть куча файловых архивов, раскиданных на нескольких машинах. Известны их SHA512 суммы. Хотелось бы иметь решение, которое позволяет с минимумом головняков по настройке и админству делать следующее:

  • Быстро получать ответ на вопрос: присутствует ли в сети файл с указанной хэш-суммой и на каких машинах. (Помнить машины оффлайн не требуется. Интересуют только машины онлайн.)
  • Скачивать файл на локальную машину.
  • После скачивания автоматически вставать на раздачу данного файла.
  • В случае удаления файла также автоматически прекращать его анонсирование, без дополнительных накладных расходов по ручному управлению списками файлов.

Перемещено hobbit из general

 , content-addressable storage, , ,

wandrien
()

Зобанили в гугле, ну почти

На меня тут gitlab санкции наложил при попытке скачать всю пакетную базу Арча разом:

Клонирование в «cdemu-daemon»...
error: RPC failed; HTTP 429 curl 22 The requested URL returned error: 429
fatal: expected flush after ref listing

Санкции, правда, не долгие, на несколько минут всего. Но.

Всё отлично с переездом Арча на новую репу, кроме того, что теперь непонятно, как засинкать пакеты. Там теперь 11490 репозиториев git, если что.

И я так предполагаю, что на git pull будет такая же шляпа.

 , ,

wandrien
()

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

Может быть есть какой-то способ цветом выделять различия в новой и старой версии пакета? Какая-нибудь обёртка над пакманом имеет такую фичу?

Т.е. чтобы в строке 1:0.3.71-1 часть 71-1 была выделена, например.

Пакет (22)                      Старая версия      Новая версия       Изменение размера  Размер загрузки

extra/alsa-card-profiles        1:0.3.70-2         1:0.3.71-1                  0,00 MiB         0,03 MiB
extra/antiword                  0.37-9             0.37-10                     0,00 MiB         0,12 MiB
extra/bind                      9.18.14-1          9.18.15-1                   0,20 MiB         1,96 MiB
extra/cpupower                  6.2-1              6.3-2                       0,00 MiB         0,19 MiB
core/curl                       8.1.0-2            8.1.1-1                     0,00 MiB         1,16 MiB
extra/firefox                   113.0.1-1          113.0.2-1                   0,23 MiB        64,62 MiB
extra/graphicsmagick            1.3.40-2           1.3.40-3                    0,02 MiB         2,53 MiB
multilib/lib32-curl             8.1.0-2            8.1.1-1                     0,00 MiB         0,30 MiB
extra/libpipewire               1:0.3.70-2         1:0.3.71-1                  0,01 MiB         0,36 MiB
extra/libwebp                   1.3.0-2            1.3.0-3                     0,00 MiB         0,34 MiB
extra/namcap                    3.4.0-3            3.4.2-1                     0,29 MiB         0,14 MiB
extra/nginx                     1.22.1-2           1.24.0-1                   -0,01 MiB         0,57 MiB
extra/openmpi                   4.1.5-1            4.1.5-2                     0,01 MiB         2,89 MiB
extra/parallel                  20230422-1         20230522-1                  0,00 MiB         0,32 MiB
extra/perf                      6.2-1              6.3-2                       4,41 MiB         8,00 MiB
extra/pipewire                  1:0.3.70-2         1:0.3.71-1                  0,02 MiB         0,62 MiB
extra/python-certifi            2022.12.07-3       2023.05.07-1                0,00 MiB         0,01 MiB
extra/python-fastjsonschema     2.17.0-1           2.17.1-1                    0,00 MiB         0,05 MiB
extra/python-typing_extensions  4.6.0-1            4.6.1-1                     0,01 MiB         0,06 MiB
extra/qt5-base                  5.15.9+kde+r152-1  5.15.9+kde+r153-1           0,00 MiB        13,09 MiB
extra/rav1e                     0.6.3-1            0.6.6-1                     0,57 MiB         1,61 MiB
extra/turbostat                 6.2-1              6.3-2                       0,01 MiB         0,13 MiB

Будет загружено:     99,11 MiB
Будет установлено:  389,85 MiB
Изменение размера:    5,76 MiB

:: Приступить к установке? [Y/n] 

 ,

wandrien
()

А есть решение для rotate бэкапов как отдельный алгоритм?

В общем, что хотелось бы:

Тулза для командной строки, которой даёшь тайм-штампы резервных копий и конфиг с правилами ротейта. И она говорит, какие удалить, какие оставить.

То есть не привязанное к какой-то программе, которая реально трогает файлы, а как отдельная реализация алгоритма, просто минимальный кусок кода, завёрнутый в бинарь или в скрипт. Для использования произвольными программами.

Есть что-то подобное, может знает кто?

 ,

wandrien
()

Какая же жесть в GNU-тых проектах, простите

Простите, но у меня сгорела жопа.

Итак, binutils.

$ find . -name NEWS
./gold/NEWS
./gas/NEWS
./ld/NEWS
./binutils/NEWS
./libctf/NEWS
  • В релиз нотах нет даты выхода релиза. Хер бы с ней, но напоминаю: на сайте этой инфы тоже нигде нет. Иди гугли мейл-листы.
  • У gold собственная система нумерации релизов, не совпадающая с нумерацией проекта. А почему бы и нет?
  • В распределении сорцов по каталогам хаос, ничего похожего на адекватную структуру и близко нет. Вали всё кучей, в 1980-м люди экономят время на cd.
  • Никакого внятного мануала по сборке из сорцов и по требованиям к системе нет в info-документации. В корневом ./README тоже нет. Внезапно крохи информации есть в файле ./binutils/README. А чо не в ./binutils/I/fukin/love/weird/places/README? Удачи грепать сборочные конфиги, если что-то пошло не так:
$ find . -name configure.ac | xargs wc -cl
   711  22977 ./gold/configure.ac
    80   2528 ./gprof/configure.ac
   239   6841 ./gprofng/configure.ac
    68   1959 ./gprofng/libcollector/configure.ac
  1109  44906 ./bfd/configure.ac
  1053  30229 ./gas/configure.ac
   680  20278 ./ld/configure.ac
   558  15835 ./binutils/configure.ac
  3683 117906 ./configure.ac
   297  11115 ./libctf/configure.ac
   791  22529 ./libiberty/configure.ac
   397  13662 ./opcodes/configure.ac
    77   2355 ./intl/configure.ac
   131   3452 ./zlib/configure.ac
    32    787 ./zlib/contrib/minizip/configure.ac

 , ,

wandrien
()

Как бы я сделал (неидеальный) дистрибутив

1. Релизная модель и версионирование.

Релизная модель: стабильные релизы с опциональными обновлениями.

Номер версии можно представить в следующем виде: YYYY.SU.R, где:

  • YYYY - номер мажорного выпуска дистрибутива. Формируется по году выпуска дистрибутива. В рамках мажорного выпуска фиксированы ключевые особенности дистрибутива, такие как поддерживаемый пакетным менеджером набор фич (формат пакетов).
  • SU — номер system update. В рамках одного номера system update фиксированы минорные версии библиотек и других системообразующих компонент. При переходе на следующий system update минорные версии могут меняться с сохранением обратной совместимости ABI.
  • R - номер корректирующего выпуска с исправлениями багов и закрытием уязвимостей.

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

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

Как отдельные ветки SU, так и мажорный выпуск YYYY в целом, поддерживаются до тех пор, пока есть энтузиасты, готовые заниматься сопровождением. Понятие «перевода дистрибутива в архив» не существует. Любая сколь угодно старая ветка может получить корректирующие апдейты или новые SU при условии, что есть желающие сформировать апдейт, он соответствует критериям качества, а также есть ответственные лица, которые могут провести оценку по этим критериям.

2. Система сборки и пакетирования.

Для пакетирования применяется система, подобная Arch/Alpine/Void: то есть дерево портов со сборочными рецептами на shell. Однако процедура сборки более формализована.

Существует три уровня организации рецептов сборки.

На первом уровне хранятся сборочные рецепты для пакетов в наиболее общем виде.

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

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

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

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

Для ран-тайм зависимостей используется указание, максимально приближенное к «реальному состоянию дел». Например, если приложение динамически слинковано с libjpeg.so.8, значит именно libjpeg.so.8 будет указан в зависимостях пакета. А если точнее, то в качестве зависимости указывается PLATFORM:libjpeg.so.8, где PLATFORM - один из вариантов платформы, поддерживаемой дистрибутивом (ближайший аналог спецификатора multiarch в Debian).

Также ран-тайм зависимости более точно указывают на конкретные версии интерпретаторов и сред исполнения. Например, возможно бесконфликтное существование нескольких веток python 3.x с отдельными наборами библиотек.

3. multiarch и multiOS

В дистрибутиве возможно параллельное существование нескольких вариантов /usr/lib под разные ABI, подобно тому, как это реализовано в Debian. Кроме того, этот подход может быть расширен для поддержки разных ядер операционных систем за пределами Linux, таких как NetBSD или сборка пакетов для cygwin-подобного ран-тайма под WinAPI.

4. portable-сборки и развертывание пакетов без админского доступа.

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

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

Также возможна автоматическая конвертация portable-пакетов в пакеты системы Zero Install, что позволяет устанавливать их на любой мейстримной Linux-based ОС.

5. Декларативная конфигурация системы

По возможности, пакеты вообще не должны содержать никаких установочных скриптов.

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

Например, в Arch сейчас всего менее 400 пакетов имеют install-скрипт. Это полная противоположность скриптового хаоса в Debian-based дистрибутивах, где это количество измеряется тысячами. Из этого количества в 400 штук - около половины просто выводит сообщение пользователю. Из оставшихся больше половины вызывают команды типа setcap/chmod/chown для конфигурирования прав доступа и привилегий для пакета. Все эти действия могут быть заданы декларативно. Еще часть пакетов содержит избыточные команды, которые и так обрабатываются хуками ПМ.

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

6. Отсутствие неявной «автоматической» конфигурации системы

Пакетный менеджер ставит пакеты. Он не запускает демоны, не настраивает конфиги в /etc, не правит симлинки. Он устанавливает и удаляет пакеты предсказуемым образом с целью сохранения воспроизводимого состояния системы.

Также это подразумевает отсутствие какого-либо --install-recommends. Ставятся только жесткие зависимости пакетов, и они же удаляются при рекурсивном удалении. Управление дополнительными компонентами может выполняться пользователем самостоятельно.

С целью более удобного управления пакетами, в ПМ должна быть предусмотрена возможность для пользователя оставлять и просматривать локальные комментарии для пакетов. Чтобы пользователь мог написать для пакета заметку вида:

# apt comment 'libblabla-git' 'Установил версию прямо из github как makedep для progfoobarbaz'

7. Политика сборки пакетов.

При сборке пакетов они воспроизводятся настолько близко к апстриму, насколько возможно. На исходники могут накладываться только патчи с закрытием уязвимостей и исправлениями багов. Никакая самодеятельность в накладывании патчей, произвольно меняющих поведение ПО, изменяющих конфиги по умолчанию и т.п., недопустима. Патчи-блобы на тысячи строк кода, делающие непонятно что, недопустимы. Однако допустимы патчи, приводящие структуру установочных путей программы в соответствие с требованиями дистрибутива или патчи для формирования portable-сборок, не привязанных к установочным путям.

Энтузиасты, однако, могут поддерживать кастомные варианты пакетов с патчами, меняющими настройки и функциональность программ. Суть таких пакетов должна быть явно видна из их названия и описания. Например: linux - ядро Linux; linux-zen - ядро Linux, собранное с патч-сетом zen.

8. Особые возможности дистрибутива

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

  • Вынос логики nsswitch в отдельный системный демон. glibc больше не занимается ничем, что связано с nsswitch. Она просто коннектится к демону и запрашивает у него необходимую информацию. Аналогичная поддержка должна быть также внедрена в musl. Статические программы теперь могут быть действительно статическими. А логика работы nsswitch изолирована за платформенно-независимым протоколом и отвязана от ABI прикладного кода.

(Пока только один пункт)

9. systemd или openrc, glibc или musl

Ответ: и то, и другое, при наличии энтузиастов, готовых поддерживать соответствующие ветки дистрибутива. Однако если кто-то делает ветку без systemd, значит отказ от systemd должен быть полным. Никаких костылей в виде elogind. Только ConsoleKit2 вместо него. Кроме того, использование средств, отличных от systemd, не должно вредить возможностям декларативной конфигурации системы.

 ,

wandrien
()

Bedrock Linux рулит

Забавная всё-таки штука.

Установлена у меня на флешке в виде микса из Arch и Debian Bookworm.

От дебиана установлена базовая система с XFCE. От Арча - весь остальной софт: браузеры, офисные пакеты и т.п.

По сути же это две отдельные ОС, загрузиться можно в любую. Но бинарники в PATH, desktop-файлы и часть конфигов в /etc у них общие благодаря магии Bedrock. Таким образом в обоих системах доступен софт из любой из них.

Хотел просто обновить на флешке Арч, но увлёкся и теперь обновляю Debian. Debian я ставил в прошлом году - по сути тестинг, но прописал сразу пути репозиториев для bookworm, чтобы она дальше этого релиза в тестинг не укатила.

Жду вот сейчас, пока он XFCE с 4.16 на 4.18 обновляет. Со слабой надеждой, что там я увижу что-нибудь интересное. Потому что XFCE на самом деле мне не нравится.

Концепция этого микса намекает иметь стабильную платформу от Дебиана и свежий софт от Арча. И значит под дебианом нужна какая-то стабильная DE. Я бы лучше KDE5 поставил. Но они крупноваты для флешки. А других реальных альтернатив вроде и нет. LXQt сырая, MATE - не лучше XFCE, корица тащит куски гнома.

 , ,

wandrien
()

Формат вывода списка пакетов при установке/удалении

Есть какая-нибудь настройка, чтобы заставить apt выводить списки пакетов (когда он пишет «Следующие пакеты будут удалены/обновлены/etc:») в виде столбца по одному пакету на строку, а не этой простынкой по дефолту? Ну читать же невозможно такой список.

 ,

wandrien
()

Почему xorg сообщает неверные значения DPI и размеров экрана?

xrandr сообщает верные значения физического размера экрана:

$ xrandr | grep mm
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 380mm x 210mm

А здесь значения неверные:

$ xdpyinfo | grep dimen -A1
  dimensions:    1920x1080 pixels (508x285 millimeters)
  resolution:    96x96 dots per inch

 , ,

wandrien
()

ИЛВИМ

https://ibb.co/5LKBqC1

Что это за ерунда и какой пункт правил нарушен?

 

wandrien
()

archlinux.org.ru кто-нибудь знает email админа?

Хотел зарегаться на archlinux.org.ru - не приходит письмо.

Потом вспомнил, что раньше уже вроде был акк, поискал по почтам - нашел. Хотел сделать восстановление пароля - тоже не приходит письмо.

Не увидел нигде емайла для связи с администрацией. Может кто знает?

Ну или если есть рега на форуме, то спросите там, рассылку емайлов для регистрации они починят?

Перемещено hobbit из general

 

wandrien
()

LXDE Continued

В общем, я создал профиль организации и начал помаленьку мерджить старые пулл-реквесты: https://github.com/lxde-continued

Кто хочет присоединиться к этому занятию, пишите, добавлю.

С прежними разрабами LXDE каши не сваришь.

https://github.com/lxde-continued/lxde-continued/issues/1

https://github.com/orgs/lxde-continued/discussions/2

https://github.com/orgs/lxde-continued/discussions/4

 ,

wandrien
()

Как перевести на русский...

Сабж на картинке: https://ibb.co/VQXPrRx

Я себе весь мозг сломал.

 

wandrien
()

А у tint2 есть живые форки?

Позиция разработчика в прошлом году:

The final release of tint2 is 17.0.2.

The code is frozen and no more feature requests are accepted.

Неделю назад ему там коммент оставили:

Recent code changes in tint2 dependencies arise issues that are relevant.

Is there any possibilities that the support for tint2 will be resumed at least to fix such problems?

Собственно вопрос. Если ли где новый живой апстрим, готовый делать релизы. Может видел кто…

 , ,

wandrien
()

Новости из параллельного мира

HyperbolaBSD is an operating-system and not a system-distribution

2023-04-20

While we are nearing now the first states for HyperbolaBSD compiling the kernel and first work will go into the userland, we like to inform that HyperbolaBSD is a complete operating-system and not a distribution / system-distribution. We will remove at an upcoming point many more packages from extra-repository, leaving only most important applications, window-managers and more. Others being added will be left out, removed and saved within an own ports-tree for the future, such as many BSD descendant projects, for example OpenBSD, NetBSD and FreeBSD.

That maybe not the vision many have or had, but it is the point given for a further difference: HyperbolaBSD is a free and libre system, but not distributing more and more packages. So please keep an eye at the repositories to come, especially when it comes towards version 0.4.4 as we will do those steps starting there.

For more details look also at the roadmap.

Now we won’t implement more packages besides the planned for release 0.4.3. If you like, please prepare a port on your own sharing for the community. It can be later part for the ports-tree. Please always remember: HyperbolaBSD will be a new BSD descendant system project, not a system-distribution any longer.

 , ,

wandrien
()

Статистика новостей и постов в галерее за все года

Взял числа из архива новостей/постов и отобразил на графике:

https://ibb.co/gZWWy7L

Форумы как формат коммуникации умирают, и ЛОР тоже.

 , ,

wandrien
()

Аналоги pytyle

Разыскивается аналог pytyle, реализованный на Си.

pytyle — это такая программа на питоне, которая добавляет фичи тайлинга в любой стековый WM:

A lightweight X11 tool for simulating tiling in a stacking window manager.

https://github.com/BurntSushi/pytyle1

https://github.com/BurntSushi/pytyle3

Существует ли что-то схожее, но сделанное на Си?

 , ,

wandrien
()

Что происходит с апстримом openbox

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

Но нет, коммиты в рабочих ветках есть:

Багтрекер он/она посещает и периодически какие-то баги закрывает. Только толку нет.

При этом релиз 3.6.1 был в 2015-м году и никакого 3.6.2 с багфиксами нет даже близко.

Пара примеров:

  • Древний баг https://bugzilla.icculus.org/show_bug.cgi?id=6488 был «пофикшен», но ни в один релиз этот фикс не попал. Дистрибутивы накладывают патч вручную.
  • Свежий критичный баг https://bugzilla.icculus.org/show_bug.cgi?id=6669 пофикшен в ветке work, которая хрен знает когда попадёт в релиз. Дистрибутивы накладывают патч вручную.

Хз, что делать. Рассчитывать на адекватный апстрим в такой ситуации не приходится. Форкать и вообще заниматься разработкой openbox я не хочу. Но для SDE нужен какой-то WM, и желательно, чтобы он собирался без десятка патчей.

Так что я взял сорцы, создал свою ветку от метки release-3.6.1 и накинул туда патчи из Арча. Видимо, буду плясать от этого. Суть в том, что нужен какой-то WM на опыты, чтобы тестировать на нём SDE-специфичные фичи.

 , ,

wandrien
()

no limit при завершении пользовательского сеанса

Что работает верно:

  • Если останавливается системная служба, то на неё действует таймайт 90s до прибития.
  • Если вручную останавливать пользовательский сеанс через systemctl stop, то на него действует таймайт 90s до прибития.

Что работает неверно:

  • Если выключать систему через systemctl poweroff, то при остановке пользовательского сеанса пишет ‘no limit’ вместо таймаута и висит там вечно.

Что делать?

Конфег:

$ grep -v '^#' /etc/systemd/system.conf
[Manager]
DefaultTimeoutStopSec=90s

@intelfx

 ,

wandrien
()

gtk2 сам себя не форкнет

Что ж, этот день настал. Будем делать gtk 2.26.

Минимальный план работ такой:

  • Обеспечить масштабирование заданных в настройках тулкита размеров иконок в соответствии с DPI.
  • Обеспечить масштабирование заданных темой пиксельных размеров в соответствии с DPI.
  • Предоставить для приложения API для масштабирования размеров из условных пикселей (под 96 DPI) в реальные в соответствии с DPI.
  • Исправить мелкие косяки в теме Redmond, которые остались с тех пор, как отрисовка темы была переведена на cairo.
  • Дополнить дефолтный пакет тем стилями для gtk3, максимально приближенно имитирующими классические темы.
  • Бэкпортировать из gtk3 некоторые улучшения в диалогах открытия/сохранения файлов.

Приглашаются все желающие. Пишите ваши соображения.

Разные частичные наработки у меня есть, но я их пока нигде не публиковал. Причешу немного и выложу на гитхаб.

P.S. @hobbit, верни тэг gtk2 в БД сайта!!!

 , , ,

wandrien
()

RSS подписка на новые темы