OpenBSD забелешке
Страхиња РадићОво су запажања која сам начинио при првом инсталирању OpenBSD‑а „наживо“, на правом хардверу.
Решено
Ungoogled Chromium као део системских пакета!
Ungoogled Chromium се може директно инсталирати из пакета ungoogled‑chromium (текућа верзија у време писања је 117.0.5938.149):pkg_add ungoogled-chromium
Подршка за хардвер се разликује у односу на Линукс (језгро)
Пример — 1: Lenovo V15-ADA 82C7 лаптоп; 2: Lenovo IdeaPad 3-15IGL05 81WQ лаптоп
(✔ = подржан, ∼ = делимично подржан, ✘ = није подржан)Хардвер Линукс (Alpine) OpenBSD 1: WiFi Atheros QCA6174 ✔ ✘ 1: ATI Picasso Raven 2 ✔ 7.4: ∼; 7.5: ✔ 1: Тачпед ✔ ✔ 2: Тачпед ✔ ✘ Realtek 802.11 USB WiFi ✘ ✔ 2024-04-25: Видети напомену доле. Долеописани проблем је био присутан у OpenBSD‑у 7.4.
ATI Radeon графичка картица заглављује систем (веза 1; веза 2; веза 3 — улазни уређаји су неупотребљиви) када се покрене било која апликација која користи убрзани графички приказ, рецимо Ungoogled Chromium или чак Badwolf, па се мора приморати индиректни графички приказ подешавањем променљиве
LIBGL_ALWAYS_INDIRECT=1
или софтверски прекоLIBGL_ALWAYS_SOFTWARE=1
, што је неочекивано под OpenBSD‑ом. За то време, Realtek USB WiFi пријемник, који нисам успео да оспособим под Линуксом, ради без проблема у OpenBSD‑у. Он је привремено хардверско решење за недостатак подршке за Atheros WiFi пријемник у OpenBSD‑у.Додатак 2024-04-17: Уколико се користе
LIBGL_ALWAYS_*
променљиве, важно их је ограничити само на Ungoogled Chromium. Ако се оне поставе у системске иницијализационе датотеке, како би биле постављене за све програме, ниједан програм који користи OpenGL неће радити.Додатак 2024-04-25: Детаљнијим тестирањем, установио сам да је у издању 7.5 овај проблем изгледа решен, па се променљиве не морају постављати, бар не са картицом ATI Picasso Raven 2.
Ungoogled Chromium под OpenBSD‑ом користи системске позивеpledge
(2)/unveil
(2) сметају програму xdg-openpledge
(2)/unveil
(2), подешене да ограниче којим датотекама може да приступа. Верзија Ungoogled Chromium‑а из бинарног пакета може да приступа само директоријуму $HOME/Downloads, што индиректно утиче на xdg-open(1): ако се покуша отварање локалне HTML датотеке из било ког другог директоријума, рецимо:$ pwd /home/user/public_html $ xdg-open index.html
Ungoogled Chromium ће покушати (неуспешно) да отвори УРЛ https://index.html!
Доказ: ако се покуша:
$ cp index.html ~/Downloads/ $ cd ~/Downloads $ xdg-open index.html
ово ће исправно отворити file:///home/user/Downloads/index.html.
Додатак 2024-03-04: Параметри системском позиву
unveil
(2) у Ungoogled Chromium‑у се могу подесити у датотекама /etc/ungoogled-chromium/unveil.*/bin/sh мора бити ksh
Нажалост, OpenBSD је још један у низу Униксоликих ОС‑ова који се ослањају на не‑POSIX могућности љуске која је у /bin/sh. Ово значи да, рецимо, скрипт /etc/rc, који се покреће при подизању система, неће радити уколико је /bin/sh било која друга љуска (или симболички линк ка љусци) осим ksh‑а. Моја омиљена љуска mksh, тачније њена стриктно POSIX верзија lksh, отпадају.Ово, наравно, нема никакве везе са љуском која је одабрана за интерактивну у /etc/passwd(5), рецимо преко chsh(1). Она се комотно може поставити на било коју љуску додату у /etc/shells(5).
Подешавање локалитета у X‑у
OpenBSD користи xenodm(1) (осим ако се Xorg подеси да буде setuid), па се ~/.xinitrc мора заменити датотеком ~/.xsession. Такође се променљиве окружења у вези са локалитетом, које се обично постављају у разним ~/.profile датотекама, морају додатно подесити у ~/.xsession (или се одговарајућа датотека мора учитати из ње), да би се локалитет исправно подесио у X‑у.Autoconf/Automake;
Експлицитно постављање директоријума библиотека при компајлирању;
Портови не препознају библиотеке-
Autoconf и Automake у OpenBSD‑у излазе са грешком, у којој дају
инструкције да треба подесити
AUTOCONF_VERSION
илиAUTOMAKE_VERSION
- При компајлирању из изворног кода, програми који користе Gettext и још неке
(ГНУ‑ове?) библиотеке захтевају експлицитно подешавање include/library
директоријума преко променљивих окружења као што је
LDFLAGS=-L/usr/local/lib
, итд. -
При компајлирању неких портова, инсталиране библиотеке нису препознате.
Грешке су сличне овим:
Missing library for ICE>=0.0 Missing library for SM>=0.0 Missing library for X11>=0.0 Missing library for Xext>=0.0 Missing library for Xft>=0.0
итд, што упућује на неисправно подешени pkg-config(1).
Решење: У ~/.profile или сличну иницијализациону датотеку треба додати нешто слично овоме:
AUTOCONF_VERSION=2.71 AUTOMAKE_VERSION=1.16 PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/X11R6/lib/pkgconfig CPPFLAGS="-I/usr/include -I/usr/local/include -I/usr/X11R6/include" LDFLAGS="-L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib" export AUTOCONF_VERSION AUTOMAKE_VERSION PKG_CONFIG_PATH CPPFLAGS LDFLAGS
-
Autoconf и Automake у OpenBSD‑у излазе са грешком, у којој дају
инструкције да треба подесити
Неамеричке тастатуре у X‑у
Xkb: када се користи неамерички распоред тастатуре, на пример:setxkbmap -layout us,rs -option grp:alt_shift_toggle
други распоред се приказује као
terminate(ctrl_alt_bksp)
у програму slstatus, а може доћи и до крахирања. Решење је да се уклони укључивањеterminate(ctrl_alt_bksp)
у /usr/X11R6/share/X11/xkb/rules/base:--- base.orig Fri Feb 16 11:00:09 2024 +++ base Fri Feb 16 11:00:19 2024 @@ -972,7 +972,7 @@ tm2030USB-106 = +inet(media_nav_acpi_common) trust_slimline = +inet(media_nav_acpi_common) vsonku306 = +inet(microsoftprooem) - $inetkbds = +inet(%m)+terminate(ctrl_alt_bksp) + $inetkbds = +inet(%m) $maclaptop = +inet(apple)+level3(enter_switch) $applealu = +inet(apple) $macs = +inet(apple)
Недостатак је да се ово мора радити сваки пут када се та датотека измени при ажурирању система.
Низ програма изричито захтева ГНУ‑ов Make уместо да сарађује са POSIX make‑ом, па се мора куцатиgmake
уместоmake
‑аgmake
уместоmake
.Backspace у Vim‑у
При уносу текста у Vim‑у, тастер Backspace функционише уобичајено за унети текст, али не и за текст који је постојао пре уласка у режим за уметање?Решење: у датотеку ~/.vimrc треба додати
set backspace=2
За више детаља, в.
:help 'backspace'
.Програм pass
Програм pass не ради у OpenBSD‑у. Уместо тога, постоји програм gopass написан у Go‑у, или се може користити програм pass који је написао Роман Золотарјев, а који ради са SSH кључевима уместо GPG кључева (прочитати и упозорење на тој страници). Док не пронађем боље решење од програма написаног у Гугловом Go‑у, користићу gopass
(ln -sf gopass /usr/local/bin/pass
).
Наредбаgit branch -vv
не даје излаз →less -F
не радиgit branch -vv
не даје излаз у оквиру Git репозиторијума? Такође
git config
, итд.- .gitconfig који користим садржи
core.pager=/usr/bin/less -F -R
а када се опција
-F
зада наредби less из OpenBSD‑а, за разлику од less‑а из разних варијанти ГНУ-а са Линуксом, текст се уопште не приказује. Проблем сам решио изменомcore.pager
на
/usr/bin/less -F -R -c -X
.Ово је у ствари проблем са наредбом less и параметром
-F
. У OpenBSD‑у, еквивалент наредбеless -FR
је наредба
less -FRcX
- .gitconfig који користим садржи
Ctrl+O не ради у Neomutt‑у
Подразумевана подешавања терминала у OpenBSD‑у укључују доделу комбинације Ctrl+O могућностиdiscard
:$ stty -a | grep discard cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol =
; Извршавањем
$ stty discard undef
ова комбинација се „види“ у Neomutt‑у. Ова наредба се може додати у $HOME/.profile или сличну датотеку.
externalpipe 0.8.4 не ради са
Закрпа externalpipe програма st не мења аргументе системском позивуpledge
‑омpledge
, што узрокује да прослеђивање садржаја терминала спољашњем програму не функционише. Решење: st-externalpipe-0.8.5.diffcrontab(5) има разлика у односу на ГНУ са Линуксом
crond(8) у OpenBSD‑у, за разлику од истоименог програма у већини дистрибуција ГНУ‑а са Линуксом, чува традиционални обичај слања мејла са садржајем stdout‑а и stderr‑а програма које извршава. Уколико ово није пожељно због гомиле мејлова који стижу у /var/mail/[корисник], пре наредбе у датотеци crontab се може додати-n
. Ипак, уколико се наредба изврши неуспешно (има излазни код већи од нуле) мејл ће бити послат и поред опције-n
. Ту постоје две опције: или се у датотеци crontab поставиMAILTO=''
, што ће потпуно искључити слање мејлова (није идеално), или се може направити скрипт‑„омотач“, рецимо:#!/bin/sh неки_програм exit 0
file(1) не препознаје .doc/.docx
Neomutt додаје .doc прилоге мејловима са генеричким MIME типом application/octet-stream а .docx са типом application/zip. Ово проузрокује да се ти документи не могу отворити у програму у коме се иначе отварају (рецимо, LibreOffice‑у).Даљом истрагом установио сам да је ово последица тога да наредба file погрешно детектује .docx и .doc:
$ file dokument1.docx /home/user/dokument1.docx: Zip archive data, at least v2.0 to extract $ file -i dokument1.docx /home/user/dokument1.docx: application/zip $ file dokument2.doc /home/user/dokument2.doc: Microsoft Office Document $ file -i dokument2.doc /home/user/dokument2.doc: application/octet-stream
На крају, upstream програма file садржи датотеке magic/Magdir/msooxml и magic/Magdir/ole2compounddocs, које представљају део датотеке /etc/magic, а недостају (бар у том облику) у верзији тог програма у OpenBSD‑у.
За сада само могу да нагађам да је ово урађено због политике OpenBSD‑а у погледу безбедности, и да датотека msooxml вероватно садржи ставке које доводе до нарушавања безбедности или потенцијалног нежељеног извршавања кода.
Могућа решења:
- Притиснути Ctrl+T у Neomutt‑у (сваки пут) и изменити MIME тип на, рецимо, application/vnd.openxmlformats-officedocument.wordprocessingml.document или application/msword.
-
Додати дефиниције у ~/.magic, зато што OpenBSD верзија програма file
не подржава учитавање произвољне датотеке коришћењем параметра
-m
. Ово је непрактично јер дотична датотека мора садржати све magic инструкције у једној текстуалној датотеци. - Компајлирати верзију наредбе file из изворног кода, подесивши компајлирање тако да буду укључене датотеке msooxml и ole2compounddocs.
-
Привремено решење за Neomutt (слично за остале програме у којима се може
подесити програм за одређивање MIME типа): користити pmfile,
замену „преко штапа и канапа“ за file(1) у датотеци
~/.config/mutt/muttrc:
set mime_type_query_command = "/home/strajder/bin/pmfile -ib %s"
Обојени емоџији не функционишу
Обојени емоџији се уопште не приказују, чак ни у читачу веба (Badwolf). OpenBSD 7.4 није још имплементирао печ xft‑bgra, који је усвојен у главном репозиторијуму Xft‑а?- Емоџији се приказују у Ungoogled Chromium‑у.
- Сазнао сам да је ово последица тога што OpenBSD не укључује libpng да се не би оптерећивала основа система, а емоџији у боји захтевају libpng.
Привремено решење: Користити фонт Symbola (пакет symbola‑ttf).
Алтернативно, може се користити фонт Noto Emoji (црно‑бела верзија), само је тада потребно изменити /etc/fonts/conf.avail/60-generic.conf тако да емоџи фонтови у боји не буду преферирани. Такође, тада ће се и у Ungoogled Chromium‑у приказивати црно‑бели емоџији. Ако се користи фонт Symbola, Ungoogled Chromium успева да прикаже емоџије у боји, вероватно зато што користи сопствене методе за исцртавање текста.
Хардверско убрзање у Ungoogled Chromium‑у
Ungoogled Chromium подразумевано не активира хардверско убрзање, бар на Lenovo IdeaPad лаптопу на коме сам инсталирао OpenBSD.Решење: Отворити chrome://flags/, укуцати
gpu
у поље за претрагу, подеситиignore-gpu-blocklist
на Enabled, притиснути Relaunch.
Нерешено
Тачпед
Тачпед на Lenovo IdeaPad 3 (још?) не ради; привремено решење: прикључити миша.- Послао сам извештај о грешци, на који нисам добио одговор.