[ book.openbsd.texts ] 17 newmsg : revert : rss : home

Скатерть-самохостинг, или github в отдельно взятой тайге : 07/05/22 20:51 : oldpc to All [#] [reply]

Создать репозиторий (кода, текста, непохабных картинок) в современном интернете не проблема. Заходим на гитхаб, битбакет или подобный сервис, вводим е-мейл, получаем письмо с авторизацией, авторизуемся - и... вуаля! У нас есть свой собственный репозиторий.

Хорошо, когда интернет со всеми его репозиториями под рукой, но если он недоступен, временно или постоянно?

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

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

В общем, стартовые условия определены - мы в тайге, интернета нет, но есть срез репозитория OpenBSD. Можем ли мы там наладить эффективную совместную разработку с публикацией результатов в локальный таёжный веб?

Gitea (git) 1.1.0 : pkg_add gitea

Gitea - это веб-сервис для git, реализованный на go, форк проекта gogs. К сожалению, как и другие проекты на go, gitea будет работать только на современных процессорах - про веб-репозиторий на базе pentium III можно забыть - хотя сам проект довольно нетребователен и быстр.
> с удивлением обнаружил, что современный go снова работает на pentium 3, можно из него сделать gitea-сервер, если памяти запихнуть побольше

Интерфейс схож с github, есть навигация по коду, трекер задач, wiki (с поддержкой синхронизации через git), форки, пулл-реквесты, множество аккаунтов. Емейл вводить надо :), но он необязательно должен быть рабочим, также можно использовать почту в локальной сети.

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

После установки пакета система практически не требует настройки, и запускает веб-демона на указанном порту (который можно легко завернуть через proxy_pass). Окончательная доводка идёт уже через веб-интерфейс.

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

gitweb 2.14.2 (git) : pkg_add git ruby

Веб-интерфейс браузинга по репозиторию из стандартной поставки git. Проще всего запустить его с помощью веб-сервера webrick (который входит в дистрибутив ruby).

cgit 1.1 : pkg_add cgit

cgi-скрипт для просмотра репозитория. Используется, например, на git.kernel.org.

cgi-приложение в нынешних реалиях запускается не так уж и тривиально - лично мне в openbsd удалось запустить его только на веб-сервере apache.

Врождённое крохоборство авторов пакетов не позволило положить в пакет даже пример конфига, его нужно высматривать в интернете.

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

stagit 0.5 (git) : pkg_add stagit

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

Выглядит это вот так: http://git.2f30.org/stagit/

Честно говоря, я пытался немного попользоваться этой штукой, но она мне показалось не очень удобной, постоянно какие-то мелкие неудобства всплывали при использовании. Кроме того, оно обгрызало русские буквы. Сейчас версия далеко шагнула вперёд, аж до 0.7.1, но я не смотрел новые версии, только 0.5 из репозитория.

hg serve 4.3.2 (mercurial) : pkg_add mercurial

Стандартный веб-интерфейс hg. Для запуска достаточно ввести в репозитории команду hg serve

Есть выбор тем, можно подключить подсветку синтаксиса.

Возможно включить поддержку push и через этот веб-интерфейс коммитить код - понятное дело, никакой авторизации, для авторизации можно прикрутить всё это дело к веб-серверу и авторизироваться с его помощью.

fossil 2.3 (fossil) : pkg_add fossil

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

В современных версиях веб-интерфейс обзавёлся современными скинами и уже не выглядит, как привет из 1996 года.

Имеется возможность экспортировать/импортировать в git (через git fast-export / fast-import).

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

> сейчас в fossil добавили и форум, и чат, то есть это действительно полноценный самодостаточный портал разработки, который не затеряется ни в какой тайге

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Практика p3, часть III: IBMы, Debianы и немного лирики : 07/05/22 20:46 : oldpc to All [#] [reply]

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

В двух с половиной предыдущих сериях мы осмотрели 8 ноутбуков, из которых нормально заработал только один - IBM 390X, второй пентиум с видео Neomagic 2200 и звуком ESS Solo-1. Ещё три свалились на уже известной нам проблеме со звуковыми картами с прошивками в OpenBSD после 5.7. На одном из-за некорректной таблицы edid не показывает встроенный экран. И в трёх других не работает PCMCIA, а на двух Неках вдобавок изображение притормаживает.

После чего были ещё два первых пентиума, о которых можно прочесть в ленте-болталке, упоминать о них можно только одно - первый пень не готов для десктопа на OpenBSD 6.2. Хотя на 4.2, например, вполне.

Теперь ещё четыре ноутбука. Из которых три получают вердикт *готово для десктопа на OpenBSD 6.2*:

Compaq Armada E500

600 мгц, видео ATI M1, звук ESS Maestro-2E (в отличие от maestro 3 в compaq evo и dell c500, maestro 2 не требует прошивки, посему нормально работает в 6.2), 192 мб памяти.

Отлично зарекомендовавшая себя машинка. Только уж ОЧЕНЬ громкая в плане PC-спикера - наверное, раз в 10 громче, чем все остальные ноутбуки, вместе взятые. Если бипер в системе можно отключить с помощью блокирования модуля pcppi (просто блокирование модуля spkr почему-то не прокатывает),

# config -ef /bsd
ukc> disable pcppi
ukc> quit

то некоторые звуки там, видимо, на более низком уровне - например, если по ходу пользования системой, независимо от того, есть ли ОС или нет, выдернуть CDROM, то можно оглохнуть от серии писков. Более того, мерзкий писк издаётся КАЖДЫЙ раз, когда нажимается клавиша Fn. И как это отклчить - непонятно. Я уже и BIOS обновлял на последний, и всё равно непонятно, что делать. И если в десктопе можно просто обрезать спикер, то тут колонки на спикер и на бластер, видимо, едины. Бластер, кстати, работает намного тише, чем спикер.

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

IBM i1400

500 мгц, видео ATI M1, звук ESS Solo-1, 64 мб памяти

В этом компьютере нет встроенной сети, поэтому сетевая загрузка недоступна - что очень неудобно. А при загрузке с CD на этом, как и на 1171 (ни на каких других это не воспроизводится) именно при загрузке с хардварного CD (при загрузке с мемдискового CD это также не проявляется) оно вываливается с ошибкой, даже не успев начать загружать OpenBSD. Нашёлся диск с Debian 6, который был поставлен, и там уже через grub2 можо загружать любые образы, хоть через memdisk, хоть напрямую через команду kopenbsd.

Система была поставлена, PCMCIA-сетевуха работает нормально, никаких нареканий.

IBM A21e

700 мгц, видео ATI M1, звук Intel AC97, 128 мб памяти

То же самое, только есть встроенная сеть, да и диск CD загружается нормально (следует помнить, что у меня не официальный диск, а самодельный, сделанный с помощью xorriso, может с официальным проблем нет нигде, надо будет проверить).
IBM 1171

600 мгц, видео Silicon Motion Lynx EM+, звук Intel AC97, 64 мб памяти

Тут тоже не проходит загрузка с CD, но есть сетевая загрузка. К сожалению, ни одна из использованных мною версий OpenBSD не дала здесь иксов.

Вообще, у меня есть несколько используемых для меня версий OpenBSD для старых железок:

* 2.8 - если нужна версия с рубежа веков (вышла 1 декабря 2000 года)
* 4.2 - если нужна просто версия постарее (на одном ноутбуке p150/24, хоть ramdisk-ядра грузились все, generic-ядра не грузились ни на одной openbsd после 4.2, а 4.2 там работала пристойно с иксами и windowmaker), вышла 1 ноября 2007 года
* 5.0 - последняя версия с gnome 2, 1 ноября 2011 года
* 5.3 - последняя версия без kms, 1 мая 2013 года
* 5.7 - последняя версия без проблем со звуком, 1 мая 2015 года
* и текущая версия - сейчас это 6.2

На данном ноутбуке я проверил 6.2, 5.7, 5.3 и 4.2 - иксы нигде не показались

Из проверенных Debian на 8-м и 6-м - чёрный экран вместо иксов. На 5-м дебиане экран вместо 1024x768 показывает 800x600, причём курсора три - один чуть откушен, а два остальных стоят кучно поодаль и отображаются в инверсном цвете.

Зато четвёртый Debian показал весь экран. Локального репа у меня не было, но был сгенерированный cd-образ - я поместил его на соседний раздел и запустил hd-media-установщик. Поскольку в инсталляторе выбрать конкретные пакеты нельзя, а iso-образ после установки нельзя нормально использовать, как реп (ни в 4-м дебиане, ни в современном 9-м, хотя та же убунта с тем же самым debian-installer всю жизнь просто клала цифровую подпись на диск, и этой проблемы там нет), а мне нужно было видеть иксы, я поставил полный десктоп, с гномом, всеми приложениями и опеноффисом.

Ну что сказать - в качестве *печатной машинки с mp3*(tm) это выглядит круто. Гном нормально работает на 64 памяти, вся эта система заняла чуть больше 1 гб места, а с урезанием ненужных локалей - стала меньше гигабайта.

Занимает весь комплект Debian 4.0 Etch без non-free секции 3 DVD диска или 21 CD диск. 4.0 - последний Debian, который может грузить свой установщик с дискет (3 дискеты для установки с cd, если система с cd грузиться не умеет, 3 дискеты для hd-media и 4 дискеты для сетевой установки). И такие низкие требования.

А ведь примерно в это же время вышла Vista. И, если сравнивать самые дешёвые и массовые компьютеры в 2007 и 2017 году, то принципиальной разницы нет - я в 2007 году покупал себе ноутбук с Turion64, 1 гб памяти, 160 гб hdd, ATI x1650 и тормозящим всё это дело Win Vista на борту. Такой-то системой можно и сегодня пользоваться. Но как-то незаметно взлетели нижние требования для свободных систем, будь то OpenBSD или Linux, даже для нетребовательного или консольного софта.

Поэтому для минимальной *печатной машинки с mp3* для систем 2017 года я бы назвал требования p2/64. Тогда как для ОС середины прошлого века, будь то Debian Sarge/Etch, Slackware 10.2/11.0 или OpenBSD 3.6-4.2 - 486dx/16. Да и удачи вам в установке современого Debian на 64 мб памяти - честно говоря, hd-инсталлер etch уже мне сказал, что этого мало, и установил ОС на английском языке (хотя с сетевыми или дисковыми установками даже 5 и 6 дебиана на 64 мб вопросов к количеству памяти нет).

Зато для консольных задач на этом компьютере, включающих и обслуживание других стоящих на этом компьютере ОС, OpenBSD 6.2 вне конкуренции. Но это потому, что я уже привык ко всем этим инструментам, и в старых версиях постоянно попадаются мелочи, которых туда ещё не добавили и которых поэтому очень не хватает :)

Выводы

Если вы хотите для развлечения или *печатной машинки с mp3* использовать систему класса P2/P3, то главное - это смотреть, чтобы была звуковая карта без прошивок. Проверить это очень просто - если в Debian звуковуха не работает, а debian wiki советует идти на какой-то сайт, откуда надо скачивать, затем компилировать прошивки, а затем вручную размещать полученные файлы в нужных местах - значит, эта звуковая карта вам не подойдёт. Впрочем, для печатной машинки (если нет привычек ко всем нововведениям, что появились в 6.2, если вы не используете OpenBSD 6.2 повседневно) и 5.7 вам вполне подойдёт, пусть и софт там немного староват.
> Я, кстати, не вижу больше в Debian Wiki упоминания про прошивки для Alsa. Они научились прошивки в пакет класть, или чем дело-то закончилось?

Ещё одна проблема в том, если вам нужен не vim или emacs, а визуальный текстовый редактор, с поддержкой современных форматов и/или экспортом в PDF. abiword в OpenBSD не работает гораздо чаще, чем работает, а LibreOffice с менее, чем 128 мб памяти лучше не запускать. Если же вам не нужна кириллица, то вам повезло - Patetic Writer из пакета siag или Ted - просто работают. :)

