Обсуждение участника:Nir: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
мНет описания правки
Строка 1: Строка 1:
__TOC__
==Введение в Active Directory File System==
Настройки '''Active Directory''' представляются деревьями '''LDAP'''. Данный подход сложен для человеческого восприятия. Существует утилита называемая '''hadfs''', которая представляет дерево объектов '''Active Directory''' в виде структуры файлов и каталогов. Таким образом становится возможным редактировать настройки контроллера домена простыми способами - в текстовом редакторе, с помощью скриптов или с помощью специализированного ПО.
==Сборка и установка==
===Сборка из исходного кода===
Исходный код находится по адресу: https://github.com/altlinuxteam/hadfs
Данное ПО написано на языке программирования Haskell, потому вам понадобится компилятор (например, '''GHC''' - Glasgow Haskell Compiler) и, желательно, утилиты '''cabal-install''' или '''stack'''.
Для сборки в среде '''ALT Linux''' понадобятся следующие зависимости:
* '''git'''
* '''libfuse-devel'''
* '''libldap-devel'''
* '''libsasl2-devel'''
* '''libsasl2-plugin-gssapi'''
* '''ghc8.6.4'''
* '''ghc8.6.4-cabal-install'''
В репозитории с программой находятся детальные инструкции, но, в целом, решение проблемы для опытных специалистов можно свести к процедуре:
<source>
sudo apt-get install git libfuse-devel libldap-devel libsasl2-devel libsasl2-plugin-gssapi ghc8.6.4 ghc8.6.4-cabal-install
git clone https://github.com/altlinuxteam/hadfs.git
cd hadfs
git submodule update --init --recursive
cabal update
cabal new-build
</source>
==Использование==
===Зависимости===
При использовании утилиты в '''ALT Linux''' потребуются следующие пакеты:
* '''libldap'''
* '''openldap'''
* '''libsasl2'''
* '''libsasl2-plugin-gssapi'''
* '''krb5-kinit'''
===Предварительная настройка===
Утилита '''hadfs''' оперирует деревом объектов '''LDAP''', потому для работы '''hadfs''' необходим доступ к портам '''LDAP''' - '''88''' и '''389'''. Также, данная утилита использует '''FUSE''' (Filesystem in Userspace), потому у пользователя должно быть достаточно прав для использования '''fuse'''.
В случае с '''ALT Linux''' необходимо добавить пользователя в соответствующую группу:
<source>
sudo usermod -aG fuse username
</source>
===Подключение схемы===
Для получения дерева объектов в требуемом каталоге необходимо подключить утилиту '''hadfs-exe''' к контроллеру домена. Сделать это можно командой:
<source>
kinit administrator@DOMAIN.ALT
hadfs-exe /mnt/dc0.domain.alt dc0.domain.alt
</source>
Данное действие импортирует схему от контроллера домена '''dc0.domain.alt''' в каталог '''/mnt/dc0.domain.alt'''. При этом, прежде, чем '''hadfs-exe''' представит данные в качестве файловой системы, необходимо провести авторизацию в '''Kerberos''' с помощью утилиты '''kinit'''.
===Специальные файлы===
Объекты дерева представлены в виде директорий, а их свойства представлены в виде текстовых файлов. Для изменения свойства необходимо, чтобы текстовый редактор записывал файл после изменения целиком. Вы можете столкнуться с проблемами, например, при использовании редактора '''mcedit'''.
Среди специальных файлов в каталогах (дереве) можно встретить следующие:
* '''.chpwd''' - Доступный только на запись файл, куда вы можете записать новый пароль для пользователя.
* '''.attributes''' - Атрибуты объекта в виде '''LDIF''' файла.
* '''.attributes.json''' - Атрибуты объекта в виде '''JSON'''.
Также в каталоге запуска программы, в случае ошибок, вы можете встретить файл '''.lasterror''', который хранит в себе текст последней ошибки.
Также существует специальный файл '''.refresh'''. Его назначение состоит в том, чтобы вызвать обновление дерева (которое закэшировано). Сделать это можно командой:
<source>
touch .refresh
</source>
Это вызовет обновление дерева в том каталоге, где произведена данная операция.
===Работа с деревом===
В самом простом случае возможна навигация по дереву каталогов и файлов с помощью любого файлового менеджера и правка конфигурации с помощью текстового редактора или стандартных системных утилит.
==Диагностика проблем==
* '''Q1''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapAuthUnknown(-6): Unknown authentication method (SASL(-4): no mechanism available: No worthy mechs found)
* '''A1''': Установите пакет libsasl2-plugin-gssapi
* '''Q2''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (No Kerberos credentials available (default cache: KEYRING:persistent:500)))
* '''A2''': Проверьте, что имя контроллера домена можно разрешить в IP-адрес.
* '''Q3''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapServerDown(-1): Can't contact LDAP server
* '''A3''': Проверьте, что порты LDAP открыты на контроллере домена.
* '''Q4''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database))
* '''A4''': У данной проблемы может быть много причин одной из которых могут быть неполадки при '''reverse DNS lookup'''. Проблему можно решить отключением данной функции в файле <code>/etc/openldap/ldap.conf</code> из пакета <code>openldap</code> с помощью прописывания строки: <code>sasl_nocanon yes</code>
* '''Q5''': Команда просмотра просмотра дерева (например, '''ls''' или графический файловый менеджер) зависает.
* '''A5''': Наиболее вероятной причиной проблемы в данном случае является обрыв связи с сервером. '''hadfs''' пытается подключиться к серверу, но соединения не происходит. Подключите дерево заново, чтобы установить связь с сервером.
== Руководство мейнтейнера ALT Linux ==
== Руководство мейнтейнера ALT Linux ==



