目次

FreeBSDのパッケージでGitのリモートリポジトリをクイックセットアップ

2017/03/06
FreeBSDのpkgコマンドでお手軽にgitblitをインストール、セットアップし、gitのリモートリポジトリを作る。 portsでソースからコンパイルするより速いし、ちゃちゃっと準備するにはおすすめ。git自体の話はしない。

今回は ezjail でJailをこしらえてその中にインストールします。FreeBSDのパッケージだと、Tomcat7で動作するサーブレットとしてインストールされるので、 既にTomcatを動作させているような場合はJailで隔離してインストールした方が良いです。

gitblitインストール前の準備

Jailにインストールする場合、事前に設定しておく内容。
既にJailインスタンス git が作成され起動しているものとします。

Jailホスト、Jailの設定

Jailの通信許可を設定します。 FreeBSDのJailホスト、Jailで設定する項目のメモを参照。

gitblitインストール

Jailにインストールする場合はJailにログインしておきます。

gitblitパッケージをインストール

pkgコマンドのsearchサブコマンドで git を検索するとわんさか出てきます。 パッケージ gitblit-1.8.0 “Open-source servlet for Git repositories” が見つかります。現時点でこれが無難そうです。 これをインストールします。依存関係のあるパッケージも同時にインストールされます。

root@git:~ # pkg search git
bzr-git-0.6.8_1                Plugin for bzr to work with git trees
cave9-0.4.1.git20150408        Gravity cave-exploration game
cgit-1.1_1                     Fast, lightweight web frontend for Git repositories
digitemp-3.6.0                 Dallas Semiconductor 1-wire device reading console application
easygit-0.98                   Easy wrapper for git
fusefs-gitfs-0.4.5.1           Version controlled file system
geany-plugin-git-changebar-1.29 Geany plugin: highlight changed files tracked with Git
git-2.11.0_3                   Distributed source code management tool
git-bzr-ng-git20140423         Bi-directional git to bzr bridge
git-cinnabar-0.4.0             Git remote helper to interact with Mercurial repositories
git-codereview-0.0.0.2016030201 Command-line tool for working with Gerrit
git-cola-2.6                   Sleek and powerful Git GUI
git-cvs-0.1.0                  Tool to incrementally import changesets from CVS into Git
git-extras-4.2.0               Sub-commands for repo summary, repl, changelog population, and more
git-gui-2.11.0_3               Distributed source code management tool (GUI enabled)
git-lfs-1.5.4                  Git extension for versioning large files
git-lite-2.11.0_3              Distributed source code management tool (lite package)
git-merge-changelog-20140202   Git "merge" driver for GNU style ChangeLog files
git-modes-emacs25-1.2.2_1,1    GNU Emacs modes for Git-related files
git-review-1.25.0              Allow to push code to review and interact with a Gerrit server
git-subversion-2.11.0_3        Distributed source code management tool with FreeBSD subversion bindings
gitblit-1.8.0                  Open-source servlet for Git repositories
gitea-1.0.0                    Compact self-hosted Git service
gitflow-1.8.0                  Git extensions to provide high-level repository operations
gitg-3.19.6_1                  GTK-based git repository viewer
gitg0-0.0.8_2                  GTK-based git repository viewer (gtk2 version)
github-backup-utils-2.7.1      GitHub Enterprise Backup Utilities
gitlab-8.11.11_6               Web GUI for managing git repositories
gitlab-shell-3.4.0_1           GitLab Shell handles git commands for GitLab
gitlab-workhorse-0.7.11        Smart reverse proxy for GitLab
gitlist-0.5.0                  Web based Git repository browser written in PHP
gitolite-3.6.6,1               Access control layer on top of git
gitolite2-2.3.1_1              Access control layer on top of git
gitphp-0.2.8_1                 Web based git repository browser written in PHP
gittrac-2.0.1_1                Web-Based Bug And Patch-Set Tracking System For Git
griels-quest-git20150512       Griel's Quest for the Sangraal
gtk-digital-cream-theme-1.0_8  Neat and clean theme for GNOME desktop
gtk-digital-harmony-theme-1.1_8 Another popular theme for GNOME desktop
hs-git-annex-5.20150727_1      Manage files with git, without checking their contents into git
hs-gitit-0.11.1                Wiki using happstack, git or darcs, and pandoc
libgit2-0.24.0                 Portable, pure C implementation of the Git core
libgit2-glib-0.24.0_1          Glib wrapper library around the libgit2 git access library
libvterm-git20160104           Implementation of a VT220/xterm/ECMA-48 terminal emulator
magit-emacs25-2.8.0            Interface to Git for Emacs
metacity-digital-cream-theme-1.0_8 Neat and clean theme for GNOME desktop
metacity-digital-harmony-theme-1.1_8 Another popular theme for GNOME desktop
multicat-git20161007           Simple and efficient multicast and transport stream manipulation
p5-Algorithm-CheckDigits-1.3.2 Perl extension to generate and test check digits
p5-App-GitGot-1.333            Tool to make it easier to manage multiple git repositories
p5-App-GitHub-1.0.1_1          GitHub Command Tools
p5-Config-GitLike-1.16         Simple git-compatible config file parser for Perl
p5-Git-PurePerl-0.53           Pure Perl interface to Git repositories
p5-Git-Repository-1.320        Perl interface to Git repositories
p5-Git-Repository-Plugin-Log-1.314 Add a log() method to Git::Repository
p5-Git-Sub-0.161810            Git commands imported into the git:: namespace
p5-Git-Version-Compare-1.004   Functions to compare Git versions
p5-Git-Wrapper-0.047           Wrap git(7) command-line interface
p5-GitDDL-0.03                 Perl extension for database migration utility by git managed sql
p5-GitDDL-Migrator-0.08        Perl extension to extended p5-GitDDL
p5-Net-GitHub-0.86             Perl interface to github.com
p5-Test-Requires-Git-1.007     Check your test requirements against the available version of Git
p5-WWW-GitHub-Gist-0.17_1      Perl interface to Gist
p5-github_creator-0.15_1       Create a Github repository for your Perl module
pear-SebastianBergmann_Git-1.2.0 Simple wrapper for Git
pear-VersionControl_Git-0.4.4  OO interface to handle Git repository
py27-GitPython-1.0.1           Python Git Library
py27-django-taggit-0.15.0_1    Reusable Django application for simple tagging
py27-git-up-1.3.0              Python implementation of 'git up'
py27-gitdb-0.6.4_2             Pure Python git object database
py27-gitless-0.8.5             Version control system built on top of Git
py27-gitosis-0.2.20090917_1    Software for hosting git repositories
py27-hg-git-0.8.5.20161206     Mercurial extension to pull from or push to a Git repository
py27-pygit2-0.24.1             Python bindings for libgit2
py27-pygithub-1.26.0           Python library implementing the full GitHub API v3
py27-python-digitalocean-1.8   API to manage digitalocean.com droplets
py27-setuptools-git-1.1        Setuptools plugin for git
py27-wsgitools-0.3             Useful middlewares and filters for wsgi as well as scgi servers
qgit-qt4-2.3_1                 Graphical interface to git repositories
rubygem-gemnasium-gitlab-service-0.2.6 Gemnasium support for GitLab projects
rubygem-git-1.2.9.1            Ruby wrapper library around git(1)
rubygem-git-version-bump-0.15.1 Manage your app version entirely via git tags
rubygem-github-linguist-5.0.0  GitHub Language detection
rubygem-github-markdown-0.6.9  Self-contained Markdown parser for GitHub
rubygem-github-markup-1.4.0_1  Render any fancy markup
rubygem-github_api-0.14.5      Wrapper that supports all of the GitHub API v3 methods
rubygem-gitlab-flowdock-git-hook-1.0.1 GitLab-patched Git Post-Receive hook for Flowdock
rubygem-gitlab-gollum-lib-1.1.0_3 Simple, Git-powered wiki with a sweet API and local frontend
rubygem-gitlab-grack-2.0.2_2   Ruby/Rack Git Smart-HTTP Server Handler
rubygem-gitlab-grit-2.8.1_1    Library for extracting information from a git repository
rubygem-gitlab-linguist-3.0.1  GitHub Language detection
rubygem-gitlab-markup-1.5.0    Render any fancy GitLab markup
rubygem-gitlab-pygments.rb-0.5.4_1 Exposes the pygments syntax highlighter to Ruby
rubygem-gitlab_emoji-0.3.1_1   Provides Gitlab Emoji assets
rubygem-gitlab_git-10.7.0,1    GitLab wrapper around git objects
rubygem-gitlab_meta-7.0        GitLab meta gem
rubygem-gitlab_omniauth-ldap-1.2.1 LDAP strategy for OmniAuth
rubygem-html-pipeline-gitlab-0.2.0 Extension filters for html-pipeline used by GitLab
rubygem-omniauth-github-1.1.2  Official OmniAuth strategy for GitHub
rubygem-omniauth-github-discourse-1.1.2 Fork of Official OmniAuth strategy for GitHub
rubygem-omniauth-gitlab-1.0.2  OmniAuth strategy for GitLab
rubygem-svn2git-2.4.0          Ruby utilities for exporting SVN repo to git
sagittarius-scheme-0.7.11      R6RS/R7RS Scheme system
stagit-0.4                     Static Git page generator
svn2git-1.0.11.a.20151201      Imports svn repositories into git
uwsgitop-0.10                  uWSGI top-like app
xtgyoretsu-git20140822         Extended ncurses version of "Renshu-cho gyoretsu"
root@git:~ # 
root@git:~ # pkg install gitblit-1.8.0
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 36 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        gitblit: 1.8.0
        openjdk8: 8.112.16_2
        libXt: 1.1.5,1
        xproto: 7.0.31
        libSM: 1.2.2_3,1
        libICE: 1.0.9_1,1
        libX11: 1.6.4,1
        libXdmcp: 1.1.2
        libxcb: 1.12
        libxml2: 2.9.4
        libpthread-stubs: 0.3_6
        libXau: 1.0.8_3
        kbproto: 1.0.7
        libXtst: 1.2.3
        recordproto: 1.14.2
        inputproto: 2.3.2
        libXext: 1.3.3_1,1
        xextproto: 7.3.0
        libXi: 1.7.8,1
        libXfixes: 5.0.3
        fixesproto: 5.0
        giflib: 5.1.4
        java-zoneinfo: 2016.j
        libXrender: 0.9.10
        renderproto: 0.11.1
        freetype2: 2.6.3
        fontconfig: 2.12.1,1
        expat: 2.2.0_1
        alsa-lib: 1.1.2
        dejavu: 2.37
        mkfontdir: 1.0.7
        mkfontscale: 1.1.2
        libfontenc: 1.1.3
        javavmwrapper: 2.5_2
        tomcat7: 7.0.73
        jakarta-commons-daemon: 1.0.15