Как работает lyx - я не знаю, ибо он требует texlive, который занимает несколько гигабайт места.

Из игр рекомендую освоить встроенные bsd games. Когда-нибудь, когда я и сам освою их все, я напишу обзор и по ним (плюс по nethack, краткий обзор по angband уже есть). На самом деле, если в них разобраться, от них за уши не оттащишь. Когда-то давно, когда я разобрался с atc, я в неё довольно долго играл. Сейчас уже не помню. Но вот в wump поиграть люблю. Различным приключениям, увы, мешает языковой барьер, но если есть цель *посидеть со словарём и улучшить тем самым английский*, то эти игрушки вполне подойдут (опять же, я попытаюсь когда-нибудь всё же описать основные моменты на русском, и объяснить в двух словах, как в эти игры играть).

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


OpenBSD для начинающих, часть III : 07/05/22 20:40 : oldpc to All [#] [reply]

Некоторые базовые вещи, к которым я привык, но которые не являются обязательными.

Устанавливая недавно Windows XP для проверки ноутбуков, и оказавшись в чистой системе, я мучительно вспоминал, как же довести систему до хоть сколько нибудь юзабельного состояния. К счастью, пользоваться ею мне не пришлось, разве что записать одну игру (загрузившись, естественно, в OpenBSD) и потом запускать её через Проводник.

В OpenBSD, конечно, даже после базового изучения это потом вспомнится и через 10 лет, но всё же я для своего удобства после установки проделываю некоторые действия. На моём примере новички смогут узнать, что такие действия существуют. :)

Деактивация KARL

Механизм KARL для регулярной пересборки ядра на лету занимает лишние 200-300 мб и на слабых компьютерах - внушительное время на компиляцию. Кроме того, на 64 мб без свопа процесс сборки просто падает. Поэтому, для старых, слабых компьютеров с тесными дисками эту штукенцию, появившуюся в OpenBSD 6.2, лучше просто прибить на взлёте.

Для этого, после установки системы, когда появится вопрос. где автоматом будет ответ [done], нужно ввести ! и нажать Enter, затем в консоли ввести rm /mnt/usr/share/compile.tgz (работает автокомплит) и вернуться с помощью exit
> в современных системах это rm -r /mnt/usr/share/relink/

====
Installing bsd          100% |**************************| 12777 KB    00:01
Installing bsd.rd 100% |**************************| 9565 KB 00:01
Installing base62.tgz 100% |**************************| 139 MB 01:01
Extracting etc.tgz 100% |**************************| 189 KB 00:00
Installing man62.tgz 100% |**************************| 7008 KB 00:04
Installing game62.tgz 100% |**************************| 2718 KB 00:01
Location of sets? (cd0 disk http or 'done') [done] !
Type 'exit' to return to install.
# rm /mnt/usr/share/compile.tgz
# exit
Location of sets? (cd0 disk http or 'done') [done]
Saving configuration files...done.
Making all device nodes...done.

CONGRATULATIONS! Your OpenBSD install has been successfully completed!
To boot the new system, enter 'reboot' at the command prompt.
When you login to your new system the first time, please read your mail
using the 'mail' command.

#
====



Редактирование нужных конфигов с помощью ed

Вот вы и дождались установки системы. Но не спешите вводить reboot

На любом установочном носителе, включая 1.44 дискету, есть редактор ed. Который изначально непривычен, но основные несколько команд заучиваются очень легко и затем установочный образ можно всегда использовать, как спасательный.

Действие первое - включение softdep до первой загрузки (чтобы не включать его в готовой системе с лишней перезагрузкой). softdep штука номинально полезная, поэтому лучше включить. Если вы хотите спросить, что это такое, так я и сам толком не знаю :) Это что-то вроде отложенной записи на диск - на системах с 64 мб и меньше я его не включаю, на остальных обычно включаю. Испытывайте на своих системах сами, как у вас быстрее, с softdep или нет. Я лишь покажу, как его включить с помощью редактора ed

Включение softdep

====
# ed /mnt/etc/fstab
164
,n
1 258aeabf0cddd69d.b none swap sw
2 258aeabf0cddd69d.a / ffs rw 1 1
3 258aeabf0cddd69d.e /home ffs rw,nodev,nosuid 1 2
4 258aeabf0cddd69d.d /usr ffs rw,wxallowed,nodev 1 2
2,4s/rw/rw,softdep/
2,4n
2 258aeabf0cddd69d.a / ffs rw,softdep 1 1
3 258aeabf0cddd69d.e /home ffs rw,softdep,nodev,nosuid 1 2
4 258aeabf0cddd69d.d /usr ffs rw,softdep,wxallowed,nodev 1 2
w
188
q
#
====



Итак, что мы тут ввели...

,n - показать строки с первой по последнюю с номерами строк (n). Эта команда аналогична 1,$n, только пропущены первый (1) и последний ($) параметры, которые означают, соответственно, первую и последнюю строку.

2,4s/rw/rw,softdep/ - в строках со 2 по 4-ю заменить rw на rw,softdep

2,4n - вывести строки со 2 по 4 с номерами строк, чтобы убедиться, что всё сработало нормально.

w - записать файл. q - выйти из ed

Более весёлый терминал

vt220, который идёт по умолчанию, хоть и максимально совместим со всем, но запустив, например, mc, вы увидите, что кнопки ведут себя не так, как требуется и цветов всего два - белый и чёрный. Я обычно ставлю терминал wsvt25 для голой консоли (и xterm-256color для иксов). Итак, поменяем параметр для первых четырёх консолей (которые переключаются по CTRL-ALT-F1 - CTRL-ALT-F4, пятая для иксов, а шестая пусть будет vt220 для совместимости)

====
# ed /mnt/etc/ttys
23002
5,15n
5 #
6 console "/usr/libexec/getty std.9600" vt220 off secure
7 ttyC0 "/usr/libexec/getty std.9600" vt220 on secure
8 ttyC1 "/usr/libexec/getty std.9600" vt220 on secure
9 ttyC2 "/usr/libexec/getty std.9600" vt220 on secure
10 ttyC3 "/usr/libexec/getty std.9600" vt220 on secure
11 ttyC4 "/usr/libexec/getty std.9600" vt220 off secure
12 ttyC5 "/usr/libexec/getty std.9600" vt220 on secure
13 ttyC6 "/usr/libexec/getty std.9600" vt220 off secure
14 ttyC7 "/usr/libexec/getty std.9600" vt220 off secure
15 ttyC8 "/usr/libexec/getty std.9600" vt220 off secure
7,10s/vt220/wsvt25/
7,10n
7 ttyC0 "/usr/libexec/getty std.9600" wsvt25 on secure
8 ttyC1 "/usr/libexec/getty std.9600" wsvt25 on secure
9 ttyC2 "/usr/libexec/getty std.9600" wsvt25 on secure
10 ttyC3 "/usr/libexec/getty std.9600" wsvt25 on secure
w
23006
q
#
====



Тут всё примерно то же самое. Я помню, что эти параметры где-то в начале, поэтому прошу показать строки с 5 по 15 с номерами строк. Меняю в строках с 7 по 10 vt220 на wsvt25, убеждаюсь в этом выводом этих строк и записываю файл.

Жизнь после reboot

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

Если установка происходила с CD, то лучше сразу прописать репозиторий:
echo http://mirror.yandex.ru/openbsd > /etc/installurl

Сглаживание шрифтов

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

cd /etc/fonts/conf.d
ln -s ../conf.avail/10-autohint.conf .
ln -s ../conf.avail/10-sub-pixel-rgb.conf .

Запуск иксов через startx

В дефолтной поставке OpenBSD идёт три оконных менеджера: twm, fvwm и cwm. cwm, на мой взгляд, самый простой и самый легковесный, но и с самый неочевидный - там нет панелей, декораций окон, и вообще, если просто запустить cwm без ничего, непонятно, работает он вообще или нет. :) Впоследствии cwm можно заменить на другой менеджер, установленный из пакетов (например, pkg_add icewm, и в .xinitrc cwm заменить на icewm-session)

Пример файла .xinitrc

====
export LANG=ru_RU.UTF-8
export LC_ALL=$LANG

setxkbmap us,ru -option grp:caps_toggle

synclient TapButton1=1
synclient VertEdgeScroll=1

xterm &

xsetroot -solid steelblue

cwm
====



> в современных версиях тачпад настраивается через wsconstl, а не synclient. параметры можно посмотреть, запустив его

Первые две строки устанавливают русскую локаль.

Третья строка устанавливает переключение Rus/Lat через Caps Lock

Четвёртая и пятая - команды для драйвера synapics для тапа мышкой и прокрутки по краю тачпада соответственно.
> см. выше

xterm & - это запуск xterm в фоновом режиме, чтобы на экране было хоть что-то :) Новый терминал в cwm открывается сочетанием клавиш Ctrl-Alt-Enter

Шестая строка - обои :) Чтобы не ломать глаза об решётку X, которая является обоями по умолчанию, фон заливается мягким синим цветом.

cwm - запуск самого cwm

Собрав подобный .xinitrc в своей домашней директории, можно запускать иксы командой startx

> в современных версиях с X снят флаг suid, поэтому запустить иксы можно либо через xenodm, либо через startx от рута, либо через startx от юзера, проставив предварительно suid на запускаемый файл X

Тестирование звука

Ввиду уже описанных мною проблем со звуком на Pentium III, лучше сразу протестировать звук. Лучше всего для этого взять пакет vorbis-tools с минимальными зависимостями. Там есть утилита ogg123, проигрывающая ogg-файлы.

# pkg_add vorbis-tools
quirks-2.367 signed on 2017-10-03T11:21:28Z
quirks-2.367: ok
vorbis-tools-1.4.0p4:libogg-1.3.2p0: ok
vorbis-tools-1.4.0p4:speexdsp-1.2rc3: ok
vorbis-tools-1.4.0p4:speex-1.2.0: ok
vorbis-tools-1.4.0p4:nghttp2-1.26.0: ok
vorbis-tools-1.4.0p4:curl-7.55.1: ok
vorbis-tools-1.4.0p4:libiconv-1.14p3: ok
vorbis-tools-1.4.0p4:flac-1.3.2p1: ok
vorbis-tools-1.4.0p4:libvorbis-1.3.5: ok
vorbis-tools-1.4.0p4:gettext-0.19.8.1p1: ok
vorbis-tools-1.4.0p4:libao-1.2.0p1: ok
vorbis-tools-1.4.0p4: ok
#

Для тестирования я традиционно использую новые саундтреки из tbftss 1.3, которую я никак не могу пропихнуть в основной реп:

> получение с несуществующего ftp пропущено

# ogg123 *.ogg

Теперь, если звук играет и не заикается, значит это хорошо :). Громкость регулируется с помощью утилиты mixerctl:

# mixerctl outputs.master=255

