Gitolite-gentoo

Может кому пригодится …
Подготовка к установке gitolite-gentoo (~amd64 or ~x86 в зависимости от архитектуры) :

echo 'dev-vcs/gitolite-gentoo tools' >> /etc/portage/package.use/custom
echo '=dev-vcs/gitolite-gentoo-3.6.2.3 ~amd64' >> /etc/portage/package.keywords/custom

Установка :

emerge gitolite-gentoo

Создаём ключи для root gitolite-admin :

#ssh-keygen -t rsa

Создаём ключи для пользователя :

$ssh-keygen -t rsa
$cd ~/.ssh
$mkdir key
$cp id_rsa key && cp id_rsa.pub key
$cd key && mv id_rsa имя_пользователя && mv id_rsa.pub  имя_пользователя.pub
$cp имя_пользователя .. && cp имя_пользователя.pub .. && cd .. && rm key

копируем открытый ключ root’a допустим в /temp :

#cp /root/.ssh/id_rsa.pub /tmp/id_rsa.pub

Инициируем gitolite :

#su git
$cd
$ gitolite setup -pk /tmp/id_rsa.pub
$exit

Удаляем ключ из /temp :

#rm /tmp/id_rsa.pub

Настройка gitolite-admin (создание репо и добавление пользователя :slight_smile: )

* для клонированных gitolite-admin.git , своего.git , calculate.git , portage.git я использовал свободный раздел на hdd reiserfs (куда клонировать будете вы - решать Вам :slight_smile: ) :

#mkdir /mnt/git  
#mount /dev/sda2 /mnt/git
#cd /mnt/git

Клонируем директорию с настройками :

#git clone git@имя_сервера:gitolite-admin.git

* имя_сервера я заменил на ip
Переходим в директорию с настройками :

#cd gitolite-admin

Копируем пользовательский открытый ключ в директорию /mnt/git/gitolite-admin/keydir

 # cp /home/user/.ssh/имя_пользователя.pub /mnt/git/gitolite-admin/keydir

Настраиваем репо для пользователя имя_пользователя

#nano conf/gitolite.conf
repo     gitolite-admin
         RW+     =     id_rsa

repo     project1
         RW+     =     testuser@remotehost

приводим к виду :

repo     gitolite-admin
         RW+     =     id_rsa

repo     calculate
         RW+     =     имя_пользователя
         R       =     @all

repo     portage
         RW+     =     имя_пользователя
         R       =     @all

repo     название_вашего_профиля
         RW+     =     имя_пользователя
         R       =     @all

repo     distros
         RW+     =     имя_пользователя
         R       =     @all

сохраняем и выполняем :

#git add . && git commit -m "ваш_коментарий" && git push origin master

Проверка sshd (тут я напишу только то , что относится к теме … материалов по настройке ssh в гугле море) :
Демон sshd должен быть запущен.
Должен быть разрешен доступ по ssh пользователю git , файл /etc/ssh/sshd_config

 # echo 'AllowUsers git' >> /etc/ssh/sshd_config

Настройка git-daemon (тут я сделал немного по своему ибо апача у меня нету) :

#nano /etc/conf.d/git-daemon

GITDAEMON_OPTS="--syslog --port=9418 --base-path=/var/lib/gitolite/repositories/ --export-all" 
GIT_USER="git"

Клонирование репо пользователя :

$ cd /mnt/git && git clone ssh://git@имя_сервера/calculate.git && git clone ssh://git@имя_сервера/portage.git && git clone ssh://git@имя_сервера/название_вашего_профиля.git && git clone ssh://git@имя_сервера/distros.git

Пример calculate.env из моего профиля (ип конечно же без звёздочек) :

[main]
cl_template_location = clsm,local,remote
cl_template_path = /var/lib/layman/clsm/profiles/templates,/var/calculate/templates,/var/calculate/remote/templates

[update]
cl_update_rep_name = clsm , portage , calculate
cl_update_rep_url = git://10.*.*.*/clsm.git,git://10.*.*.*/portage.git,git://10.*.*.*/calculate.git

и шаблон /var/lib/layman/clsm/profiles/templates/3.3/2_ac_install_merge/sys-apps/portage/alpha190/01repos.conf

 # Calculate format=samba path=/usr/share/portage/config name=repos.conf

[gentoo]
sync-type = git
sync-uri = git://git@clsm/portage.git
auto-sync = no
  • Было бы не лишним шаблончик для /etc/portage/make.conf/custom1.conf c переопределением GENTOO_MIRRORS=“ftp://свой_ftp/” … кто делает сборки более чем для 1 машины (или планирует делать) поймёт для чего это :slight_smile:

Пример переход на свой профиль :

cl-update-profile --url 10.*.*.*/clsm.git list 
Профиль системы:
  [CLSM]  clsm:CLSM/amd64
  [cli]   clsm:cli/amd64


cl-update-profile --url=10.*.*.*/clsm.git CLSM
Репозиторий
 * Название репозитория: clsm
 * Ветка репозитория: master
Профиль
 * Профиль системы: clsm:CLSM/amd64
 * Название дистрибутива: CLSM 14.12.1 'alpha'
 * Используемые репозитории: 
+---------+-------------------------------+
|Название |URL                            |
+---------+-------------------------------+
|calculate|git://10.*.*.*/calculate.git|
|portage  |git://10.*.*.*/portage.git  |
|clsm     |git://10.*.*.*/clsm.git     |
+---------+-------------------------------+
 * Список пакетов системы: Обновить
 * Пропустить настройку системы: нет

Запустить процесс? (Yes/No): y
 * Перенос репозитория ...                                                [ ok ]
Синхронизация репозиториев
 * Синхронизация Calculate репозитория ...                                [ ok ]
 * Синхронизация Portage репозитория ...                                  [ ok ]
 * Синхронизация Clsm репозитория ...                                     [ ok ]
 * Синхронизация завершена
Настройка профиля
 * Переключение на CLSM профиль ...                                       [ ok ]
 * Исправление настроек ...                                               [ ok ]
 * Конфигурирование системы ...
 * Updating desktop database  
 * Обновление кэша иконок  
 * Создание Host-Only initramfs ...  
 * Host-Only initramfs создан  
 * Конфигурирование grub  
 * Обновление конфигурационных файлов ...                                 [ ok ]
 * Обновление профиля завершено успешно

cl-update-profile --url 10.*.*.*/clsm.git list
Профиль системы:
  [CLSM]  clsm:CLSM/amd64 *
  [cli]   clsm:cli/amd64

Заключение
В итоге мы имеем возможность :

  1. сделать у себя calculate-lib:2.2.git и тд , клонировать с кальки наполнение , изменить в соотвествии с вашими требованиями , сделать ебилд и не парится с патчами из-за засады со своим названием дистра (надеюсь это скоро решат) :slight_smile:
  2. или выполнять cl-make -u без наличия интернета но с зеркалом гентушным в локалке (в моём случае)
    3)Полный контроль над обновлением систем(ы) - что положил/разрешил то и взял :wink:

ps. Огромное спасибо разработчикам Calculate за шикарный продукт … заложенные возможности и понятность (понятность для простого пользователя как я) их использования очень радуют !

pps. Извиняюсь за орфографию :slight_smile:

использовал материалы :
http://git-scm.com/book/ru/v1/Git-на-сервере-Gitolite
и
http://www.calculate-linux.org/main/ru/gitolite