Number of packages to be installed: 36

The process will require 260 MiB more space.
110 MiB to be downloaded.

Proceed with this action? [y/N]: y
[git] Fetching gitblit-1.8.0.txz: 100%   36 MiB   3.2MB/s    00:12
[git] Fetching openjdk8-8.112.16_2.txz:   6%    4 MiB   2.3MB/s    00:31 ETA

:
:

[git] [34/36] Installing jakarta-commons-daemon-1.0.15...
[git] [34/36] Extracting jakarta-commons-daemon-1.0.15: 100%
[git] [35/36] Installing tomcat7-7.0.73...
[git] [35/36] Extracting tomcat7-7.0.73: 100%
[git] [36/36] Installing gitblit-1.8.0...
===> Creating groups.
Using existing group 'www'.
===> Creating users
Using existing user 'www'.
[git] [36/36] Extracting gitblit-1.8.0: 100%
Message from dejavu-2.37:
Make sure that the freetype module is loaded.  If it is not, add the following
line to the "Modules" section of your X Windows configuration file:

        Load "freetype"

Add the following line to the "Files" section of X Windows configuration file:

        FontPath "/usr/local/share/fonts/dejavu/"

Note: your X Windows configuration file is typically /etc/X11/XF86Config
if you are using XFree86, and /etc/X11/xorg.conf if you are using X.Org.
Message from openjdk8-8.112.16_2:
======================================================================