Полученное значение можно записать в /etc/mixerctl.conf (пример файла есть в /etc/examples/mixerctl.conf

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Список полезняшек с диска сборки 6.2 : 07/05/22 20:32 : oldpc to All [#] [reply]

Оконные менеджеры awesome и icewm
Emacs 25.3 gtk2, neovim, mc, neomutt, git, mercurial, fossil
mtpaint, feh, viewnior, ImageMagick, zathura
mplayer, cmus
Браузеры netsurf, links+, lynx
nmap, mosh, openvpn, rdesktop, dictd, irssi, mcabber, nginx, youtube-dl
Игры Ace of Penguins, angband-sdl, blockrage, Crimson Fields, KoboDeluxe, nethack-no_x11
cowsay, xcowsay, figlet, эмулятор dosbox

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


OpenBSD 5.7 как платформа для старых компьютеров : 07/05/22 20:30 : oldpc to All [#] [reply]

Достоинства и недостатки

По результатам тестирования ноутбуков p2/p3 выяснилось, что некоторые модели старых звуковых карт (совпадение это или нет, но эти же модели в Debian требуют искать прошивки на стороне) сломаны во всех версиях OpenBSD после 5.7.

В результате было решено перевести этот парк на OpenBSD 5.7. Кроме очевидных недостатков отсутствия нового софта у этого решения есть и достоинства:

* 5.7 первая версия, где устаканены таймзоны для России (кроме Новосибирска, который поменял часовой пояс уже после). Впрочем, я портирую все актуальные таймзоны в 5.7.

* В 5.7 осталась поддержка Linux-эмуляции, что расширяет возможности запускаемых программ.

* В 5.7 остался полный KDE 3.5, включая такие интересные и полезные кому-то вещи, как kdepim (kontact, kmail), kdeedu и другое. В новых версиях OpenBSD остались лишь базовая основа kde3 и kdegames.
> в современных kde3 всё таки удалён. эх.

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

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

В общем, если любители компьютеров класса p2/p3 объединятся вокруг OpenBSD 5.7 и будут развивать её в плане актуального для данного железа ПО, эта платформа будет обрастать свежим, но актуальным для этого класса аппаратуры софтом.
> во времена 6.1 это было более актуально, чем во времена 7.1

В работе: 850/192

Тесты на ноутбуке compaq evo n400c, 850 мгц и 192 мб памяти.

Вообще, что касается данного железа и данного ПО, разница между 64 и 128 мб очень заметна, разница между 128 и 192 мб очень заметна, а вот разница между 192 и 256 мб заметна куда меньше.

В Битве за Веснот использован FLAVOR -lite, который есть в OpenBSD, он сокращает потребление ресурсов. Правда, игра при этом остаётся без музыки и игровых звуков. Но на 192 мб памяти особого выбора нет.

> далее идут скриншоты, которых вы не увидите

KDE 3.5 и Opera 12 из портов, запускаемая в режиме эмуляции Linux:
KDE 3.5 и LibreOffice 4.3
KDE 3.5 и Battle for Wesnoth 1.12.1

> выглядит норм, работает норм. всё норм.

OpenBSD 5.7 на 64 мб памяти

На 64 мб KDE, LibreOffice и Wesnoth если и будут работать, то очень-очень медленно. Впрочем, и для такого железа в OpenBSD есть немало софта, в том числе и графического:

64 mb, IceWM, Emacs 24.4
64 mb, IceWM, chocolate-doom
64 mb, IceWM, scummvm

> часть про образы диска удалена
> статья представляет только историческую ценность, да и ту без скриншотов

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Зеркалирование OpenBSD: всё своё ношу с собой : 07/05/22 20:26 : oldpc to All [#] [reply]

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

Лучше бродить по миру с полным архивом OpenBSD на HDD.

Зеркалирование базовой системы.

Любая установленная OpenBSD является установщиком OpenBSD той же версии - для этого в предложении boot> достаточно ввести bsd.rd

В процессе установки вас спросят об источнике установки. Для установки с hdd надо выбрать (d)isk и указать путь к файлам.

Какие файлы нужны? Для базовой установки достаточно зазеркалировать все файлы с http(ftp,rsync)://mirror.yandex.ru/openbsd/6.1/amd64(i386)/, кроме install61.iso и install61.fs - это займёт примерно 250 мб на архитектуру. Если место позволяет, можно зазеркалировать и .iso с .fs, это займёт ещё по 500 мб на архитектуру (это образы для CD и для флешки).
> для 7.1 базовая система для i386 - 400 с лишним мб, для amd64 - примерно 550. соответственно, iso и fs образы сравнимого раздела, то есть примерно 1.5 гб для i386 и 2 гб для amd64 при полном резервировании

Полное зеркалирование с помощью wget (wget надо предварительно установить), для обоих архитектур IBM PC, потребует примерно 1.5 гб диска
> примерно 4 гб для 7.1

mkdir -p /6.1/i386
cd /6.1/i386
wget -c -r -np -nd http://mirror.yandex.ru/openbsd/6.1/i386/
rm index.html

mkdir -p /6.1/amd64
cd /6.1/amd64
wget -c -r -np -nd http://mirror.yandex.ru/openbsd/6.1/amd64/
rm index.html

Зеркалирование прошивок (firmware).

Уже установленная система может потребовать некоторые прошивки для работы. Они скачиваются при первом запуске, но если интернет недоступен, их можно скачать заранее (13 мб на всё). Затем их можно просто установить пакетным менеджером.
> почти 50 мб в 7.1

mkdir -p /6.1/fw
cd /6.1/fw
wget -c -r -np -nd http://firmware.openbsd.org/firmware/6.1/
wget http://firmware.openbsd.org/firmware/6.1/SHA256
rm index.html

Установка всех прошивок: pkg_add /6.1/fw/*.tgz

Зеркалирование пакетов.

Полный архив пакетов OpenBSD 6.1 занимает 36-37 гб для архитектуры. При этом некоторые пакеты, типа файла данных ufoai, urbanterror, speeddreams, flghtgear занимают 1-2 гб каждый: в случае экономии места, если вам не нужны эти игры, их можно просто не скачивать.
> для 7.1 amd64 репозиторий пакетов без debug-* и без packages-stable - 50 гб

Полное зеркалирование с помощью wget (wget надо предварительно установить), для обоих архитектур IBM PC, потребует примерно 75 гб диска
> сейчас это в районе 100 гб

mkdir -p /6.1/packages/i386
cd /6.1/packages/i386
wget -c -r -np -nd http://mirror.yandex.ru/openbsd/6.1/packages/i386/
rm index.html

mkdir -p /6.1/packages/amd64
cd /6.1/packages/amd64
wget -c -r -np -nd http://mirror.yandex.ru/openbsd/6.1/packages/amd64/
rm index.html

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

cd /6.1/packages/amd64
pkg_add ./wesnoth

либо

pkg_add /6.1/packages/amd64/wesnoth

Зеркалирование distfiles.

Пакеты получаются из портов с помощью исходников. Дерево исходных кодов приложений и есть это самое distfiles. Зачем могут понадобиться исходные коды? Например:

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

> часть про dpb -F вырезана, у меня он все последние годы был стабильно сломан, и я пользовался обычным make fetch: в отличие от dpb он фетчит сырцы только для своей архитектуры и не фетчит BROKEN-порты)

Зеркалирование www-сайта

Иногда может потребоваться информация с веб-сайта openbsd.org. Но что делать, если он недоступен в сети? Взять с собой!

cd /var/www/htdocs
cvs -d anoncvs@anoncvs.spacehopper.org:/cvs get -P www

Можно получить копию за любой день за всю двадцатислишнимлетнюю историю проекта. Например, cvs get -D '1 jan 1998' www даст вам копию веб сайта на 1 января 1998 года.

Зеркалирование cvs

Вся история проекта OpenBSD: исходные коды, порты, веб-сайт можно также сохранить на жёсткий диск, чтобы делать cvs-запросы не к интернету, а к локальному репозиторию. Это займёт ещё примерно 10 гб. Для этого служит пакет cvsync, подробности и примеры здесь: openbsd.org/cvsync.html
> cvsync больше нет, репозитории синхронизируются обычным rsync

> в статье не упомянуты syspatch и packages-stable, поскольку их тогда не было. syspatch берётся из pub/OpenBSD/syspatch/версия/архитектура, а packages-stable - pub/OpenBSD/версия/packages-stable/архитектура

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


OpenBSD и Pentium 3: практика часть II : 07/05/22 20:16 : oldpc to All [#] [reply]

Ещё 5 ноутбуков на тестирование. Начало смотрите в первой части

Compaq Evo N400c, 850/256, ATI Mobility 1
> от рассказчика: на скриншоте neofetch и luakit. neofetch показывает памяти занято 120 из 255 мб

Хороший компактный ноутбук, вес без батареи - 1.3 кг. В него удалось набить максимальное на текущий момент количество памяти - 256 мб, поэтому можно запускать Luakit, который лучше приспособлен для современного web, чем netsurf.

Но есть большая проблема: не работает звук, точнее идёт с дикими хрипами, неравномерной скоростью и пропаданием большого количества звуковых фрагментов. Звуковая карта ESS 1989, драйвер esa(4).

Судя по коммитам, в области звука в OpenBSD проходили какие-то изменения. И, в итоге, начиная с версии 5.8, эта звуковая карта (как минимум, на этом конкретном ноутбуке) не работает.

Sharp PC-FJ140M, 500/64, ATI Rage Mobility P/M
> от рассказчика: на скриншоте angband-sdl и neofetch

Второй компактный ноутбук, вес 1.4 кг без батареи. Главная проблема этого ноутбука - отсутстие встроенной сети, есть только модем. При этом в OpenBSD 6.1 pcmcia слот не работает (в Debian работает).

Есть слот для CD, но нет такого переходника.

В общем и целом, для OpenBSD он без сети неинтересен.

Dell Latitude C400, 1200/128, intel 830m
> от рассказчика: на скриншоте OpenBSD 5.3, awesome, neofetch и netsurf. Потребление памяти показывает 41 из 126 мб

Небольшой компактный компьютер, вес без батареи 1.4 кг, с батареей 1.6 кг. Батарея в данном ноутбуке живая.

Несмотря на компактность, в ноутбуке есть и тачпад, и трекпоинт.

Хотя сама карта intel 830m в OpenBSD поддерживается, на данном конкретном ноутбуке во всех OpenBSD с intel kms после активации этого самого kms пропадало изображение экрана (загрузка при этом продолжалась). При отключении модуля inteldrm иксы стартуют только в разрешении 640x480. Поэтому на него установлен OpenBSD 5.3.

Dell Latitude C500, 700/128, ATI Mobility M3

Этот Dell уже побольше, с экраном 14". Но тут нет ни батареи, ни CD, ни FDD, только пустые слоты, поэтому вес - 1.9 кг. Есть и тачпад и трекпоинт. Звуковая карта с таким же драйвером esa(4) с теми же проблемами.

Fujitsu Lifebook FMV-6700NU8/L, 700/64, ATI Mobility 1

Всем хороша эта машинка - и батарея, и переходник для CD, и fdd, и хорошая клавиатура, и аппаратное колёсико громкости, включая pc-speaker (аппаратные колёсики на неках почему-то меняют громкость только бластера, но не pc-спикера).

Но звуковая карта Yamaha 744 имеет ровно такие же проблемы, как и esa(4). Вообще, такое наблюдение - те звуковые карты, что требуют найти где-то firmware в Debian, в OpenBSD после 5.7 не работают.

Репорты

https://marc.info/?l=openbsd-bugs&m=150470224722301&w=2

https://marc.info/?l=openbsd-bugs&m=150484883930771&w=2

> примечание: в современных версиях проблемы со звуком вроде бы нет, по крайней-мере в районе 6.8/6.9 я тестировал ноутбук с esa, в котором раньше звук был сломан: он там работал

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


OpenBSD и Pentium 2/3: практика : 07/05/22 20:08 : oldpc to All [#] [reply]

Благодаря одному пользователю (спасибо, Сергей!) мне удалось разжиться тремя ноутбуками класса Pentium II/III, на которых и была протестирована OpenBSD 6.1.

Nec VersaPro VA10J: Celeron 1000, 128, Ati Mobility M6
> от рассказчика: на скриншоте 1024x768 изображён IceWM с темой Trisquel, окно с neofetch и mplayer с видео 360p, на фоне открыт netsurf

К сожалению, на этой системе не захотел работать awesome. Просто зависал в процессе запуска. Хотя один раз запустился, но почему запустился, и почему отказался запускаться ещё - непонятно.

i3 не только показался непривычным, но и потребляет неприличное количество памяти - даже на переключение окон он шуршал жёстким диском, на 128 мб и менее не рекомендуется (в отличие от awesome, которым я успешно пользовался и на 40 мб памяти).

В итоге я зашёл на box-look.org, скачал первую попавшуюся тему для IceWM с рейтингом выше 50% (Trisquel) и поставил IceWM. Хороший, быстрый оконный мендежер, я его и на 16 мб памяти когда-то использовал, и с тех пор он не изменился.

Nec VersaPro R VA80H: Celeron 800, 64-128, Trident Cyberblade i1
> от рассказчика: на скриншоте всё то же самое, только на месте видео синий экран в mplayer

К сожалению, с этим ноутбуком возникло несколько проблем. В итоге он стал работать с 64 мб памяти. При этом, в отличие от хоть сколько-нибудь современных версий Debian, на 64 мб OpenBSD с awesome чувствовала себя хорошо (а ведь 4 мб памяти берёт себе видеокарта).

Самым тормозным местом является видеокарта: она даже не может масштабировать видео,поэтому оно всегда в окошке оригинального размера. mplayer на скриншоте почему-то засвечен, вместо него синий фон.
> примечание: на самом ноутбуке видео показывалось нормально

IBM Thinkpad 390X: Celeron 400, 192, Neomagic Magicgraph NM2200

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

Мышами я давно не пользуюсь (на постоянной основе последний раз пользовался примерно в 2004 году, когда не пользуюсь несколько лет, тогда потом приходится долго заново учиться ими пользоваться), живых мышей дома у меня нет. Кроме того, на ноутбуке нет клавиши Super. Поэтому, немного попробовав Awesome с Mod1 (Alt), в итоге выбрал cwm из базовой системы OpenBSD, он позволяет более гибко манипулировать с клавиатуры (правда, выбегающий курсор постоянно перехватывает фокус, а если отключить трекбол, то на скриншоте курсор был бы прямо посреди экрана - некрасиво и неэстетично). Кроме того, cwm потребляет минимальное количество ресурсов.
> примечание: что-то я не помню проблемы с трекболом, вроде казалось, что беспроблемный ноутбук был

Итоги

Для современого Pentuim II/III с 64-192 мб памяти OpenBSD 6.1 вполне готов. В отличие от не самых новых версий Debian, которые удалось туда установить, софт в 6.1 свежий (свежий софт это не только новые версии Firefox, консольный и лёгкий графический софт тоже постоянно обрастает улучшениями, иногда настолько привыкаешь к мелочам, что версии четырёхлетней давности кажутся жутко неудобными).

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

Так что если у вас есть Pentium II, и вы хотите скрастить его последние дни не проприетарной варезной системой, а дать ему напоследок глоток свободы - ставьте OpenBSD: этот компьютер служил вам или кому-то ещё долгие годы, дайте же ему отдохнуть :)

> да, во времена 6.1 софт был полегче для 64-128 мб памяти, но и сейчас OpenBSD 7.1 готова для такого десктопа :)

Продолжение смотрите во второй части

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Тысяча мелочей для Pentium 2 : 07/05/22 20:00 : oldpc to All [#] [reply]

Софт в данных наборах рекомендован для использования на системах класса Pentium II с 64-256 mb. Приложения с CD должны работать на 64 mb, некоторые пакеты на DVD имеют более высокие системные требования.

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

Образы построены на базе OpenBSD/i386 6.1-stable. Для экономии места, CD не содержит comp61.tgz (компиляторы) и bsd.mp (ядро для многопроцессорных систем)

> Образы более недоступны, статью оставляю только из-за списка пакетов. К которому будут замечания

Пакеты на CD
Браузеры

X: netsurf, dillo, links+
Консоль: links+, w3m, lynx

Почтовые клиенты

gtk: claws-mail, sylpheed
Консольные: mutt, alpine

Мессенджеры/IRC
Консольные: mcabber, irssi, weechat, bitlbee

Сеть

Торренты: aria2, transmission
Безопасность: nmap, aircrack-ng, bsd-airtoos
> aircrack непонятно, работает ли вообще, и besside нет. airtools тем более непонятно, работает ли. не рекомендуется.
Веб-сервер: apache-httpd, nginx, lighttpd
> теперь в OpenBSD в базовой системе есть собственный неплохой простой сервер
Веб-разработка: php, py-flask, postgresql
Прочее: remmina, xfreerdp, samba

Оконные менеджеры

Входят в базовую поставку: twm, fvwm, cwm
В пакетах: awesome, icewm, dwm, fluxbox, openbox

Игры

X: kobodeluxe, xkobo, numptyphysics, blockrage, rocksndiamonds, life, xpat2, ace, chocolate-doom
> chocolate-doom теперь требует обязательного 3d-ускорения, и на старых компьютерах не работает. в качестве альтернативы можно порекомендовать prboom и prboom-plus, они работают в софтовом рендеринге
Консоль: game61(база), angband, nethack, moria, omega, cpat, wanderer, vms-empire

... и тысяча других мелочей ...

DVD дополнительно содержит

* браузеры для современных веб-страниц luakit и surf
> все браузеры на webkit больше не работают на старых компьютерах

* игры openttd, freeciv и другие

* эмуляторы scummvm, qemu, dosbox, hatari, vice, gxemul, simh и другие

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

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


OpenBSD для начинающих, части 1 и 2 : 07/05/22 19:53 : oldpc to All [#] [reply]

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

OpenBSD для начинающих, часть I
Установка

Многие годы усиленно ходят слухи, что OpenBSD сложна в установке и использовании. Но это совершенно не так, и данный цикл статей это докажет. Первая часть посвящена установке системы.

Для начала, посмотрите вот эту анимацию: openbsd_install.gif
или более замедленно: openbsd_install_slow.gif

> от рассказчика: на анимации кто-то за кадром нажимает Enter много раз

Сколько вы там видите случаев, когда нужно что-то вводить?

Ровно четыре.

i (install) в самом начале, имя хоста, ввести пароль, повторить пароль. Всё. OpenBSD сможет установить даже домохозяйка, если ей палец к Enter-у привязать.
Разметка

> от рассказчика: в статье вообще не упомянут UEFI. Хотя у нас тут старые компьютеры, какой тут UEFI

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

Также если у вас уже есть раздел с тэгом A6 (OpenBSD), то никаких проблем тоже нет - можно сколько угодно раз устанавливать OpenBSD, и он будет ставиться только на этот раздел (естественно, данные там будут потеряны) и никак и никаким образом не затронет все остальные разделы. То есть, если раздела OpenBSD у вас ещё нет, его лучше сделать через другие средства типа cfdisk, и только потом запускать инсталлятор.

Важно: когда вы выбираете "ставить в раздел OpenBSD", но в MBR у вас ничего не записано и ничего не загружется (например, вы только разметили диск по нужным разделам, но ничего ещё не ставили", то после установки система загружаться не будет. Поэтому следует в меню fdisk установить флаг active на нужный раздел (который помечен тэгом A6) с помощью команды flag, например - f 3. Затем обновить MBR командой u. И затем записать изменения командой w (после чего звёздочка в курсоре должна исчезнуть).

В общем, преодолев стадию разделов (в MBR есть 4 основных раздела, и один из них должен быть A6. Установка не на раздел A6 и не в основной раздел - не поддерживается), мы переходим ... в стадию разделов. Но других разделов, называемых disklabel. Вы сможете видеть дисклейблы a:, b:, c: и другие. a - это основной корневой раздел, b - это swap, а c - это вообще весь физический диск. Если в linux sda1 это первый раздел диска, а sda - это весь диск, то в OpenBSD sd0a это первый раздел диска, а sd0c - это весь диск (причём в OpenBSD block и raw устройства отличаются, block-устройство это sd0c, а raw-устройство - это rsd0c, но для большинства штатных утилит можно указвать просто sd0, а дальше оно само разберётся).

Итак, дисклейблы. В случае первой установки, для экономии места, а также для тех, кто как я, жил несколько лет с hdd в 170 мб и с тех пор ценит каждый байт на диске, проще всего выделить один раздел "под всё" (если памяти достаточно, то и swap не нужен, а различные гибернации - это точно не вопрос для первой-второй установки). Для этого в disklabel переходим в custom, вводим a a, и далее на все вопросы, кроме mountpoint, отвечаем просто enter-ом. на mountpoint отвечаем /. Далее пишем w, затем q - пересоздание разделов начнётся.

Если же вы заново ставите систему в тот же раздел OpenBSD, где она уже стояла, тогда достаточно ввести n a, поставить mountpoint как /, далее w и q.

Теперь все файлы установятся на корневую систему.

Полезный совет: если вы ставите систему на маленький диск, где недопустимы потери из-за зарезервированной области диска (по умолчанию 5%), то в начале инсталляции выберите (S)hell, введите там export MDROOTFSOPT='-m 0 -o space' и только потом запустите /install

> от рассказчика: в современных OpenBSD используется FFS2, и опции теперь: -m 0 -o space -O 2

Пользователи

Также в исходной анимации не разобрано добавление пользователей. Но оно совершенно очевидно. Следует помнить, что юзер, который создаётся при инсталляции, автоматом попадает в группу wheel и может выполнять команду su. Если же вы не создали пользователя во время инсталляции, то создавая его уже с установленной системы, не забудьте вручную поместить его в группу wheel. Кроме того, если вы хотите играть в bsd-games и другие игры, которые пишут в /var/games, добавьте пользователя в группу games. Например, вот так: usermod -G games user

Источники установки

OpenBSD можно установить с cd-диска, с любого диска с фс fat/ext2/ext4/ffs либо по https/http. Если инсталлятор подключён к интернету, то он для каждого ip-адреса запоминает последний сделанный выбор (включая пути и сервер) и при следующей установке подставляет именнно его. Кроме того, в этом случае инсталлятор автоматически выбирает временную зону.

Всё остальное

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

После установки можно сразу включить softdep на корне. Если вы создавали только один раздел, то это можно сделать так:

====
  ed /mnt/etc/fstab
s/rw/softdep,rw/
w
q
====



После чего перезагружайтесь в свою новую систему. Что там делать дальше, будет обсуждено в следующей главе.

> от рассказчика: а вот и она!

OpenBSD для начинающих, часть II
Установка пакетов

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

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

Если вы ставили систему с http-сервера, он будет записан в /etc/installurl. Если вы ставили систему из другого источника, то вы можете просто записать нужный адрес в installurl

cat http://mirror.yandex.ru/openbsd > /etc/installurl

или установить переменную PKG_PATH

export PKG_PATH=http://mirror.yandex.ru/openbsd/7.1/packages/amd64/

Теперь можно начинать. Попробуйте ввести pkg_add mc и посмотреть на результат.

> от рассказчика: тут пропущено много неактуального

Быстрая установка пакетов

Некоторые пакеты требуют выбрать версию или FLAVOR. Чтобы не выбирать вручную, можно задавать эти параметры уже перед установкой:

pkg_add php%7.0

Эта команда установит версию 7.0

Для FLAVOR используется --

pkg_add angband--no_x11

Пустой FLAVOR задаётся точно так же:

pkg_add rsync--

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Поверхностное сравнение браузеров : 07/05/22 19:41 : oldpc to All [#] [reply]

Ситуация: стандартная OpenBSD 6.1 amd64, 512 mb RAM, запущен WM awesome, среда сразу после перезагрузки. Запущен браузер с одним сайтом. Считаем количество памяти Free+Cache, остаток от 512 мб.

Естественно, этот результат мало что значит - в другой оболочке или с другими запущенными программами будут совсем другие результаты. Кто-то слинкован с gtk2, кто-то с gtk3, у epiphany в зависимостях многие компоненты gnome, а у otter-browser - qt5.

Но всякий рейтинг субъективен, поэтому раздадим места в нашем:

1. dillo 3.0.5 / 356 mb free

2. links+ 2.14 / 354 mb free

3. netsurf 3.6 / 338 mb free

4. luakit 2015.01.24 / 301 mb free

5. surf 0.7 / 293 mb free

6. otter-browser 0.9.12 / 288 mb free

7. qutebrowser 0.10.1 / 234 mb free

8. chromium 57 / 211 mb free

9. seamonkey 2.46 / 198 mb free

10. surf2 0.6 / 183 mb free

11. midori 0.5.11 / 183 mb free

12. epiphany 3.22 / 181 mb free

13. firefox 52 / 153 mb free

> от рассказчика: на скриншотах был показан сайт на foundation. dillo и links даже не напрягались его форматировать, в netsurf текст наезжал друг на друга, во всех остальных случаях сайт отображался корректно

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Сетевая загрузка установщика : 07/05/22 19:38 : oldpc to All [#] [reply]

(статья немного адаптирована)

Образ установщика OpenBSD (ядро bsd.rd) в сжатом виде занимает примерно 5 (на момент выхода OpenBSD 6.1, сейчас немного больше) мб, поэтому его удобно грузить по сети.

> PXE

PXE-загрузка применяется для локальной сети: например, один из компьютеров может стать станцией, которая будет раздавать установщик (не следует забывать, чо bsd.rd можно использовать и как восстановительную систему для OpenBSD). Для этого потребуются серверы dhcpd и tftpd.
Настройка dhcpd

Для настройки и запуска dhcp-сервера требуется установить ip-адрес из заданой подсети (например. 192.168.0.51) и установить подобный конфиг /etc/dhcpd.conf

====
  # option  domain-name-servers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
# option routers 192.168.0.1;
range 192.168.0.52 192.168.0.252;
filename "pxeboot";
}
====



После чего можно включить dhcp-сервер:

====
  rcctl enable dhcpd
rcctl start dhcpd
====



> Настройка tftpd

Минимальный комплект состоит из двух файлов - ядра bsd.rd (по умолчанию ищется под именем bsd) и pxeboot (находится в /usr/mdec). Для сокращения времени сетевой загрузки ядро перед использованием лучше сжать. То есть, инфраструктуру можно подготовить примерно вот так

====
  mkdir /tftpboot
rcctl enable tftpd
cp /usr/mdec/pxeboot /tftpboot
# cat /bsd.rd | gzip -9 > /var/tftp/bsd
# в современных версиях bsd.rd уже сжат, поэтому
cp /bsd.rd /tftpboot/bsd
rcctl start tftpd
====



Можно также использовать файл etc/boot.conf - подробности в man boot.

> gPXE/iPXE

gPXE/iPXE помимо dhcp позволяет также загружать образ напрямую с http.

iPXE может быть загружен с носителей, с EFI, записан напрямую в сетевую карту. Пользователи Debian/Ubuntu могут сделать apt-get intstall ipxe и iPXE будет автоматически добавлен в меню GRUB.

...

Ссылки на файлы удалены, но там были простейшие файлы, загружающие образы cdXX.iso или floppyXX.fs/img через memdisk:

====
#!gpxe
kernel memdisk raw iso
initrd cdXX.iso
====


Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Полезняшки OpenBSD : 07/05/22 19:30 : oldpc to All [#] [reply]

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

> mosh

mobile shell - это средство для связи с удалённым сервером через ssh для плохих каналов. В отличие от ssh, ввод выполняется интерактивно, без длительного ожидания сервера (что весьма заметно на медленных каналах, когда между вводом текста и его отображением на экране проходит долгое время). Также поддерживается роуминг (пересоединение с сервером без разрыва сессии).

Использование его довольно просто - ставим mosh на клиенте и на сервере, затем mosh user@host. Для каких-то особых случаев, см. man mosh.

> mathomatic

Простая математическая система, чей пакет вместе с документацией занимает примерно 300 кб. В отличие от традиционных bc/dc, эта вещь позволяет решать множество задач. Например, вот так решается квадратное уравнение:

====
1-> x^2 + 4x - 21 = 0

#1: x^2 + (4*x) - 21 = 0

1-> solve x
Equation is a degree 2 polynomial equation in x.
Equation was solved with the quadratic formula.
Solve successful:

#1: x = -(2 + (5*sign))

1-> calculate
There are 2 solutions.

Solution number 1 with sign = 1:
x = -7

Solution number 2 with sign = -1:
x = 3
1->
====



Также mathomatic умеет строить графики (с помощью gnuplot), экспортировать выражения в код python, java или c, и многое другое. Смотрите документацию в /usr/local/share/doc/mathomatic

Встроенный help также присутствует. И всё это в таком мизерном объёме и без зависимостей. Вообще, есть опыт запуска этой системы на установочной 1.44" дискете OpenBSD

> распаковка .exe

Если вам прислали .exe-файл, в котором запакованы какие-то данные, то, возможно, распаковать его помогут cabextract, p7zip, unrar, unshield, innoextract

> dcfldd

dd с наворотами.

> testdisk

Небольшая утилитка, которая есть под все операционные системы, включая DOS. Не обошла она вниманием и OpenBSD. Утилита позволяет восстановить разделы диска в случае удаления разделов или повреждения таблицы разделов.

Входящая в комплект поставки утилита photorec пытается восстановить изображения из *сырых данных* (куска диска, на котором не осталось никаких разделов, и восстановить которые не представляется возможности).

> просмотр doc/docx/odt/rtf/pdf

Для просмотра форматированных файлов или преобразования их в текст служат утилиты catdoc, docx2txt, odt2txt, unrtf и утилита pdftotext из пакета poppler-utils

> snownews

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

На официальном сайте имеется коллекция обработчиков для разных сайтов (в основном, немецких): https://kiza.eu/software/snownews/snowscripts/extensions/

В числе локализаций присутствует и русский язык.

> bchunk

Утилита позволяет из многодорожечного .bin+.cue получить все дорожки. Обычно, в случае образов дисков игр, это .iso плюс аудиотреки. Используйте ключ -w, чтобы вместо невнятного .cdr получать аудиотреки в полноценном .wav:

bchunk -w quake2.bin quake2.cue q2_

> ttyrec

Средство для записи и последующего воспроизведения содержимого консоли.

Утилита ttyrec записывает всё происходящее.

Утилита ttyplay проигрывает полученный файл. Возможно ускорять или останавливать просмотр (перемотка назад - не предусмотрена).

Утилита ttytime показывает, сколько секунд в полученном файле.

> txt2tags

Имея в зависимостях только python 2, эта система разметки позволяет превращать текст в другие системы разметки :). Этот текст был написан в txt2tags, и только потом преобразован в другие форматы.

> fossil

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

В современных версиях веб-интерфейс обзавёлся современными скинами и уже не выглядит, как привет из 1996 года.

Имеется возможность экспортировать/импортировать в git (через git fast-export / fast-import).

> calcurse

Простой визуальный календарь-органайзер, использующий ncursesw. Всё простенько, удобно и визуально. Есть импорт-экспорт файлов ical.

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

> cpat

Набор пасьянсов, работающий в консоли. Это уже для особо опытных секретарш. Менее опытные, вероятно, предпочтут pysol.

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Интервью с Вадимом Жуковым, мейнтейнером KDE и Qt в OpenBSD : 07/05/22 19:25 : oldpc to All [#] [reply]

На основе вопросов пользователей linux.org.ru состоялось интервью с Вадимом Жуковым, мейнтейнером KDE и Qt в OpenBSD. Получены ответы на самые интересные вопросы.

> Как вы оцениваете эволюцию KDE от 3 к 4 ветке? Оправданы ли такие революционные изменения интерфейса?

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

Если говорить об интерфейсе пользователя, то все прелести наработок компенсируются тремя «но»: падучесть Plasma, тормоза Akonadi и падучесть Akonadi. К сожалению, и в эпоху KDE5 в этой области остаются проблемы... В итоге я сам не использую KDE как именно DE, но с удовольствием пользуюсь рядом KDE-программ: KMyMoney, Digikam, KSnapshot, Filelight и другими. В плане интерфейса мне очень импонирует глубокая степень интеграции в KDE и, как мне кажется, большая ориентированность на пользователя с инженерным мышлением.

> Как вы адаптируете KDE под OpenBSD? С чем больше всего сложностей возникает?

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

Серьёзной проблемой является Plasma Workspaces (это уже из мира KDE5): чтобы его портировать. нужно сначала втаскивать в базовую систему (точнее, в Xenocara) поддержку Wayland. Мною подготовлены порты для собственно wayland и wayland-protocols, но, опять же, не хватает времени даже на то, чтобы пропихнуть в апстрим патчи для поддержки kqueue...

Также всё больше становится необходимым портирование Qt WebEngine. Очень надеюсь закончить этот процесс до начала учебного года — после этого студенты уже не дадут мне столько времени. :)

> Кем вы видите себя через 5 лет? Чего вам не хватает в своей работе?

А какая зарплатная вилка? ;) Шучу.

Если речь про основную работу, то не хватает умения пробивать идеи (в частности, выбивать ресурсы), а также банальной аккуратности.

Если про образовательный процесс, то не хватает компьютерных аудиторий.

Ну а если всё же речь про open source, то не хватает времени на всё, что хочется сделать. :) Думаю, я бы отказался даже от нынешней основной работы (на которую трачу три дня в неделю), если бы можно было обеспечивать сравнимый уровень жизни.

> Общались ли вы с Тео де Раадтом? Какое впечатление он на вас произвел?

Общался неоднократно. Впечатление — потрясающе эрудированный и очень быстро мыслящий человек. Думает и говорит как пулемёт. Очень энергичный и полностью живёт проектом OpenBSD.

> Вы вообще читаете ЛОР и как часто? Зарегистрированы ли на ЛОРе или пишете из-под анонимуса? Какое впечатление ЛОР произвел на вас?

Читаю очень редко. В комментарии ходить — жалко время тратить, а новости те же, что и на OpenNet, например. Ничего лично, просто так исторически сложилось. Так что изредка меня заносит на ЛОР шальным ветром гиперссылок, но не более того.

Вроде бы зарегистрирован, но в любом случае не пишу. Полез было восстанавливать учётную запись и понял, что она была, похоже, зарегистрирована на мой первый почтовый ящик, ныне канувший в Лету вместе с хостером E-mail.ru.

> Как вы относитесь к Wayland? Появится ли он когда-нибудь в OpenBSD?

Отношусь — с сомнением. С одной стороны, код Wayland мне скорее нравится, и ряд заложенных в него идей звучит здраво. С другой — по работе я довольно активно использую проброс X-окон... В OpenBSD он, конечно, появится, вопрос лишь — когда.

> Как вы относитесь к flatpak и прочим snap-aм?

Я понимаю, зачем они нужны, но по моему скромному мнению они, во-первых, вредят open source (уменьшается стимул участвовать в работе на девелоперской веткой кода), а во-вторых, провоцируют халтурный подход к организации инфраструктуры. Это примерно как «умные лампочки»: на словах прикольно, а в реальности — куча внезапных проблем.

> Как вам вообще OpenBSD на desktop? ЗАЧЕМ она нужна там, ведь есть Linux-системы, более ориентированные для desktop?

Нормально она на desktop. Программы есть и работают, даже какие-то игры есть и работают. Steam нет, это да. И бинарных драйверов от NVIDIA нет. И Wine.

Я не соглашусь со словами об «ориентированности». OpenBSD так же как и многие дистрибутивы GNU/Linux является ОС общего назначения. «Заточенность под десктоп» — это очень общие слова, так как этот самый «десктоп» может быть сильно разным. Какие-то задачи лучше решаются с помощью того или иного дистрибутива GNU/Linux, какие-то — с помощью OpenBSD, какие-то — с помощью Windows.

На своей основной работе я вначале поднимал местные сервисы на CentOS. А потом, устав от войны с гиперусложнённой системой, потихоньку перетащил всё на OpenBSD. Сбоев стало меньше, времени на обслуживание я тоже трачу меньше, инфраструктура более единообразная — profit как он есть.

Мою систему проще обслуживать, обновления куда более управляемые, файловая система, опять же, не сыпется... :)

> Почему лично вы вот пользуетесь и поддерживаете KDE для OpenBSD?

KDE изначально я просто пользовался. Когда я только приходил в мир Unix, именно с этой средой я подружился. А потом появился KDE4, а в OpenBSD его всё не было и не было. Я и начал сам. :) Точнее, подхватил эстафетную палочку у Марка Эспи (Marc Espie). Если честно, зная, сколько усилий и проблем придётся преодолевать, я бы, может, и не стал браться за это дело... Но что есть, то есть.

> В каких сферах можно применить openbsd?

Я бы скорее сформулировал вопрос наоборот, так как оригинальный дать в меру краткий ответ невозможно: «В каких сферах нельзя применять OpenBSD?»

Прежде всего это сферы, где нужна RTOS, конечно. Туда же идёт совсем мелкая эмбедовка — условно, меньше мегабайта ПЗУ.

> В каком состоянии поддержка железа в OpenBSD?

В целом неплохо. Нет Bluetooth (был, но выпилили, так как оказался никому не нужным настолько, чтобы нормально поддерживать) и FireWire. Нет поддержки фирменных технологий NVIDIA, так как нет бинарных драйверов. Какие-нибудь фирменные мелочи на разных ноутбуках могут не поддерживаться, но поскольку я по жизни пользуюсь ThinkPad'ами, то подробнее сказать не могу.

Зато очень хорошо работает звук (OpenBSD реально может гордиться sndio), ну и неплохой сетевой стек. :)

> Systemd в openbsd не появится? Что вы думаете об этом системном менеджере?

Нет, но в портах вроде как были какие-то заглушки для сборки ПО.

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

> Плохи ли вообще комбайны и в каких ситуациях?

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

Современные браузеры — те ещё комбайны. Но пути обратно в Web 1.0 нет. Это может нравиться, может не нравиться, но от этого никуда не денешься, и нужно стараться хотя бы как-то управлять этими процессами, вот и всё.

> Сколько времени уходит на создание одного порта? Это сложно?

Смотря какое ПО. Порт для какого-нибудь Ruby gem делается за несколько минут. Ну а порт Qt WebEngine съел у меня лично уже с неделю чистого времени.

Есть некоторый минимум знаний: прежде всего, bsd.port.mk(5), pkg_add(1), pkg_create(1) и Porter's Handbook: http://www.openbsd.org/faq/ports/ . Для портов, которые устанавливают системные службы, нужно ещё владеть rcctl(8) и rc.subr(8). А перед этим всем, конечно, нужно в целом понимать, что как устроено в системе, для чего есть общий FAQ http://www.openbsd.org/faq/ и свободно доступная книга «Absolute OpenBSD».

> Как стать мейнтейнером?

А оно вам действительно надо? :) Это ведь в первую очередь ответственность, а не привилегия.

Прежде всего, нужно или сделать новый хороший порт, или взять под своё крыло бесхозный имеющийся — в любом случае это делается через список рассылки ports@openbsd.org . Добиваться обратной связи, не бояться быть настойчивым. Получив обратную связь — слушать внимательно и выполнять рекомендации.

Если работа над портом идёт медленно — имеет смысл закидывать pull request в особый репозиторий openbsd-wip на GitHub: https://github.com/jasperla/openbsd-wip/ . Например, именно там вначале часто появляются новые версии портов KDE.

> Как со Skype или его аналогами (tox, etc…) в OpenBSD?

Со Skype всё плохо: Web-морда работает только с сообщениями, а родного клиента, конечно, нет.

Что же до аналогов — что-то есть в портах, что-то — в openbsd-wip (тот же tox), остальное надо собирать. Главной проблемой в последнем случае может стать завязка на ALSA — в этом случае обычно можно попросить помощи у Alexander Ratchov в написании sndio-бекэнда. Это обычно дело несложное, если есть хотя бы какой-то навык в языке Си.

По официальным портам можно искать с помощью стороннего сервиса: http://openports.se/search.php . А в самой системе есть пакет sqlports (БД SQLite с индексом портов по разным признакам), есть "make search" в дереве портов и есть pkg_locatedb, которая есть обёртка над обычным locate с базой по всем файлам, которые устанавливаются тем или иным официальным пакетом.

> Какой ваш любимый стиль (императивное, ООП или Функциональное программирование) и язык программирования?

Для функциональщины моих скромных мозгов не хватает. :) А если серьёзнее, в сфере моих интересов просто-напросто правят бал императивные языки.

Мой любимый язык программирования — C#. Без шуток, именно как язык он мне очень нравится. Но пользуюсь всё же больше C и C++, реже — Perl, а в последние годы под долгу службы часто что-то делаю на Java (которую толком не знаю, но спасает знание C++ и C# :) ).

> В контексте последних эпидемий с закладками: как часто проводится аудит кода проверка статическими анализаторами и как поставлены прочие вопросы доверию к коду OpenBSD?

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

А кому вы больше доверяете: разработчикам OpenBSD или авторам статических анализаторов? ;) На самом деле, если для вас действительно важен этот вопрос, то не полагайтесь ни на кого — возьмите свой любимый статический анализатор и пройдитесь по коду.

Из последнего — в связи с переездом на clang (буквально в эти часы, как я пишу данный ответ, идёт подготовка к переключению x86-платформ на сборку clang'ом) был очередной проход по коду всей базовой системы с clang static analyzer. Критических ошибок выявлено не было.

> И да, Пользователь ЛОРа commagray просит вас (или других разработчиков) создать и добавить в основное дерево порты qt5-webkit-ng и qt5ct+lxappearance. Что вы ему ответите?

Насколько я понимаю, qt5-webkit-ng не был слишком переделан по сравнению с оригинальным, так что его портирование будет не таким сложным. Правда, если смотреть на ChangeLog, то проект как будто загибается: https://github.com/annulen/webkit/blob/qtwebkit-stable/ChangeLog . Всё-таки будущее, похоже, за Qt WebEngine, так что пока что я буду свои усилия концентрировать на нём. Однако, если кто-то всерьёз хочет qt5-webkit-ng, то я готов помочь — объяснить, показать, сделать ревью.

Насчёт Qt5Ct и LXappearance — можно сделать... Напишите мне на следующей неделе (в начале августа), когда основная буря с clang'ом немного утихнет. Сейчас практически все основные мейнтейнеры заняты этим процессом — думаю, понятно, что смена системного компилятора на основной платформе требует много усилий, и даже если я готов потратить полчаса своего времени на это дело, я не готов сейчас отрывать кого-то ещё для проведения аудита.

В заключение скажу: вы там держитесь, всего хорошего и спасибо за рыбу! :)

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


g2k14: по мотивам хакафона : 07/05/22 19:19 : oldpc to All [#] [reply]

> Все персонажи являются вымышленными, а любое совпадение - случайными

g2k14 - это хакафон OpenBSD, который проходил в городе Любляна (Словения) с 8 по 14 июля 2014 года.

Из отзывов участников мы можем узнать, в каком направлении развитие OpenBSD двигается и будет двигаться дальше. Это своего рода неформальные программные статьи, которые отвечают на вопрос "Как живёшь, OpenBSD?"

На этом мероприятии были замечены и два русских разработчика OpenBSD: Вадим Жуков (zhuk@) и Кирилл Бычков (kirby@)

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

= Вадим Жуков
= World of KDE

По горячим следам успешного хакафона, Вадим Жуков (zhuk@) отчитался о своих успехах:

Я прибыл на хакафон с коротким, но суровым списком задач:

+ Закончить KDE 4.13.2 и приготовить 4.13.3 (официальный анонс - 15 июля*)

+ Наконец-то портировать несколько приложений из openbsd-wip в официальный cvs

+ Исправить давнюю проблему с усиленным поеданием процессора в kded4

+ Продолжить работу над Samba 4.x

+ Исправить проблему с отсутствием ext2fs в установщике для amd64 (RAMDISK_CD)

+ Некоторые вещи, которые я разбабатывал последние месяцы для ports/infrastructure, занести в CVS

+ Занести в CVS порт man-pages-posix

> * Разработчики KDE дают возможность мейнтейнерам пакетов с KDE в той или иной ОС иметь т.н. предварительный доступ, где-то дней за 3-5 до официального релиза. Это позволяет выпускать "родные" пакеты с KDE для ОС одновременно с официальным анонсом релиза.

Но прежде всего хакафон для вас начинается со знакомства с людьми, с которыми вы не были прежде знакомы. Учитывая, что до этого единственным мероприятием, связанным с OpenBSD, которое я посещал, была конференция EuroBSDCon 2013, на хакафоне было много новых лиц. Боюсь, что не запомнил их всех, но не потому, что я не уважаю их или их работу, это просто мой недостаток :)

Итак, хакафон начался. Мы с kirby@ - другим портером OpenBSD из России - сели друг напротив друга. И это нам очень помогло - он помог мне тестить сборку ядра с ext2fs и дал мне идею насчёт libinotify (см. ниже), я помог ему обновить порт rawtherapee.

Мой первый коммит на этом хакафоне был занесением в CVS books/man-pages-posix. Это полезная вещь для разработчиков, и я получил положительные отзывы ещё до того, как начал это импортирование.

Это был не столько мой труд, сколько schwarze@ и других разработчиков, давших большое количество отзывов и замечаний. Я узнал много нового о mandoc, groff и pkg_create во время работы над этим портом. Но, опять же, это было только для разгона.

Большую часть времени я сидел и делал четыре вещи: запускал make, твикал патчи, пушил их в апстрим и засыпал landry@ новыми портами. благодарен ему за терпение. Благодаря его отзывам*, у нас теперь есть следующие приложения из KDE4: Calligra Suite, Digikam, K3b, Kdenlive, KDevelop, KMyMoney, KTorrent, Tellico и Yakuake (вместе с зависимостями, типа Eigen 3.x).

> * Отзывы (ревью) могут быть и без замечаний, но без ревью занесение в порты не делается.

Из портов, связанных с KDE4, в openbsd-wip осталась только audio/cantata: она имеет несколько кривую интеграцию с KDE4, так что мне быстро это надоело - плееров, в том числе для KDE4, и так хватает. Надеюсь, что Рафаэль Садовски, который постоянно мне помогал, не обидится. :)

Обновление KDE 4.13.2 само по себе скучно и неинтересно. Имеем 200+ портов, значит, 200+ раз пишем make configure update-plist port-lib-depends-check package clean, отправляем несколько патчей в апстрим, закончили упражнение. Вот и всё. Реально всё. Трудными были задачи собственно портирования KDE4, а также совместного существования KDE3 и KDE4, а поддержка портов KDE4 не так сложна.

И вот пришло время для действительно интересненького. kded4. Если вы не в курсе подробностей: kded4 (что означает "KDE 4 Daemon") обычно запускается с kdeinit... то есть, либо в самом начале сессии kde, либо когда вы запускаете первое приложение KDE. Этот демон хостит так называемые модули KDE - Если вы видели services.exe в Windows, то вы понимаете, о чём я, это почти то же самое. Другая задача kded4 - мониторить файлы конфигурации, особенно связанные с MIME файлы .desktop. При установке/настройке/удалении приложения .destkop-файлы могут изменяться, как системные (в /usr/local), так и ваши личные (в $KDEHOME). Многие программы, особенно различные виджеты рабочего стола (читай: KDE-меню и подобное), заинтересованы в уведомлениях о таких изменениях. Таким образом, kded4 мониторит некоторые директории на предмет добавления/изменения/удаления .desktop-файлов.

В OpenBSD этот процесс был очень неэффективен. А причина в том, что kded4 внутри использует KDirWatch, который по умолчанию использует inotify в Linux и QFSWatch в других операционных системах. Он также поддерживает FAM, но я уже пытался его использовать, но результаты меня не удовлетворили. Я уже начал было думать о реализации бэкэнда на базе kqueue(2), и тут я вспомнил, что kirby@ работает над libinofity. Это ведь то, что нужно - inotify API на базе kqueue. Так что я написал FindInotify.cmake который должен работать и в Linux и вне Linux, сделал несколько #ifdef в коде, пересобрал kdelibs ... и вот оно! Теперь kded4 проверяет файлы при запуске, и дальше живёт абсолютно не напрягаясь!

Ещё после этого akonadi_maildir_resource перестал жрать ресурсы: похоже, он страдал той же проблемой. Две проблемы по цене одной! Покупайте наши libinotify! *

> * все пользователи KDirWatch теперь едят намного больше файловых дескрипторов (до нескольких тысяч - по сути, по дескриптору на каждый отслеживаемый каталог и файл). На Linux эта проблема не так заметна, так как там обычно банально не стоит никаких лимитов, или они задраны очень высоко.

Кроме того, за время этого хакафона я успел закончить:

+ новую утилиту portbump(1), в связке с sqlports она позволяет сэкономить много времени на масштабных обновлениях.

+ добавил переменные TEST_ENV и ALL_TEST_ENV в bsd.port.mk: одного TEST_FLAGS было явно недостаточно, поскольку некоторые порты на CMake (читай: использующие Ninja) не понимают TEST_FLAGS вообще.

+ документацию для devel/cmake и x11/kde4. Не имею намерения документировать x11/kde, потому что его больше никто не собирается поддерживать, а кто поддерживает сейчас, и так всё знает.

К сожалению, не хватило времени на samba4. Есть хитрые проблемы, связанные с ld.so и компилятором, которые я надеялся исправить на хакафоне... но не всё сразу. Так или иначе, KDE был приоритетной задачей.

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

В заключение, я хочу (чувствую необходимость, обязан) сказать спасибо Мите Муженичу и гостевому дому "Табор" за организацию этого чудесного мероприятия. Это был мой первый хакафон, и было удивительно, сколько всего произошло за несколько дней. И Любляна - прекрасный город... Я надеюсь что кто-то, кто знает английский язык лучше меня, сможет ярче живоописать этот уютное место и его жителей. Всё было просто классно - спасибо, спасибо и еще раз спасибо!

= Отзывы по самому мероприятию

> Ааа, завидую! В хорошем смысле! А Тео там тоже был?
Естественно. Это был ежегодный большой "всеобщий" хакатон.

> Можно ли поподробнее описать как проходят хакафоны?
> 1) как туда попасть?
Получить приглашение. :)

> 2) много ли людей участвует
Когда как. Статистика на http://www.openbsd.org/hackathons.html

> 3) где все спят
Обычно устроитель хакатона обеспечивает (сам или при финансовой помощи OpenBSD Foundation) места в каком-нибудь общежитии (ныне их хостелами кличут). Кто не хочет - селится сам в какой-нибудь гостинице.

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

> 5) сколько дней всё это длится
Когда как, обычно - около недели. Опять же, статистику можно собрать по ссылке выше.

= Theo de Raadt: безопасность и конфигурашность

Лидер проекта OpenBSD Тео де Раадт (deraadt@) пишет об g2k14:

Две недели перед Словенией я работал с Бобом Беком (Bob Beck) над заменяющими getentropy(2) функциями. В начале хакафона были внесены последние штрихи, нужные Бобу и Бренту Куку (Brent Cook) для дальнейшей работы.

Затем пришло время разбираться с очередной проблемой безопасности, о которой мне стало известно. К нашему прискорбию выяснилось, что исчерпание ограничения на количество одновременно открытых файлов может быть использовано для сокрытия уведомлений о переполнении стека от соответствующего механизма защиты. Защитнику стека требуется файловый дескриптор, чтобы сообщить об ошибке. Те, кто уже читал заметки об arc4random и getentropy, уже в курсе данной ситуации.(*)

> * Речь об исчерпании лимита на количество открытых файлов, которое в случае использования syslog(3) могло привести к тому, что сообщения об ошибках не попадут в системный журнал. Дело в том, что syslog(3) оперировал через открытие файла /dev/log, которое, в случае исчерпания оных лимитов, становится невозможным.

Проблема стала очевидной из-за технологии "песочницы", используемой ныне в SSH-утилитах, которая закрыла syslog_r() доступ к socket(), connect(), sendto()... всем системным вызовам, необходимым для сообщения об ошибке, но потенциально опасным - что как раз "песочница" и должна предотвращать.

Задача была решена путём создания нового системного вызова, который может отправить сообщение в syslogd без использования лишних ресурсов; syslog_r(3) теперь использует его напрямую: один щелчок, выстрел, поехали дальше. Данный системный вызов имеет более чем узкое применение, и поэтому был назван sendsyslog(2), и при этом он также подходит для специфических условий, таких как использование "песочницы".

В этом плане, ситуация схожа с тем, как getentropy(2) была вынесена из sysctl. Забавно, как одно приводит к другому.

В качестве передышки от пространства ядра, пришла пора для небольшой уборки и, надеюсь, улучшения в /etc, sysmerge и инструментах установки. Роберт и Антуан помогли спланировать практически пустой /etc/rc, эта работа ещё не окончена, но приведёт к улучшенному sysmerge. На других фронтах я работал с теми, кто занимается установочными скриптами и DRM, чтобы в нашем следующем релизе можно было автоматически по возможности прикрывать прямой доступ к оборудованию для X на поддерживаемых в этом плане чипсетах

> по сути это современные Intel - прим. ред.

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

= Матье Херб (matthieu@) о развитии X

Матье "бешеный француз" Херб (matthieu@), поддерживающий Xenocara, хочет поделиться своими впечатлениями о g2k14:

Я так и ничего и не сделал по моим остальным проектам (мультитач, DHCPv6), поскольку был отвлечен на твики наборов для X, по просьбе нескольких других участников. Результатом долгой дискуссии стало лишь добавление ucpp в базовую систему (после недолго пребывания в /usr/xenocara/app/xrdb-cpp) под именем /usr/libexec/auxcpp.

Причина в том, что xdrb (часть необходимой многим портам xbase) требует препроцессор C для запуска. Но, начиная с gcc4, /usr/bin/cpp находится в наборе comp, потому что это просто часть gcc. Получается, набор xbase требует установленного набора comp.

Есть два типа людей, которых это раздражает: люди с маленькими дисками, и люди с фобией "компилятор на сервере? непостижимо!" (хотя эти люди правы: http://www.welivesecurity.com/2014/03/18/operation-windigo-the-vivisection-of-a-large-linux-server-side-credential-stealing-malware-campaign/)

Так что теперь auxcpp стал частью набора base. Прощай, зависимость xbase от comp. Текущее состояние наборов X Window сохранится и в 5.6. Помимо этого, я обновил несколько компонентов xenocara. Репозиторий xenocara практически готов для 5.6.

Но всё равно, мне понравился хакафон. Спасибо Мите и его команде за организацию, и всем благодетелям за пожертвования!
Марк Эспи (espie@) о портах и пакетах

Ещё один отчёт с завершившегося недавно хакатона g2k14, от Марка Эспи:

В Словении я был в первый раз. За несколько часов - к счастью, удалось избежать гроз - осмотрел столицу. Очень интересное соединение: никогда не видел подобной смеси из восточной Европы, южной Европы и туристических мест.

Что до самого хакафона, я прибыл на него вскоре после крупного изменения (переупорядоченные пакеты), и был практически готов исправлять проблемы в случае необходимости. К моему удивлению, всё работало как часы... Если я что-то и сломал, то никто этого не заметил; зато всем должно понравиться ускорение процесса обновления пакетов.

После продолжительного подпинывания, Вадим Жуков таки закоммитил digikam-kde4 (порт Digikam для KDE4, - В.Ж.). Я провёл креш-сборку и информировал его о найденных проблемах, которые он быстро исправил.

Я работал над немногочисленными мелочами... столкнулся же со многими, и исправил чуть меньше после обычного слома дерева портов, связанного с нашими бесстрашными ломателями исходников (в основном негативные последствия были из-за libressl, endian.h и обновления mesa).

Я работал над новым механизмом, обеспечивающим лучшую целостность репозиториев пакетов. Пакет "quirks" теперь сообщает о дате своего подписывания (которая в свою очередь проверяется, поэтому подделать её не получится), благодаря чему теперь можно знать, что срез пакетов достаточно свеж, или же что кто-то помешал ему попасть на ваше любимое зеркало...

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

Всё это лишь уведомляет пользователя, так как срезы пакетов требуют определённого времени для расползания по зеркалам... У нас есть идеи, как побороть ЭТУ проблему, но после обсуждения с вовлечёнными сторонами было принято решение отложить внедрение до следующего релиза в связи с необходимостью чересчур серьёзных переделок.

Я также пытался решить проблему с необходимостью наличия исходных текстовой базовой ОС для сборки пакета "pkglocatedb". К моему большому удивлению, Тео согласился, и мы зашли даже дальше, чем изначально планировалось, благодаря чему снапшоты теперь будут включать locate-базы как для базовой системы, так И для иксов.

Я провёл немало времени, играя с этими базами: теперь и pkg_check использует их, позволяя проверить систему полностью. По-прежнему слишком много лишних сообщений, но прогресс налицо.

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

Ещё я должен упомянуть о отдельном cpp (препроцессоре C - прим. ред.) для calendar и xrdb, теперь иксы не потребуют для своей работы установки базового набора comp.

Как обычно, встречаться лицом к лицу собратьев по разработке очень помогло некоторым проектам продвинуться вперёд.

Спасибо OpenBSD Foundation за спонсирование этого мероприятия, а также Мите за место, всё было организовано настолько хорошо, что нам даже не приходилось о чём-то задумываться.

= Мартин Пеликан (pelikan@) об ext4 и о файловых системах

Мартин Пеликан пишет в отчёте с g2k14:

Мой первоначальный план состоял в том, чтобы в нашей base мог собираться libcpp из LLVM, дав нам поддержку C++11. После того, как я читал о последних дополнениях локалей POSIX, другие разработчики прояснили, что будет нужно больше вариантов версии библиотеки, чтобы не сломать порты. После того, как первый diff был готов, я поднял сборку базовой системы, чтобы проверить, сломается ли она. И затем моя жизнь изменилась...

За несколько дней до хакатона я решил поставить на свой ноутбук Linux, Windows и OpenBSD рядом друг за другом. Одна из связанных с локалями статей была оставлена на разделе с Linux, и я хотел открыть её в Австрии, которая просто полна тоннелей без интернета. Наше ядро не любит ext4; будучи слишком ленивым для перезагрузки, я решил "пришло то самое время", чтобы выяснить, почему.

Неудивительно. ext4 использует extents, которые в былые времена не поддерживались. Беглый взгляд на FreeBSD показал, что у них уже есть read-only поддержка, которая стала более-менее функциональной на моём ядре OpenBSD в среду вечером. Нет индексов каталога HTree, нет 64-битных номеров блоков, нет журналов или снапшотов, или защиты от мульти-монтирования. Но я мог наконец прочитать PDF без перезагрузки и затем даже скопировать файл, больше, чем 4 ГБ, или открыть каталог с 50000 подкаталогов в нём. Никогда прежде не видя исходников файловой системы, я смог сделать рабочий порт за несколько часов? Жизнь прекрасна!

Теперь вопрос состоял в том, как это интегрировать. Разработчики OpenBSD не любят гигантские diffы, и на это есть серьёзное основание. После починки формата inode и добавления новых флагов, Тед указал на древнее правило "кто последний полез в эту часть - тот теперь её мейнтейнер". Было очевидно, что я должен был получить больше знаний, читая тексты дизайна и код других систем, прежде чем смогу делать ценные и правильные коммиты. Устаревшие остатки, похожие на трудно (и неправильно) закодированный лимит размеров файлов были первыми. Части кода понимались с трудом, но FreeBSD удалось их разделить, так или иначе. После этого наши пути кода выглядели достаточно похожими, и поддержка ext4 ворвалась в нашу жизнь.

Несмотря на то, что цель хакафона была в написании кода, я должен был буквально учиться работать с подсистемой, которую я видел до этого только однажды и мельком (c FUSE). Поскольку всё это уже было во FreeBSD, и заставить это работать было так просто, это было очень хорошее место, чтобы научиться писать код файловой системы самому. В течение следующих дней я начал с того, что написал парсинг и чтение журнала, а закончил тем, что сидел и сознательно ломал мою файловую систему, и смотрел, как она будет восстанавливаться и что для этого нужно ещё сделать. В общем, это верный путь, и цель - сделать поддержку записи.

Это было бы невозможно без Филипа Гуентэра, который рассмотрел мои diff-ы после того, как я продолжал отвлекать его от более важных дел. Тед, Тео, Кен и Боб дали мне много ценного и объяснили, как вещи должны работать. Стефан Сперлинг дал мне доступ к одной из его машин sparc64 и с удовольствием держал дерево актуальным, таким образом, мои поломки были относительно небольшими и незначительными. Обсуждения о сетевом стеке помогли сузить наш фокус в направлении и по поводу других решений. Митя занимался организацией встречи, чтобы дела шли так, как им и должно идти. Каждый всё сделал отлично, спасибо!

Будем надеяться, что этот энтузиазм насчёт файловой системы сохранится, потому что теперь я должен переключиться назад на GSoC (Google Summer of Code) - в задачи, которые мне знакомы. Надеюсь, что файловая система, сломанная у меня сейчас, когда-нибудь поможет починить вашу...

> эти слова оказались пророческими, и после этого мы с Мартином вели обширную переписку о поломках.

= Jonathan Gray об улучшении драйверов для X

Джонатан Грэй (jsg@) сообщил нам, почему он провёл 30 часов в автобусе, чтобы быть с нами:

Одной из первых вещей, которые я сделал в g2k14, был импорт обновления Mesa, над которым я теперь работал в течении некоторого времени. Я следил за git репозиторием Mesa несколько месяцев и отправлял патчи, чтобы уменьшить всю ту боль, причинённую локальным diffом, который не был таким большим, но приходилось тратить много времени на обновления.

Незадолго до хакафона я столкнулся с проблемой, заставляя Mesa собираться на i386, как бы то ни было. Это происходит только в том куске кода, который с помощью sysctl проверяет, включен ли SSE. Это, как оказалось, было проблемой, потому что sysctl.h включает в себя utm_extern.h, который, в свою очередь, берёт заголовочные файлы ядра, включая mutex.h, это означает, что mtx_init() из Mesa конфликтует с mtx_init() ядра. Тео потратил немного времени, вычищая sysctl и заголовки utm, таким образом, они не будут включать где-либо много определений. Эту работу уже закоммитили, когда я пришёл на хакафон.

На следующий день я сделал немного сборок xenocara, чтобы найти любые дополнительные проблемы. Проблема, которую я нашёл, происходила из-за симлинка в файл дистрибутива Mesa, который игнорировался cvs import, что починили ссылками из Make-файлов в другую директорию. Я также проверил дважды работоспособность сборок Mesa со включенным LLVM, который всё ещё работал через программный рендеринг LLVMpipe.

Другая проблема со сборками Mesa заключалась в том, что sys.mk, автоматически включаемый через make в Makefile, добавляет CFLAGS к CXXFLAGS. Поскольку Mesa является смесью C, которая включает и код C99, с C, g ругался на то, что к нему попадал C-специфичный флаг -std=c99. diff, который исправляет это в системных Make-файлах и некоторых других местах, будет потом отправлен по почте.

Я также проконтролировал, чтобы дерево исходников собиралось с OPENSSL_NO_DEPRECATED, который в большинстве случаев добавлял инклюды, которые больше автоматически не брались из других инклюдов. Для некоторых вещей, таких как nginx, которые поддерживаются извне, есть патчи, которые уже доступны в следующих версиях. Мы их потом возьмём, но пока что ещё не так уж и стоит патчить нашу версию, когда есть другие места в дереве (libkeynote/bind/sendmail и. т.д.), где требуется сделать изменения. Я также вскользь посмотрел на компиляцию с OPENSSL_NO_SSL_INTERN, но после того, как увидел, что dc и gzsig поломались во время сборки, я решил посмотреть в другие места.

Я посмотрел на обновление некоторых патчей clang, которые искал пару лет, и коммитил некоторые вещи, касающиеся этого.

Xorg теперь может работать без необходимости предоставлять прямой доступ из пространства пользователя к памяти ядра/устройства, если режим modesetting (KMS) ядра поддерживается. Проблема ещё заставляет некоторые устройства требовать доступ к этому окну памяти, чтобы запустился Xorg. Установщик задаёт вопрос, если находит vga устройство, которое включает окно через machdep.allowaperture в sysctl. После обсуждения с парой людей на g2k14 я написал небольшие скрипты, чтобы забирать номера поставщика/продукта PCI из драйверов radeondrm и inteldrm, которые используются pci вложением в vga драйвер, чтобы написать строчку в dmesg, если это окно памяти требуется для запуска Xorg. Установщик был изменён halex@ и rpe@, чтобы проверить эту строку и теперь будет только спрашивать, нужно ли человеку запускать X11 (который включает окно), если оно найдено. Вопрос X11 не будет задан теперь на многих серверах, так как есть чёрный список серверных графических устройств в коде, решающем, нужен ли aperture.

Проблема, с которой я столкнулся теперь несколько раз, - это недостаток заголовка cpuid.h, который идёт из gcc >= 4.3 и clang, чтобы обеспечить интерфейс, запрашивающий cpuid на i386 и amd64. Mesa из git теперь требует cpuid.h для сборки. Intel-овский драйвер Xorg отключает код, включённый в решение, если SSE присутствует, и делает решения, основанные на размерах кэша, если его нет. И, по крайней мере, некоторые порты (т.е. OpenXCOM), кажется, теперь его ждут. Таким образом, я взял cpuid.h из clang, чтобы включить его в нашу версию GCC 4.2.1. Сначала я изменил определения SSE_4_1 и SSE_4_2 на SSE_41 и SSE42, чтобы соответствовать именам, используемым в GCC, но, вероятно, они оба будут включены, когда это закоммитят.

Большое спасибо OpenBSD Foundation и Мите за g2k14!

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


«мой первый порт в OpenBSD» - вольный перевод : 07/05/22 19:11 : oldpc to All [#] [reply]

> вольный перевод статьи My first OpenBSD port
> http://homing-on-code.blogspot.de/2015/01/my-first-openbsd-port.html

Мой первый порт для OpenBSD...

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

OpenBSD впервые завёлся у меня 7 декабря 2014 года. Первые нескколько недель я посвятил тому, чтобы изучить эту систему, и тут мне очень помогла книжка «Michael W. Lucas - Absolute OpenBSD, 2nd edition». Также я подписался на рассылки, чтобы быть в курсе того, как живёт и разрабатывается эта система. Достаточно освоившись, я пересел на -CURRENT (в основном - в бинарном виде, через snapshot).

С самых первых дней я хотел портировать Otter для OpenBSD. Мне нравится этот браузер, он выглядит многообещающе, он активно развивается, и меня впечатлило его развитие за год. Но был один маленький недостаток - отсутствие порта Qt5 в OpenBSD. Я проверял 'pkg_add -Q qt5' время от времени, и в один прекрасный день вместо традиционного «опять ты?» система смирилась, и отдала мне qt5. Тогда я и занялся портированием.

Начал я с прощупывания разработчиков Otter на предмет наличия отсутствия OpenBSD-шников - чтобы не дублировать работу, если кто уже начал портирование.

Узнав, что я такой один, что я сделал первый шаг на эту опасную дорогу, и попытался это собрать. Сейчас я понимаю, что это немного неверное решение, так инфраструктура портов OpenBSD берёт на себя множество проблем, которые я решал вручную. Некоторые из проблем были связаны с самим портом Qt, поэтому 25 декабря я составил список проблем и пошёл разбираться в ports@. К тому времени у меня была рабочая, но падучая версия.

http://marc.info/?t=141953939000001&r=1&w=2

По мотивам моих выступлений «что сказал компилятор» было исправлено небезопасное использование API - это хорошо, это порядок. Но, что ещё лучше, - была обнаружена ошибка в самом Qt5, которая ломала загрузку GTK из-за захардкоженых версий библиотек. Знающие люди потом доложили, что баг зарепорчен в апстрим - тот самый баг, который привёл к двум самым ужасающим крахам в моей отдельно взятой сборке (падало на изменении размера окна или выдвижении подоконника)

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

> The compiler warnings I reported resulted in a review of the Qt5 port for insecure API usage - which is nice. Though the biggest win at that point was detecting a bug in Qt5 that failed to load GTK due to hard coded library versions. Later down in the thread another user pointed out a bug he reported upstream to Qt developers - that bug was responsible for the two biggest crashes I hit with Otter (crash on modal dialog/window resize).

Моя слабенькая музейная i386 отказалась компилировать весь qt5, сославшись на более важные дела на этот год-два, поэтому я дождался, когда в снапшотах появится бинарная qt5 со всеми исправленными проблемами.

Вообще, в OpenBSD есть чёбые вещи для новичков портового фронта. Porters Handbook охватывает почти всё, что нужно для успешного портирования. Я прочёл его весь, и прошёл указанные там примеры по шагам.

Также неоценимую помощь мне оказали ответы на мой первый e-mail - мне не пришлось изобретать всё с нуля, люди поделились готовыми модулями портовой инфраструктуры для gcc4, CMake и Qt - это сэкономило много времени на первоначальную подготовку, освоение и погружение.

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

Меня всё ещё напрягало, что программа падала у zhuk@ с его настройками [и у меня - прим. бур.], но в упор не хотела падать у меня. Но вместе с этим я был горд, что мой порт, сложенный из опер и слов....

# cvs -q up -Pd
P Makefile
U otter-browser/Makefile
U otter-browser/distinfo
U otter-browser/patches/patch-CMakeLists_txt
U otter-browser/pkg/DESCR
U otter-browser/pkg/PLIST

Что дальше? Это очевидно. Маинтайнить, чекать репорты, фиксить баги, и радоваться тому, как хорошо в стране OpenBSD-шной жить. Также я начал засматриваться на другие порты, которые пролетают в рассылке.

http://marc.info/?t=142189020100001&r=1&w=2

Почему я решил этим заняться? Ну, во-первых - мне нужен Otter, и теперь он у меня есть. Во-вторых - держи ноги в тепле, а порты - в актуальности, и тогда жизнь сразу наладится. Люди любят свежие и интересные порты, они помогают им нежно окунуться в мир OpenBSD, а не бултыхаться в разбегу в воду с каких-то древних соооружений.

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

Я буду продолжать дело портирования. Будучи большим вентилятором (по другим вариантам перевода - фанатом) Fallout, я хочу добавить http://falltergeist.org и уже начал заниматься этим.

http://marc.info/?t=142118894500001&r=1&w=2

Porting. Porting never changes...

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0


Перенос текстов с архивного сайта OpenBSD : 07/05/22 19:09 : oldpc to All [#] [reply]

Для сохранения статей для потомков (а то их спрашивают) решил перенести и актуализировать тексты со старого сайта. Для этого даже добавил режим картинок в эхоконференцию. Но много картинок не будет, где-то для замены картинок будет "режим рассказчика", где я буду рассказывать, что было изображено на картинке. Это сэкономит трафик. Итак, поехали:

Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0