Версия от 10:48, 18 июня 2019

Руководство мейнтейнера ALT Linux

Введение

Данная статья предназначена для централизации всей информации о процессе работы над репозиторием Sisyphus и интеграции в сообщество ALT Linux (Team).

Для индивида может существовать множество причин стать участником сообщества:

  • Желание внести свой вклад в развитие открытого ПО и сделать мир лучше;
  • Желание "отполировать резюме" и показать рекрутёрам свои навыки;
  • Желание решить вполне себе практическую проблему - например, воспользоваться конкретной программой;
  • Вы, волей судьбы, стали эксплуатантом дистрибутива в коммерческой или государственной структуре и сталкиваетесь с проблемами, которые надо как-то решать.

Кто такой мейнтейнер

Мейнтейнер (дистрибутива или пакета) - это человек, который занимается тем, что интегрирует ПО в дистрибутив и сопровождает его впоследствии. То есть делает пакет для установки программы из централизованного репозитория, чинит обнаруженные в программе баги, общается с разработчиками программы, старается реагировать на нужды пользователей (багрепорты, вопросы).

В понимании ALT Linux - мейнтейнер должен быть членом ALT Linux Team (Команды ALT Linux).

Что такое ALT Linux Team

ALT Linux Team - распределённая и независимая команда энтузиастов, которые совместно работают над поддержкой наборов программ в репозитории Sisyphus и собирают дистрибутивы на основе этого репозитория.

Как стать членом ALT Linux Team

Существует процедура принятия в ALT Linux Team, которая называется Join (присоединение). Обычно, этот процесс происходит естественно, когда человек активно участвует в работе сообщества:

  • Тестирует ПО и заводит багрепорты о найденных багах;
  • Помогает чинить баги - присылает патчи;
  • Пакетирует новое ПО или помогет поддерживать существующие пакеты.

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

Процедура Join

Формально, Join выглядит как создание бага на ALT Linux Bugzilla в разделе Development, с параметрами:

  • Product == Team Accounts
  • Component == Join

К заявке надо приложить/указать:

  • Публичный ключ SSH - для доступа к ресурсам сборочницы;
  • Публичный GPG-ASCIIARMOR ключ для подписи коммитов;
  • Указать никнейм ментора из команды;
  • Указать желаемый почтовый адрес вида <nickname>@altlinux.org

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

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

Актуальный список менторов:

  • sin@
  • mike@

Работа с пакетной базой

Архитектура средств управления пакетами

Экосистема ALT Linux обладает многими уникальными наработками и своей интересной историей и архитектурой.

Введение в Gear-репозитории

Gear-репозиторий представляет собой репозиторий Git DVCS, содержаший RPM specfile и специальную директорию .gear с инструкциями по сборке пакета для RPM. Практически всегда (но это не является неприкосновенным правилом) в репозитории также хранится и код программы.

К сожалению, Gear, как и Git - очень сложный и гибкий инструмент вида всё наружу. Есть много вариантов хранения программ в gearrepo, которые могут создать проблемы начинающему меёнтейнеру или заставить поломать голову опытного. Не существует однообразного рецепта работы с gearrepo, так что не стесняйтесь посоветоваться с участниками сообщества по тем или иным вопросам.

Есть некоторые общие рекомендации, которых можно придерживаться:

  • Хранить код программы с редкими исправлениями удобно в ветке master - там же, где находятся specfile и директория .gear;
  • Хранить код программы отдельно, в ветке upstream, удобно, когда в программу вносится много изменений и история правок specfile или правил Gear мешает следить за ходом работы.

Нюансы сборки пакетов

  • При жалобах на зашитый в ПО RPATH удаляйте его при сборке с помощью программы chrpath. Раньше использование RPATH было очень популярно (особенно в системе сборки automake/libtool), но потом мейнтейнеры пришли к выводу, что это мешает искать библиотеки в стандартных путях. Потому, не оставляйте RPATH без особой необходимости.
  • Если у программы есть плагины, документация, заголовочные файлы - разместите их в отдельных пакетах.
  • Если у программы есть жёсткие опциональные зависимости (например, варианты зависимости от MySQL/MariaDB и от PostgreSQL) - соберите программу в нескольких вариантах, чтобы позволить пользователям не тянуть лишние зависимости, когда они не нужны.
  • Если пользователям могут одновременно понадобиться обе версии программы - старая и новая - соберите два пакета с разными именами. Также обдумайте интеграцию с системой Alternatives и вариант небольшого скрипта-обёртки при таком подходе.
  • Если программа явлется демоном - удостоверьтесь в наличии предоставляемых файлов .service для systemd и скрипта для sysvinit.
  • Политика дистрибутива такова, что не должно быть программ с suid-битом (как sudo). Существует много вариантов решения проблемы. В данном случае необходимо проконсультироваться с членами ALT Linux Team касательно разумного выхода из сложившейся ситуации.
  • Если Вы импортировали RPM specfile из другого дистрибутива - оставьте прежний changelog, а свои изменения дописывайте отдельно - это дань уважения авторам.

Создание Gear-репозитория из исходных кодов

Мы будем создавать Gear-репозиторий с хранением кода в отдельной ветви - upstream и несколькими зависимыми пакетами (документация, плагины).

Сначала создайте директорию проекта и инициализируйте её:

mkdir program
cd program
git init