This OpenJDK implementation requires fdescfs(5) mounted on /dev/fd and
procfs(5) mounted on /proc.

If you have not done it yet, please do the following:

        mount -t fdescfs fdesc /dev/fd
        mount -t procfs proc /proc

To make it permanent, you need the following lines in /etc/fstab:

        fdesc   /dev/fd         fdescfs         rw      0       0
        proc    /proc           procfs          rw      0       0

======================================================================
Message from gitblit-1.8.0:
************************************************************************

        By default, Gitblit stores all data (users, settings,
        repositories, etc) in ${contextFolder}/WEB-INF/data.
        Specifying an alternate "baseFolder" allows for simple
        upgrades in the future.

        You can specify "baseFolder":
        - via GITBLIT_HOME, or
        - via web.xml, or
        - via JNDI.

        For value of "baseFolder" use value "/usr/local/gitblit".

        You can login with the default administrator credentials:
        admin / admin

        !!!MAKE SURE TO CHANGE THE ADMINISTRATOR USERNAME AND/OR PASSWORD!!!


        More informations:
        http://gitblit.com/setup_war.html

************************************************************************
root@git:~ #

openJDKがインストールされていることからもわかりますように、gitblitはJava製です。そしてTomcat7がインストールされていることから、このFreeBSDのパッケージではサーブレットとして動作するもののようです。

