Данный мануал является частью проекта
Sysscripts; тут я рассказываю об особенностях платформыOpenSuse, а так же сборкиQt
Данный документ сфокусирован на процессе портирования некоторого ПО со старого
Slackware 7.0, или иной операционной системы конца 90-х годов, на OpenSUSE
последней версии.
Официальный Telegramm канал поддержки OpenSUSE.
- OpenSuse
- Оглавление
- Вступление
- Версионность
- Физические ресурсы
- Установка системы
- Графические среды
- Вопрос производительности
- Swap
- Настройка сети
- Переменные среды
- Настройки
- Дополнительные пакеты
- Zypper
- Сертификаты
- Git
- GitQlient
- Cmake
- Железо
- Virtual Box
- Матрица
- Snap
- Некоторые заметки
- Термины и сокращения
- Полезные ссылки
В давние времена первые релизы предка OpenSUSE разрабатывалась компанией
Gesellschaft für Software- und System-Entwicklung, от сюда аббревиатура
S.u.S.E.
У OpenSUSE есть два основных дистрибутива:
Leap- что означает - РывокTumbleweed- что означает Перекатиполе
Tumbleweed во многом, это alfa версия Leap, однако вместе с этим именно
Tumbleweed считается той самой, для разработчиков. Основное отличие это
подход к версионности. У Leap это стандартная LTS (Long time support)
модель версий. Шаблон версий Leap: major.minor. Tumbleweed основан на
непрерывном распространении релизов (Rolling release). Фактически CI/CD
от компьютера разработчика дестрибутива до компьютера пользователя. Шаблон
версий Tumbleweed: yyyymmdd.
Стоит предположить, что в качестве среды для станции разработчика мы будем
использовать Tumbleweed, а как среду рабочей АПК
(аппаратно програмного комплекса) или сервера - LEAP.
При установке Tumbleweed вы то и дело будете сталкиваться с некоторыми
неполадками. Часто обновление системы командой sudo zypper update решает
эти проблемы. Обновляйте систему каждый день.
В данном документе переменные среды приводятся без знака $, к примеру:
CV_REF.
В процессе работы вам придётся столкнуться с переводом между десятичными и двоичными размерностями объёма памяти. Ниже я привожу таблицу, которая поможет вам с переводом между единицами:
Десятичная приставка
| Название | Символ | Степень |
|---|---|---|
| Килобайт | kB |
|
| Мегабайт | Mb |
|
| Гигабайт | Gb |
|
| Терабайт | Tb |
|
| Петабайт | Pb |
|
| Эксабайт | Eb |
|
| Зеттабайт | Zb |
|
| Йотабайт | Yb |
Каждая следующая размерность в
$1000$ раз больше предыдущей, к примеру$6$ Gbэто$6000$ Mb
Двоичная приставка
| Название | Символ | Степень |
|---|---|---|
| Килобайт | KiB |
|
| Мегабайт | Mib |
|
| Гигабайт | Gib |
|
| Терабайт | Tib |
|
| Петабайт | Pib |
|
| Эксабайт | Eib |
|
| Зеттабайт | Zib |
|
| Йотабайт | Yib |
Каждая следующая размерность в
$1024$ раза больше предыдущей, к примеру$6$ Gibэто$6144$ Mib
Далее фиксации последних рабочих состояний операционной системы:
| Среда | OpenSUSE |
Версия |
|---|---|---|
| Разработка | Tumbleweed |
20240304 |
| АПК | Leap |
15.5 |
На базовом этапе мы располагаем следующими физическими ресурсами:
Tumbleweed |
Leap |
|
|---|---|---|
Motherboard |
MSI H110M PRO-VD |
ChWay Sherman J 5.0 |
RAM |
3.7 Gi |
1.7 Gb |
Disk |
400 Gb |
26 Gb |
CPU |
Intell Pentium G4600 |
Intel Celeron J1900 |
Frequency |
3.60GHz |
1.99GHz |
Cores |
4 |
4 |
Для разворачивания сервера или среды рабочей станции, вам необходимо
установить и настроить ОС OpenSuse Tumbleweed или OpenSuse Leap. Вы можете
скачать образ с официального сайта. Offline образ качается резвычайно
долго, следовательно используйте Online способ установки.
Tumbleweedпоследнее время крайне не стабилен, используйтеLeap LiveUSB, аналогично сказанному ниже, пролистнице до последней странице, и скачайте образopenSUSE-Leap-15.6-XFCE-Live-x86_64-Media.iso
Вам очень пригодится Tumbleweed LiveUSB для решения разных проблем, к примеру
увеличение пространства для Swap в случае, если при установке оно не было
достаточно выделено. Разумеется вы сможете использовать Tumbleweed LiveUSB
для работы с любой усановкой: и собственно говоря Tumbleweed и Leap и иной
операционной системой.
На странице образов Tumbleweed на последних страницах найдите и
скачайте файл openSUSE-Tumbleweed-XFCE-Live-x86_64-Current.iso. Запишите
его на Flash USB устройство знакомой нам командой dd. При установке
дополнительного ПО, к примеру Gparted, пакеты остануться на флешке. Вам не
придётся качать нужные архивы каждый раз.
Допустим вы уже имеете достаточно старую систему расположенную на существующем
диске. Вы залили её ранее обычным dd с помощью Clonezilla, как указано
тут. Пусть это будет предок OpenSUSE - Slackware
7.0. Допустим дисковое пространство представлено следующим образом:
/dev/sda1 |
500 Mb |
/dev/sda2 |
30 Gb |
Вы до сих пор пользуетесь старой системой, и хотели бы расширить её дисковое
пространство. Это лучше сделать сейчас, так как после разметки диска под
OpenSUSE это будет опасно и трудоёмко.
Вы загрузились с Tumbleweed LiveUSB, запустили Gparted, но система не даёт
вам изменить размер тома /dev/sda. Вы могли бы создать том /dev/sda3
немного дальше, но какие то силы заставляют вас всё же загрузить старый
дистрибутив, и заняться древней магией вручную. Итак, ручное увеличение
пространства диска:
- Загрузите
Slackware - Изучаем топологию дисков с помощью
lsblk/dev/sda1занимает всего500 MbSlackwareрасполагается на/dev/sda2на двух логических томах- На первом ОС
- На втором файл подкачки (
Swap)
- Иных разделов у нас пока нет
- Изучаем типы разделов с помощью команды
parted /dev/sda- Печатаем таблицу разделов с помощью команды
print - Убеждаемся что оба раздела основные (
primary)
- Печатаем таблицу разделов с помощью команды
- Запускаем
fdisk /dev/sda -u=cylindersв режиме геометрии цилиндров- Печатаем таблицу разделов с помощью команды
print - Наблюдаем, что на
/dev/sda1располагается загрузочная область - Создаём новый раздел расчитывая цилиндры
- Сейчас для
Slackwareимеется30Gb - Расширяем пространство для
Slackwareещё на30Gb - Вычисляем ближайшее число используя степени двойки
2^36 = 68719476736- Расширяем физический диск, логический расширим при необходимости
- Ищем сколько в цилиндре байт из заголовка команды
(предположительно
8225280байт) - Последний цилиндр предположительно
60801-ый - Считаем делением сколько необходимо цилиндров, округляем вверх
68719476736 / 8225280 ~ 8355- Прибавляем количество цилиндров
/dev/sda1(предположительно64) 8355 + 64 = 8418- Выполняем следующую последовательность команд
np3- Вводим расчитанный размер
- Оставляем номер последнего цилиндра
- Не указанное оставляем по умолчанию нажимая
enter
- Сейчас для
- Печатаем таблицу разделов с помощью команды
- Расширяем раздел для
Slackware- Проводим сухой запуск команды
growpart -N /dev/sda 2 - Запускаем команду в реальном режиме
growpart /dev/sda 2
- Проводим сухой запуск команды
- Перегружаем систему, изучаем новое разделение томов вышеупомянутыми командами
- Далее
OpenSUSEпересоздаст/dev/sda3и создаст/dev/sda4для своегоswap-а.
TODO: В будущем подумать как использовать общий
swap, так же как вариант симметрично разместитьOpenSUSEна/dev/sda3наLVM
Залейте образ на usb носитель командой dd. Много информации по настройке
системы вы можете найти данном документе. При установке образа, вы сталкнётесь
с графической средой, следовательно вам понадобится мышка.
Если используя интерфейс
HDMIпри установке сервера вы сталкнётесь с серъёзными проблемами в виде прыгающего экрана, то вам стоит использовать переключиться наVGA
При выборе програмного обеспечения, в перспективе Patterns выберите
XFCE Desktop Environment.
При настройке файла подкачки (Swap) установите его в два раза больше объёма
ОЗУ. Настройте файл подкачки в виде раздела диска или логического тома.
При создании пользователя, выберите учётную запись, пусть к примеру это будет
ilmarinen. Выберите пароль. Оставьте галочку
присвоения того же пароля системну пользователю.
При настройке установки, слева, в секции Installation Overview под заголовком
Installation, установите следующие опции, как показано ниже на картинке:
- Firewall will be enabled
- SSH service will be enabled
- SSH port will be open
Учтите, что сетевой образ Tumbleweed имеет срок годности. Когда последняя
версия сетевого установщика достаточно разрйдётся с образом в сети, вы получите
сообщение вроде:
You don't have appropriate image for such mode, download it and restart
В данном случае единственное решение это перезалить образ на флешку.
Во время определения сети, вы можете сталкнуться с проблемой блокировки
Firewall-а, если последний имеется в вашей сети, даже если вы разблокировали
Firewall для IP привязанного к данному хосту, так как во время установки
система берёт новый IP по DHCP. В данном случае, вы можете использовать
один из двух методов:
- Установить настройки сети свободного разблокированного адреса
- Запустить комманду разблокировки
Для настройки сети, вернитесь на главный экран перейдите в меню с названием
типа Expert Mode, там Network config, откажитесь оставлять настроенные
данные, откажитесь от DHCP. Далее действуйте следующим образом:
- Найдите свободный разблокированный
IPадресс - Откройте настроки вашей сети с доступного компьюера
- Расчитайте маску подсети (количество бит) (1)
- Пропингуйте шлюз (
router) - Пропингуйте
DNS Google-а:8.8.8.8
(1) К примеру для 255.255.255.254, это будет ipaddress/23
Перейдите к настройки сети, заполняя необходимую информацию, строку на каждом окне:
xx.yy.zz.ww/nn
xx.yy.zz.1
8.8.8.8
пустое
Для разблокировки firewall-а запустите команду передавая пользователя и
пароль:
curl --max-time 1 -k -i -s -u <USER>:<PASSWORD> \
$(curl --max-time 1 -k -i -s http://yandex.ru | \
grep Location | \
awk '{print $2}' | \
tr -d '[:space:]')Вашему вниманию представлен скрипт разблокировки,
который вы можете установить по пути PATH.
Когда система попросит перезагрузится, нажмите да и как экран погаснет,
выньте usb диск. Первый ваш логин совершите в стандартную графическую
оболочку Plasma.
При первом логине, сконфигурируйте sudo для пользователя ilmarinen с
помощью комманды sudo visudo добавив необходимую запись, как указанно ниже.
Для команды sudo используйте тот же пароль что для пользовател ilmarinen.
В процессе работы с OpenSUSE вам, без сомнения, придётся столкнуться с
различными графическими оболочками. Иначе, системами рабочей среды
(Desktop managers). Ниже подробно рассказывается о
том, при каких обстоятельствах нам следует использовать какую среду.
Давным давно было придумано устройство Телетайп. Из Википедии:
Электромеханическая печатная машина, используемая для передачи между двумя абонентами текстовых сообщений по простейшему электрическому каналу (обычно по паре проводов)
В оригинале устройство называлось Teletype и обозначалось аббревиатурой
TTY. В какой то момент архитекторы ЭВМ решили использовать эту технологию
для взаимодействия с вычислительными машинами. В ранних Unix-ах дескрипторы
этих устройств были представлены файлами /dev/ttyN. Со временем печатная
машина превратилась в монитор, клавиатура стала отдельным устройством, но общее
имя терминала вывода остолось тем же, гордым TTY. Часть мониторов начали
работать в графическом режиме, где главными стали окна и мышка, но ядро ОС всё
так же работало с ними через те же /dev/ttyN. Разумеется не всегда был смысл
подключать несколько физических устройств к одному вычислительному блоку. TTY
стал виртуальным, и на один и тот же монитор можно было выводить разные
терминалы. В большинстве своём переключение происходило комбинацией
Alt + Ctrl + FnN. Так и по сей день. Первый TTY открывается комбинацией
Alt + Ctrl + F1, второй Alt + Ctrl + F2 и так далее. На OpenSUSE
графический терминал именно второй.
Далее я буду использовать приближённую терминологию, с которой часть авторов могут не согласиться
На графический терминал информация подаётся из Дисплейного сервера, в нашем случае это один из следующих:
XorgWayland
Дисплейный сервер взаимодействует с Оконным менеджером с одной стороны, и Графическим интерфейсом с другой. Оконный менеджер ответственен за аутентификацию пользователя, а Графический интерфейс (так же называемый Графической оболочкой) уже непосредственно создаёт рабочее окружение. В нашем случае Графическая оболочка может быть одна из следующих:
PlasmaнаXorgPlasmaнаWaylandXfceLxdeIceWM
При этом Оконный менеджер может быть:
- Консольный
LightDMSDDMXDM
В части своей Оконные менеджеры идут из одного набора с
Графическим интерфейсом. К примеру LightDM соотносится с Lxde, а SDDM с
Plasma.
Во всей этой архитектуре есть так же ещё одна составляющая. Каркас на котором написаны Графический интерфейс и Пользовательские приложения. Каркасы у нас имеются в основном следующие:
QtGTK+
Смену оболочки мы совершаем через утилиту yast2 alternatives. Выберите
необходимое значение опции default-xsession.desktop. За Оконный менеджер
отвечает опция default-displaymanager, но Оконный менеджер в общем менять
не имеет смысла. yast2 имеет так же и графическую среду, но консольная может
оказаться проще:
sudo yast2 alternativesВажно заметить, что
Xrdpподключается так же как и Оконный менеджер к определённому Графическому интерфейсу, фактически выполняя одну из функций Оконного менеджера
При изменении Графической оболочки, если система зависнет, возможно вам
придётся открыть консольный терминал (Ctrk + Alt + F1) И перегрузить
соответствующий сервис:
sudo systemctl restart display-managerДля отладки обратите внимание на лог Xorg-а: /var/log/Xorg.0.log. В случае
Wayland поток логов скорее всего будет проходить по иному маршруту.
TODO: узнать куда пишет
Wayland
Графическая среда OpenSUSE по умолчанию. На самом деле очень красивая,
относительно лёгкая, правда в Tumbleweed иногда непредсказуемая, так как
представляет из себя последнюю, ещё не полностью тестированную версию.
В основном всё взаимодействие с графической средой происходит через подсистему
qdbus. К примеру: завершение данной пользовательской сессии:
qdbus org.kde.Shutdown /Shutdown logoutДобавьте русскую раскладку через сситемные настройки, которые вы найдёте в меню Пуск -> Input Devices -> Keyboard -> Layouts -> Add.
Обратите внимание на Alternative shortcut: Meta + Alt + K.
В свете того, что мы работаем через Xrdp, достаточно сложно настроить
привычный нам ALt + Shift, даже Alt + Space не работает - он
перехватывается системой. Проще всего или превыкнуть именно к
Meta + Alt + K, где Meta это клавиша Win, или настроить
Win + Space.
Данный раздел актуален в случае если вы устанавливаете версию
Leap
Отключите в OS систему автообновлений, иначе придётся столкнуться с
назойливой и трудно решаемой проблемой:
PackageKit blockiert zypper. Dies passiert, wenn Sie ein Aktualisierungsmodul oder eine andere Softwareverwaltungsanwendung benutzen, die PackageKit verwendet.
PackageKit beenden? [ja/nein] (nein): j
PackageKit läuft noch (wahrscheinlich aktiv).
Для отключения, нужно удалить пакет plasma5-pk-updates, сначала найдём его
точную версию:
rpm -qa | grep -i plasma5-pk-updates
plasma5-pk-updates-lang-0.3.2-bp153.2.2.1.noarch
plasma5-pk-updates-0.3.2-bp153.2.2.1.x86_64Затем удалим их поочерёдно учитывая конкретные версии:
sudo rpm -e plasma5-pk-updates-lang
sudo rpm -e plasma5-pk-updatesЕсли процесс запущен и не даёт воспользоваться командой zypper, найдите и
удалите его с помощью ps -A и kill -9.
Так же полезно отключить сервис индексации файлов:
balooctl suspend
balooctl disable
balooctl purgeЕсли сервис не отключается, то его можно ликвидировать по старинке:
ps -ef | greps baloo
sudo kill -9 <pid>Всегда следите за состоянием системы и старайтесь избегать программ, которые её
неоправданно грузят. Вы можете мониторить производительность, с помощью
программы: htop.
Мышинная среда Xfce полностью настраивается мышкой. Имеет французские корни.
Легче чем Plasma, от туда же ловит настройки раскладки клавиатуры.
IceWM это самая лёгкая но и самая бедная и труднонастраиваемая среда. Её мы
будем использовать на первой фазе конфигурации. В
основном все настройки этой среды происходят через файлы.
Буфер обмена при подключении через Xrdp может иногда давать сбой. Для
копирования в программе Konsole-е, к примеру, в общий буфер, вы можете
использовать комбинацию Ctrl + Shift + c.
Все настройки IceWM читает в основном из двух папок, но нас интересует лишь
второй вариант - папка в нашем домашнем каталоге:
/etc/icewm$HOME/.icewm
Основные настройки располагаются в файле preferences. Ознакомьтесь с
документацией данного файла. Итак, вот основные файлы настройки IceWM:
preferences- общие настройкиkeys- горячие клавишиmenu- меню системы Пускstartup- команды автозапуска
Настройте меню системы Пуск удалив от туда всё лишнее, что тормозит
систему. Добавьте файл menu со следующим содержимым:
prog "Konsole" konsole konsole
prog Firefox firefox firefox
menuprog SUSE folder xdg_menu --format icewmДобавьте горячую комбинацию клавиш Alt + Ctrl + t для запуска Konsole.
Добавьте файл keys со следующим содержанием:
key "Alt+Ctrl+t" konsoleЕсли ваш системный блок имеет несколько графических карт, то возможно, IceWM
разделит монитор, и при первом входе в систему, вы увидете пустой экран без
возможности использовать како либо окно. Изучите комбинации клавиш по
умолчанию. Нажмите правую клавишу мыши, запустите xterm. Если вы не увидете
окно терминала, то нажмите несколько раз комбинации: Ctrl+Alt+LeftArrow /
Ctrl+Alt+RightArrow. Если вы ни чего не увидете то нажмите снова правую
клавишу мышки, и в меню Windows найдите окошко теринала, нажмите на него в
самомо меню. Далее не нажимая ни чего иногокроме как следующую комбинацию,
нажмите Alt+F7. Тепреь начните двигать мышку, и окно само перепрыгнет в
видимую область. Нажмите левую клавишу мышки, и окно зафиксируется. Вы можете
увеличить его во весь экран.
Наберите следующую команду:
xrandr -qВы получите вывод на подобии:
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 ...
VGA-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected 1920x1080+1920+0 ...
Если монитор подключён по HDMI (а узнать об этом можно по форме контакта
подключения), то строка eDP-1 connected подсказывает нам о проблеме. Отключите
дополнительный монитор и установите HDMI-1 основным:
xrandr --output eDP-1 --off
xrandr --output HDMI-1 --primaryТеперь вы должны увидеть меню IceWM в нижней части экрана. Зафиксируйте
решение. Создайте файл $HOME/.icewm/startup, запишите туда shebang и данную
комманду, затем выдайте ему права:
chmod u+x $HOME/.icewm/startup
Перегрузите систему. После перегрузки у вас должен подключится только один
монитор. В идеале монитор eDP-1 нужно отключить на уровне udev-а.
А вот вом рассказ о первом путешествии моей мышки с трану зазеркалья IceWM:
I moved the mouse to the left the boundary of The Visible World. The mouse touched the border. She squeaked in surprise! There wasn't border! Suddenly she jumped into the void, to the Darkness. Мy mouse felt the Emptiness there, very much Emptiness. She started to move forward and forward. I called her back.
In very border of two worlds - "The World of the living" and "Ice Wims Dale" - "The World of the dead" my mouse, as a cat, catch the hem of the dress of Firefox!
"Eh!" - shouted the Fox! - "What do you do?!".
The mouse squeaked happily! She took the Fox from the Death to the Life!
После настройки необходимых файлов, перегрузите среду следующей командой:
icewm --restart --replaceПулностью удалить IceWM из памяти вы можете следующей командой. В данном
случае вы уже вернётесь в Оконный менеджер:
pkill icewmОпределите комбинацию Alt + Shift для переключения раскладки клавиатуры.
Добавьте файл startup со следующим содержимым:
TODO: разобраться с выводом индикатора раскладки на панель
setxkbmap \
-layout "us,ru(winkeys)" \
-model "pc105" \
-option "grp:alt_shift_toggle"Как известно предполагается, что мы будем использовать компьютеры с
ограниченным объёмом памяти. Если для продового режима (Leap) выделенных,
ресурсов нам вполне достаточно, то для режима разработки (Tumbleweed) мы
ощущаем серьёзный дифицит. На данный момент мы располагаем следующими
горлышками бутылки в сравнении со среднестатистической станцией разработки:
3.7 Gi RAM,3.6 GHz x 4
На пост выше конечно не ответили, но он очень помог собраться с мыслями. Итак!
Учитывая, что у нас с одной стороны недостаток ресурсов относительно нашего
расточительного времени, а с другой собственно говоря очень расточительное ПО,
я решила определить три фазы в которых смогут быть наши станции разработки
относительно объёма ОЗУ и набора програмного обеспечения. Средняя фаза
предполагает объём памяти между базовой и полной. Для продового режима, как
сказанно выше, указанных объёмов вполне достаточно:
Объём ОЗУ |
Window Manager | Среда разработки | |
|---|---|---|---|
| Базовая | 4 Gi |
IceWM |
vim(1)/QtDesiner |
| Средняя | Xfce |
QDevelop/QtDesiner |
|
| Полоная | 8 Gi |
Plasma |
QtCreator |
(1) vim + Termdebug + CtrlK
Файл подкачки (swap) рекомендуется делать в полтора два раза больше объёма
ОЗУ. Файл подкачки сыграет большую роль при сборки мегалитических проектов
типа llvm, так как последнее время на плюсах всё больше используют шаблоны,
что экспоненционально увеличивает расход ресурсов. Если система при
установке создала недостаточно большой файл подкачки, увеличим его.
Если последний является именно файлом, то вам будет достаточно следующих действий описанных тут и тут:
- Команда
swapoff - Команда
dd - Команда
mkswap - Редактирование
/etc/fstab - Команда
swapon, как
Если же при установке система создала отдельный том недостаточного
размера, то вам придётся немного потрудиться. Заранее ознакомтесь с возможной
проблемой вызванной подсистемой quota. Gparted, который мы привлечём
к помощи скорее всего не сможет изменить размер диска с активной квотой.
Итак, допустим /dev/sda1 занимает у нас 500 Mb и хранит:
загрузочный сектор, initrd и grub. /dev/sda2 пусть будет занят
какой-нибудь дополнительной системой, к примеру Slackware 7.0. Тогда при
установке OpenSUSE мы получим /dev/sda3 занятый системой, и /dev/sda4
отведённый под swap. По умолчанию, swap создасться в размере 2 Gib.
Напомним, что каждая размерность системы
Xбибайтов равняется$1024$ единицам предыдущей размерности; так 1Gib(Гибибайт) равен$1024$ -ёмMib(Мебибайтам), смотрите Меры объёма памяти
Отключите квоту в основной системе, предварительно проверив её:
btrfs quota rescan -w /
btrfs quota disable /Загрузитесь с Tumbleweed LiveUSB, и установите Gparted:
Используйте
Leap LiveUSB,Tumbleweedстал крайне не стабилен
sudo zypper install gpartedОткройте последний через меню пуск, уменьшите объём /dev/sda3 оставив
после него свободное пространство размером Mib. Нажмите на
галочку сверху. Подтвердите осознание опасности действия. Остальные
манипуляции с томами, от греха подальше, мы выполним уже в режиме работы
основной ОС.
После успешного уменьшения тома, выключите компьютер, выньте Flash USB,
загрузитесь в основную ОС. Включите квоту, и ещё раз проверьте её:
btrfs quota enable /
btrfs quota rescan -w /Отключите swap:
sudo swapoff -aПересойздайте /dev/sda4:
sudo fdisk /dev/sdapдля ознакомленияdдля удаления- Выберите 4-ый том
nдля создания- Тип -
primary - Остальное подтвердите по умолчанию
- Тип -
- Ещё раз
pдля ознакомления lдля вывода типов томаtдля присвоения типаLinux swap / Solaris82типLinux swap / Solaris
- Ещё раз
pдля ознакомления wдля записиqдля выхода
Отформатируйте том под swap:
sudo mkswap /dev/sda4Подмените UUID в соответствющей строке в файле /etc/fstab. Сначала
примерьтесь, затем добавьте опцию -i (in-place) к команде sed:
sed "s/$(cat ~/fstab |\
grep swap |\
awk -F" " '{print $1}' |\
awk -F= '{print $2}')/$(ls -l /dev/disk/by-uuid |\
grep sda4 |\
awk -F" " '{print $9}')/g" /etc/fstab
# Если всё хорошо, вызовете "sed -i ..."Включите swap:
sudo swapon -aУбедитесь, что swap работает:
free -hВыберите имя хоста, к примеру kalevala. В главе имя хоста
описано как произвести необходимую настройку.
Настройте в файле /etc/sysconfig/network параметр HOSTNAME в формате
<HOSTNAME>.domain.name, к примеру kalevala.domain.central.
Проверьте свой IP с помощью комманды ifconfig, к примеру он:
192.168.1.70.
Убедитесь, что IP будет постоянным. Иногда, в случаях когда мы не можем
сконфигурировать DHCP, а в случае виртуальной машины мы используем сетевой
мост, то единственный способ, это установиnь IP постоянным через системные
файлы. На CentOS к примеру это /etc/sysconfig/network-scripts/ifcfg-ethX.
Сделайте те же настройки, что для Slackware учитывая, что имя хоста в файле
/etc/hostname, а IP мы находим командой: ip a.
Очень полезно отказаться от Вселенского Протокола ipv6, убрав нужную галочку
в пунктах меню YaST. Остальная конфигурация сети не потдерживается через
YaST, пусть так и остаётся.
Настраиваем firewall:
sudo firewall-cmd --zone=public --add-port=1521/tcp
sudo firewall-cmd --permanent --zone=public --add-port=1521/tcp
sudo firewall-cmd --list-allОпция --permanent обеспечивает сохранность конфигурации между перезагрузками.
Для того, что бы опция приминалась сразу, нужен вызов без опции --permanent.
Далее проверяем, что порт слушается с помощью команды Schutzstaffel ss:
ss -ln | grep 1521
tcp LISTEN 0 128 0.0.0.0:1521 0.0.0.0:*Для вывода процесса, добавьте -p.
При трудностях с доступом к Oracle-у на виртуальной машине с хоста, учитывая
отсутствие прав на физических хостах и отсутствие возможности установить
telnet, в целях отладки, можно воспользоваться следующим скриптом python-а.
Сам же python вы можете установить в рамках пользователя без прав
администратора. Предположим, что IP виртуальной машины с OpenSUSE -
192.168.1.112:
from telnetlib import Telnet
Telnet('192.168.1.112', 1521).interact()Добавляем в /etc/hosts строку в формате
<IP> <HOSTNAME>.domain.name <HOSTNAME>, к примеру:
192.168.1.113 kalevala.domain.name kalevala
Если вы запускаете виртуальную машину, всегда выберайте тип сети: сетевой мост
Определите какой интерфейс у вас активен, командой:
ip a
Допустим, это eth0. Перегрузите его:
ifdown eth0
ifup eth0
По умолчанию настройка сети должна выдаваться по DHCP. Вот содержимое файла
/etc/sysconfig/network/ifcfg-eth0 по умолчанию:
BOOTPROTO='dhcp'
STARTMODE='auto'
ZONE=public
Вот содержимое папки /etc/sysconfig/network по умолчанию:
-rw-r--r-- 1 root root 9.5K Aug 29 18:01 config
-rw-r--r-- 1 root root 16K Aug 29 18:01 dhcp
-rw------- 1 root root 46 Aug 29 18:04 ifcfg-eth0
-rw-r--r-- 1 root root 34 Aug 29 12:48 ifcfg-eth0.bak
-rw-r--r-- 1 root root 34 Aug 29 11:09 ifcfg--h
-rw------- 1 root root 147 May 9 13:08 ifcfg-lo
-rw-r--r-- 1 root root 22K Aug 1 2022 ifcfg.template
drwxr-xr-x 1 root root 0 Mar 15 2022 if-down.d
drwxr-xr-x 1 root root 0 Mar 15 2022 if-up.d
drwx------ 1 root root 0 Mar 15 2022 providers
drwxr-xr-x 1 root root 38 Aug 29 17:50 scripts
В случае настройки сервера, сконфигурируйте сеть заполнив следующие файлы,
следующими данными, используя команду vim. Предварительно найдите свободный
IP адрес. Пусть к примеру у вас следующая настрйока сети:
IP |
13.14.11.143 |
MASK |
255.255.255.0 |
NETWORK |
13.14.11.0 |
GATEWAY |
13.14.11.1 |
NAMESERVER |
8.8.8.8 |
Отредактируйте файл /etc/sysconfig/network/ifcfg-eth0:
BOOTPROTO='static'
BROADCAST='13.14.11.255'
IPADDR='13.14.11.143'
NETMASK='255.255.255.0'
NETWORK='13.14.11.0'
STARTMODE='auto'
USERCONTROL='no'
ZONE=public
Создайте файл /etc/sysconfig/network/ifroute-eth0:
13.14.11.0 13.14.11.1 255.255.255.0 eth0
default 13.14.11.1 0.0.0.0 eth0
Проверьте содержимое файла /etc/resolv.conf:
nameserver 8.8.8.8
Для разблокировки firewall-а, если такой имеется в вашей сети, используйте
скрипт cisco.sh, который далее будет размещён по пути
$PATH в вашей системе. При вызове скрипта передайте имя пользователя.
Если же по какой то причине скрипт cisco.sh вам не подходит, рекомендуется
использовать elinks. Это так же позволит ваи разблокировать Firewall-а,
если такой имеется в вашей сети. На самом деле elinks достаточно полезная
утилита, и её в общем стоит установить.
Добавьте в файл /etc/sysctl.conf следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Перезагрузите системные опции:
sysctl -pОпределите полезные для работы переменные и alias-ы в среде терминала. Для
этого примените (source) скрипт env.sh через $HOME/.bashrc:
# Добавьте строку в $HOME/.bashrc
. $HOME/repos/sysscripts/opensuse/env.shЭкспорт переменных с помощью команды
exportважен, иначе данную переменную не будет видно в вызывающем скрипте
Разработка на OpenSuse будет происходить не с пользователем root и не с
аппликативным пользователем, с которым будет запускаться приложение в рабочем
режиме. Разработка будет происходить с обычными пользователями, состоящими в
группе users.
Для того, что бы вам было удебнее использовать команду sudo, добавьте
следующую запись в соответствующий системный файл запустив редактор с помощью:
sudo visudoПредположим, что имя вашего пользователя: olga, тогда его часть Defaults
будет выглядеть так:
Defaults targetpw
ALL ALL=(ALL) ALL
olga ALL=(ALL) NOPASSWD:ALL
Установите имя вашего хоста. Вы можете добавить имя домена к имени хоста:
sudo hostnamectl set-hostname <HOSTNAME>Не забудьте затем прописать запись в /etc/hosts, к примеру:
192.168.1.30 kalevala kalevala.ru
При подключении к разным хостам по SSH у вас может быть следующая ошибка:
Unable to negotiate with 10.11.8.73 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
Создайте файл ~/.ssh/config и для каждого хоста с подобной ошибкой добавьте
блок на подобии:
Host 10.11.12.13
User root
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
Создайте файл $HOME/.vimrc с содержанием из главы
в мануале vimide.
Убедитесь что вы располагаете публичным ключём вашего приватного, и если нет, создайте его:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pubИнтегриуйте ключ в файл authorized_keys на хосте OpenSUSE:
ssh-copy-id -i ~/.ssh/id_rsa ilmarinen@kalevalaУстановите пакет findutils-locate:
sudo zypper install findutils-locateСоздайте базу данных очень полезной утилиты locate:
sudo updatedbПример использования утилиты. Допустим вам надо найти расположение файла
icewm/menu в системе:
locate icewm/menuТут привидён список необходимых приложений доступных из базовых репозиториев
OpenSUSE. Установите следующий список полезных и необходимых приложений,
используя команду sudo zypper install <PACKAGE>:
git- система контроля версийgcc-c++- компиляторC++make- система сборкиcmake- система конфигурации сборкиruby- компиляторrubyhtop- монитор производительностиelinks- консольный клиент интернетаneofetch- консолидатор информации о системеfindutils-locate- командаlocate
Удалите следующие приложения используя команду sudo zypper remove <PACKAGE>
в виду их расточительности или иных причин:
kalendarac- календарь; занимает много места вОЗУ
Скачайте данный репозиторий по пути $HOME/repos/sysscripts, далее мы пропишем
папку scripts по пути $PATH.
Для сборки стандартных приложений нам стоит подготовить специальные папки.
TODO: Устанавливать приложения по стандартным путям типа
/usr/local/bin
sudo mkdir -p $APPSПромежуточные - объектные файлы, будем располагать в папках $HOME/builds:
cd $BUILDS
mkdir $APPSУстанавливаем Xrdp:
sudo zypper refresh
sudo zypper install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp
sudo systemctl status xrdp
sudo firewall-cmd --permanent --zone=public --add-service=ms-wbt
sudo firewall-cmd --reloadДалее необходимо (обязательно) разлогинеться из основной сессии, иначе на
сессии Xrdp будет пустое окно. Так же перед запуском команды mstsc заранее
переключите расскладку клавиатуры на английский. В окне Xrdp у вас это
сделать не получится. При подключении по Xrdp используйте исключительно опцию
Xorg.
Если при установке OpenSUSE вы не настроили установку SSH сервера, то
выполните следующие действия:
sudo zypper refresh
sudo zypper install --no-confirm openssh
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reloadЕсли при установке OpenSUSE вы не настроили установку графической среды
Xfce сервера, то установите последний одним из следующих способой:
- Вызвав графическую оболочку
yast - Через команду терминала
При первом способе, вам нужно настроить перспективу Patterns подобно той,
что вы наблюдали во время установки, там выбрать
Xfce.
Во втором случае запустите команду:
sudo zypper install patterns-xfce-xfceZypper, это система контроля пакетов. Работает она поверх экосистемы rpm,
по сути расширяя её. Как любая система контроля пакетов, zypper работает с
удалёнными репозиториями. Возможно вам предётся добавлять какие то из них, но
более вероятно, что вам придётся ещё и удалять их. Вот некоторые полезные
команды zypper:
# Обновить статус системы управления пакетами
sudo zypper refresh
# Если начинают появлятся красные строки с ошибками, значит некоторые
# репозитории нужно удалить. Выводим список репозиториев, должна признать,
# разработчики постарались на славу, и таблица поистине эстетична и
# информативна
zypper repos
# Берём номера битых репозиториев, и удаляем их за раз. Важно! Если удалить по
# одному, то надо не забыть каждый раз вновь посмотреть список, так как каждый
# раз репозитории будут переиндексироваться
sudo zypper removerepo 1 2 ...
# Проверяем что всё вернулось к стабильности
sudo zypper refresh
# Выводим список установленных пакетов
zypper packages --installed-only
# Поиск пакета по имени содержимого файла:
zypper se --provides --match-substrings libssoTODO: проверить актуальность; сейчас вроде официальные репозитории
OpenSUSEснова заработали
После атаки Мордора на Рохан zypper ref стал очень долгим, по понятным
причинам. Но к счастью те немногие эльфы, что сохранились в Мордоре создали и
сохранили локальные репозитории OpenSuse.
Базовый url у них: https://mirror.yandex.ru/opensuse.
Вам в любом случае будет необходимо заменить оригинальный url репозиториев на
yandex-овский.
Переходим в папку: /etc/zypp/repos.d, и пользуемся волшебной командой:
sudo vim *.
В каждом файле меняем http[s]://download.opensuse.org на
https://mirror.yandex.ru/opensuse в свойствах baseurl и gpgkey. Переходим
на следующий файл внутренней командой: :wn, в конце обычное :wq.
Затем обновляем репозитории: sudo zypper ref.
В яндексе пока нет
security/SELinux/SLE_15_SP3/, поэтому ставим простоsecurity/SELinux/SLE_15/
Как сказано выше, rpm это ядро экосистемы контроля версий в OpenSUSE. Вот
некоторые полезные команды rpm:
# Распаковка файлов и скриптов архива rpm
rpm2cpio oracle-xe-11.2.0-1.0.x86_64.rpm | cpio -idmv
rpm -qp --scripts oracle-xe-11.2.0-1.0.x86_64.rpm > scripts.sh
# Просмотр содержимого пакета
rpm -ql libopenssl-3-develДля отладки системных библиотек, типа libgcc_s.so.1, вам необходимы символы
отладки, так как большинство из них собраны без оных.
Сертификаты должны распологаться в папке /opt/certs. Создаём новый сертификат:
cd /opt/certs
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ilmarinen.key \
-x509 -days 365 -out ilmarinen.crt \
-addext "subjectAltName = DNS:$HOSTNAME" \
-subj "/C=RU/ST=Vologda/L=Vologda/O=Kalevala/OU=NIT/CN=$HOSTNAME"Проверьте, что поле subjectAltName проставилось:
openssl x509 -in ilmarinen.crt -text | lessУстановим сертификаты в системе:
sudo cp /opt/certspos.crt /usr/share/pki/trust/anchors
sudo update-ca-certificatesПри изменениях в сертификате, для применения в
Docker registry, самregistryнужно удалить и пересоздать, так же пересоздать секреты; оDocker registryнаписано ниже
Для VisualStudio Code всё же придётся установить сертификаты напрямую в
keystore Java-ы.
Для этого воспользуйтесь скриптом certs/register-jdk.sh в данном проекте:
Запуск
register-jdk.sh -h
-h вывод справки
register-jdk.sh <CERT_FLDR> <JAVA_VER> <COMMAND> <CERTIFICATE> [<DRY_RUN>]
<CERT_FLDR> папка с сертификатами
<JAVA_VER> версия JDK: 8 или 11
<COMMAND> комманда: register или unregister
<CERTIFICATE> имя сертификатат без расширения
<DRY_RUN> сухая прогонка: d
Примечание:
1. Экспортируйте переменную среды JDK_PATH для регистрации
сертификатов в пользовательском JDK.
2. Используйте сухую прогонку для проедворительной проверки
параметров
Пример
export JDK_PATH=/opt/jdk-17
register-jdk.sh certs 11 register valkovesi
Сам же VSCode требует JDK 17 для своей работы с кодом Java-ы.
Более того, он возможно будет пытаться запускает проект на этом JDK.
Укажите для IDE пути к JDK в следующем блоке:
{
"java.configuration.runtimes": [
{
"name": "JavaSE-11",
"path": "/usr/lib64/jvm/java-11-openjdk-11/",
},
{
"name": "JavaSE-17",
"path": "/home/olga/java/jdk-17.0.4.1+1",
"default": true
}
]
}Разместите этот блок на любом уровне конфигурации, к примеру в файле:
~/.config/Code/User/settings.json
Стоит настроить следующие настройки Git-а на рабочей виртуалке OpenSuse.
Впишите свои ФИО и git_id:
git config --global init.defaultBranch main
git config --global --edit
# Содержимое файла настроки
1 # This is Git's per-user configuration file.
2 [user]
3 # Please adapt and uncomment the following lines:
4 name = <Фамилия Имя Отчество> (<gitId>)
5 email = gitId@Kalevala.org
6 [init]
7 defaultBranch = mainGit клиент идеально интегрированный в нашу экосистему.
Предполагается, что будем собирать HEAD ветки master, так как проект
достаточно стабилен, во всяком случае коммит 58b87fbd встал на
Tumbleweed 20240304.
TODO: возможно всё же зафиксировать версию
Подготовте сборку и соберите GitQlient
# Переходим в папку с репозиториями
cd $REPOS
# Клонируем GitQlient
git clone https://github.com/francescmm/GitQlient.git && cd GitQlient
# Подготавливаем проект
qmake GitQlient.proДля сборки приложения с символами отладки запустите qmake с дополнительной
опцией:
qmake CONFIG+=debug GitQlient.proЗапустите сборку и установку:
make
sudo make installМодули Qt в плане Cmake соответствуют следующему шаблону:
<prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/ (U)
Но главное это помнить о понятии qtbase. Если Qt собран с опцией
-developer-build, то это папка qtbase в корне установки Qt. Корень
установки Qt у нас всегда /opt/qt[4|5]. Если сборка была без этой опции,
то qtbase это просто папка корня Qt.
В CMake нужно установить переменную CMAKE_PREFIX_PATH в qtbase:
set(CMAKE_PREFIX_PATH /opt/qt5)Команды CMake для сборки проекта через командную строку находятся в файле
build.gradle:
cmake -S . -B build -DCMAKE_BUILD_TYPE:STRING=<debug|release>
cmake --build build -j $(nproc)Вам очевидно придётся много работать с устройствами, в том числе с usb.
Установите libusb:
zypper se --provides --match-substrings "libusb"
zypper in libusb-1_0-0Добавьте права для разработки на необходимые устройства.
Выведите список устройств: lsusb.
Добавьте правило для необходимых устройств. Создайте файл
/etc/udev/rules.d/[nn]-[project].rules, где nn номер правила, а project
имя вашего проекта. Вот шаблон:
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0001", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", MODE="0666"
Перезагрузите udev:
sudo udevadm control --reload-rules && sudo udevadm triggerЕсли вы запускаетет SLES на виртуальной машине Oracle Virtual Box
то при переходе на версию Virtual Box 7.0 вы можете столкнуться с
трудностями при налаживании связи между гостевой ОС и виртуальной
машиной. Что произошло в моём случае.
Было:
Virtual Box 5.2.30 r130521 (Qt5.6.2)openSUSE Leap 15.3состояние начала 2022 года
Я обновила Virtual Box на 7.0.2 r154219 (Qt5.15.2), в результате
слетела VBox GuestAdditions, симптомы проявлялись в разном порядке
по нарастающей:
- Зкран стал маленьким
- Сеть пропала
- Виртуальный оптический привод не работет
- При перегрузке система зависала
Для установки Гостевых Дополнений необходимо примонтировать
диск через меню "Устройства" в панели VM. Честно, до сих пор
монтирование не очень стабильно работает, но на тот момент
при ручном монтирвоании выходила ошибка:
unknown filesystem type 'iso9660'
sudo depmod -a
sudo mount /dev/sr0 /mnt
ls -l /mntДалее оказалось, что гостевые дополнения нужно собрать, делается это коммандой:
sudo /run/media/olga/VBox_GAs_7.0.2/VBoxLinuxAdditions.runПри сборке система ищет заголовки ядра, для этого нам необходим
пакет kernel-source. После его установки, мы можем увидеть его
содержание: rpm -ql kernel-source | head. На момент обновления,
последняя версия ядра для openSUSE Leap 15.3 была:
5.3.18-150300.59.98, следовательно, исходники хранятся в папке:
/usr/src/linux-5.3.18-150300.59.98.
Команда uname -r давала нам знать, что версия сейчас ниже, а
соответсвенно и VBoxLinuxAdditions.run гласил о том, что не может
найти заголовки, несмотря на установленный пакет. Решение: обновить
ядро. При этом решено было обновить не только ядро, а всю ОС на
состояние конца 2022 года коммандой zypper update. Обновление было
громоздким, и ком вышеприведённых проблем продолжил нарастать, пока всё
же не удалось собрать гостевые дополнения.
После сборки всегда нужно перегружать компьютер. Так же пришлось несколько раз повторить итерацию:
sudo zypper update
sudo reboot
sudo ./VBoxLinuxAdditions.run
sudo rebootПока система более менее не пришла к стабильному состоянию.
При разработке на виртуальной машине, вам необходимо будет монтировать папки, настроенные как общие. Для этого в первую очередь настройте общую папку в конфигурации виртуальной машины.
Для активации share-а рекомендуется использовать alias: share в ~/.bashrc:
shareПри необходимости автомонитования на OpenSuse это реализуется с помощью
systemd.
Так же, вы можете сделать эти настройки постоянными, внеся нужные изменения в
файл /etc/fstab. Но это не рекомендуется, так как образ не будет полностью
портабельным на реальный хост.
Вот строка для файла /etc/fstab в случае, к примеру, с CentOS.
share /mnt/share vboxsf defaults 0 0
И на последок. Хотите незабываемых ощущений? Почувствовать себя Нео и
прикоснуться к вечному? У вас ни когда не было желания в живую пообщаться по
одной из первых сетей быстрых сообщений? У меня для вас хорошие новости!
Сумрачный немецкий гений создавший OpenSUSE внедрил в его экосистему сеть
IRC! Более того, IRC каналы живы, и активно используются для поддержки
пользователей.
IRC была основана в 1988-ом году. И конечно она имеет ряд недостатков по
сравнению с нынешними системами обмена сообщений. Эти недостатки во многом были
устранены в более новом воплощении тех же идей, в протоколе Matrix. Но
Matrix это нечто большее чем новый IRC, Matrix это воплощение SOA, где
появляется возможность связать разные системы сообщений между собой. Таким
образом пользователи Telegramm-а и Skype-а могут переписываться между
собой.
Возвращаясь к IRC. Вот список живых каналов. Установите, если ещё не
установлен клиент IRC - irssi, запустите его и подключитесь к необходимому
каналу:
irssi
set nick <Nickname>
/server list
/connect liberachat
Настройте irssi на автоподключение с вашим ником:
/server add -auto -network liberachat irc.libera.chat
/network add -nick <Nickname> liberachat
/channel add -auto #openSUSE liberachat
TODO: почему то не работает автоподключение к каналу, проверить; настроить автоустановку
window hidelevel
Стоит так же установить подавление избыточных для нас системных оповещений о подключении и отключении пользователей:
/window hidelevel +joins +parts +quits
Вот пример моего вопроса в поддержку:
Если вдруг вам понадобиться
snap, то вот инструкция его установки
Часть приложений не доступны из родных репозиториев OpenSUSE, или же
обладают некоторыми недостатками, из за которых их использование затруднено.
Для этого существует кросплатформенный репозиторий snap. При добавлении
репозитория укажите нужный раздел вместо <DIST>. Для Tumbleweed это будет
openSUSE_Tumbleweed. Выберите нужный раздел из списка. Установите и
настройте систему управления пакетами snap:
sudo zypper addrepo --refresh \
https://download.opensuse.org/repositories/system:/snappy/<DIST> \
snappy
sudo zypper --gpg-auto-import-keys refresh
sudo zypper dup --from snappy
sudo zypper install snapd
sudo systemctl enable --now snapd
sudo systemctl enable --now snapd.apparmorВозможно у вас останется
warningпо поводу разрешение на запускsnapd.apparmor
Полезные команды терминала:
# Скачивание файла с curl
curl -O https://domain.org/file
# Поиск в файловой системе по шаблону имени файла
find /some/where -name "startsWith*"
# Сортировать фалы по кол-ву строк
find . -type f -name "*.cpp" -exec wc -l {} + | sort -rn
# Команда с помощью которой можно проверить тип системы инициализации
ps -s1 | awk '{print $4}'| grep -Ev "CMD"
# Поиск в `yum` по частичному имени пакета (CentOS)
yum search <partial-name>
# Взять `fingerprint` с ключа:
ssh-keygen -E md5 -lf id_rsa
# Скопировать файл в контейнер Docker-а
docker copy <file> <container_id>:/path
# Поиск по содержимому файлов
# TODO: дополнить комманду, добавить вариант Rnw
grep -ilR
# Монтаж папки с хоста в случае виртуалки
mount -t vboxsf share /mnt/share/
# Сборка образа CentOS
docker build -f DockerfileCentOS -t kalevala_centos .
# Сборка образа OpenSuse
docker build -f DockerfileOpenSuse -t kalevala_suse .Папки с unit-ами systemd в OpenSuse:
/etc/systemd/system//usr/lib/systemd/system
Qt debug и release:
The project can be built in release mode or debug mode, or both. If debug and release are both specified, the last one takes effect. If you specify the debug_and_release option to build both the debug and release versions of a project, the Makefile that qmake generates includes a rule that builds both versions
При работе с командой htop вы можете изменять направление сортировки введя
большую I (shift + i), но только при режиме списка
(не в режиме дерева).
SLES-SUSE Linux Enterprise ServerEOL-End Of LifeEPEL-Extra Packages for Enterprise Linux
- Команды imp/exp Oracle-а
- О сервисах в Linux
- SystemD
- Описание команды find_package Cmake
- Архивы с исходниками Qt 4
- Сборка Qt 5 и 6 с исходников
- Шпаргалка с командами Docker
- Мануал по чистке Docker-а
- Язык qmake
- Просто о make
- Gradle вступление
- Документация по Linx
- Cache в GitLab CI
- Документация по Qt4
Невалидируемая ссылка на используемую материнскую плату.