/etc/rc.confに追記

指示は出てこなかったのですがTomcat7を動作させるために /etc/rc.conf へ追記します。

/etc/rc.conf
tomcat7_enable="YES"

Tomcat7の tomcat-users.xml ファイルの編集

Tomcat7は /usr/local/apache-tomcat-7.0 にインストールされ、gitblitは /usr/local/apache-tomcat-7.0/webapps/gitblit にインストールされています。

Tomcat7のサーバーステータスアプリやAPPマネージャを使いたい場合には、ユーザ “tomcat” を利用可能にしておきます。

/usr/local/apache-tomcat-7.0/conf/tomcat-users.xml
  <role rolename="tomcat"/>
  <role rolename="manager-gui"/>
  <role rolename="role1"/>
  <user username="tomcat" password="パスワード" roles="tomcat,manager-gui"/>
<!-- 以下のユーザは無効のまま
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->

Tomcat7の起動

service コマンドでtomcat7を起動します。

root@git:~ # service tomcat7 start
Starting tomcat7.
root@git:~ #

ブラウザからアクセスしてみます。URLは http://host:8080/ です。 tomcatルート

gitblitのWebUIにアクセスする

コンテキストルートが gitblit なので URLは http://host:8080/gitblit になります。 bitblit UI

adminアカウントのパスワードがadminだと説明表示されていたので、とりあえずログインしてパスワードだけ変更しておきます。


もし更新に失敗するなら、ディレクトリの所有者を変えておきます。

root@git:/usr/local/apache-tomcat-7.0/webapps # ll
total 28
drwxr-xr-x   3 www   www  1024 Mar  4 19:42 ROOT/
drwxr-xr-x  14 www   www  2048 Mar  4 19:42 docs/
drwxr-xr-x   7 www   www   512 Mar  4 19:42 examples/
drwxr-xr-x   7 root  www  4608 Mar  4 19:42 gitblit/
drwxr-xr-x   5 www   www   512 Mar  4 19:42 host-manager/
drwxr-xr-x   5 www   www   512 Mar  4 19:42 manager/
root@git:/usr/local/apache-tomcat-7.0/webapps # chown -R www:www gitblit
root@git:/usr/local/apache-tomcat-7.0/webapps # ll
total 28
drwxr-xr-x   3 www  www  1024 Mar  4 19:42 ROOT/
drwxr-xr-x  14 www  www  2048 Mar  4 19:42 docs/
drwxr-xr-x   7 www  www   512 Mar  4 19:42 examples/
drwxr-xr-x   7 www  www  4608 Mar  4 19:42 gitblit/
drwxr-xr-x   5 www  www   512 Mar  4 19:42 host-manager/
drwxr-xr-x   5 www  www   512 Mar  4 19:42 manager/
root@git:/usr/local/apache-tomcat-7.0/webapps #

リモートリポジトリを作成する

あとはメニューから操作すればいい。