前置き
CentOS (on Raspberry Pi)ですが、サードパーティ製のパッケージはあまり用意されておらず、gitlab-ceも当然パッケージはありません。そのため自分でビルドし直すしかないのですが、ソースパッケージもないので、ソースパッケージからビルドするという方法もとれません。ただし、Raspbian用のパッケージが用意されているので、それをalienでいったん展開し、パッケージビルドするという方法でCentOS(armv7hl)用のrpmパッケージを作ることができます。
事前準備
パッケージビルドする前に、OSの初期設定、パッケージビルド用必須パッケージのインストールをする必要があります。
OS初期設定
CnetOS 7 (Raspberry Pi)上でのrpmパッケージビルド環境の構築に記載したパッケージビルド環境の構築を事前に実施している必要があります。
swap領域の作成
メモリの要件が1GBです。CentOS (on RaspberryPi) ではもともと512MBの領域がswapに取られていますが、新たに1GB追加することにします。
$ sudo dd if=/dev/zero of=/swap bs=1G count=1
$ sudo mkswap /swap
$ sudo swapon /swap
/etc/fstabも修正します。
/swap none swap defaults 0 0
パッケージビルド用必須パッケージのインストール
alienをインストールします。alienはNux Dextopに入っています。CnetOS 7 (Raspberry Pi)上でのrpmパッケージビルド環境の構築に書いたように/etc/yum.repos.d/nux-dextop.repo
の$basearch
をx86_64
に変更しておくとyum
でインストールすることができます。
ただし、alienの依存パッケージのうち以下のパッケージがレポジトリになかったので、自分でビルドする必要があります。
- perl-Mail-Transport-Dbx
- perl-File-FcntlLock
- dpkg
また、perl-Mail-Transport-Dbxをビルドするために必要なパッケージのうち、以下のパッケージがレポジトリになかったので、自分でビルドする必要があります。
- perl-Test-Pod-Converage
まずは、依存パッケージをビルドするために~/rpmbuild
がない場合は、以下を実行します。
$ rpmdev-setuptree
perl-Test-Pod-Converageのビルド・インストール
前述のように、perl-Mail-Transport-Dbxをビルドするためには、perl-Test-Pod-Converageをインストールする必要がありますが、パッケージがレポジトリにないのでビルドする必要があります。まずはビルド時の必須パッケージをインストールします。すべてyum
でインストールできます。
$ sudo yum install perl-ExtUtils-MakeMaker perl-Pod-Coverage perl-Test-Simple perl-Test-Pod
ビルドしてインストールします。ソースパッケージはyumdownloader --source
でダウンロードすることができます。
$ yumdownloader --source perl-Test-Pod-Coverage
$ rpmbuild --rebuild perl-Test-Pod-Coverage-1.08-21.el7.src.rpm
$ cd ~/rpmbuild/RPMS/noarch/
$ sudo yum localinstall perl-Test-Pod-Coverage-1.08-21.el7.noarch.rpm
perl-Mail-Transport-Dbxのビルド・インストール
ソースパッケージはyumdownloader --source
でダウンロードできます。
(ビルドするときに必要なパッケージは上記ですべてインストール済みです。)
$ cd ~/rpmbuild/SRPMS
$ yumdownloader --source perl-Mail-Transport-Dbx
$ rpmbuild --rebuild perl-Mail-Transport-Dbx-0.07-22.el7.nux.src.rpm
$ cd ~/rpmbuild/RPMS/armv7hl/
$ sudo yum localinstall perl-Mail-Transport-Dbx-0.07-22.el7.armv7hl.rpm
perl-File-FcntlLockのビルド・インストール
こちらも、ソースパッケージはyumdownloader --source
でダウンロードできます。
$ cd ~/rpmbuild/SRPMS
$ yumdownloader --source perl-File-FcntlLock
$ rpmbuild --rebuild perl-File-FcntlLock-0.12-13.el7.nux.src.rpm
$ cd ~/rpmbuild/RPMS/armv7hl/
$ sudo yum localinstall perl-File-FcntlLock-0.12-13.el7.armv7hl.rpm
dpkgのビルド・インストール
まずはビルド時の必須パッケージをインストールします。すべてyum
でインストールできます。
$ sudo yum install zlib-devel bzip2-devel libselinux-devel gettext ncurses-devel autoconf automake gettext-devel doxygen flex xz-devel po4a dotconf-devel
ソースパッケージをyumdownloader --source
でダウンロードして、ビルドします。
$ cd ~/rpmbuild/SRPMS
$ yumdownloader --source dpkg
$ rpmbuild --rebuild dpkg-1.16.16-5.el7.src.rpm
$ cd ~/rpmbuild/RPMS/armv7hl/
$ sudo yum localinstall dpkg-1.16.16-5.el7.armv7hl.rpm
alienインストール
上記のパッケージをすべてインストールしたら、yum
でインストールすることができるようになります。
$ sudo yum install alien
また、gitをインストールします。
$ sudo yum install git
gitlab-ceパッケージ作成
スクリプトの入手
Raspbian用のdebパッケージを入手し、パッケージを変換するスクリプトを作成しました。以下のようにして入手してください。
$ cd ~/rpmbuild
$ git clone https://github.com/k-sh/deb2rpm_gitlab-ce.git
$ cd deb2rpm_gitlab-ce
Raspbian用debパッケージの入手
一番最近ビルドされたRaspbian用のパッケージを入手するには、上記のディレクトリで以下のコマンドを実行します。ただし、ダウンロードするのは、wheezy用パッケージです。jessie用パッケージの場合、/lib/libstdc++.so.6が古いため、使用できません。
※もし、jessieのみで出ているパッケージをインストールしたい場合は、gccを4.9.0以降にアップグレードした上で、download_gitlab-ce_deb.shのRASPBIAN=wheezy
をRASPBIAN=jessie
に変更してみてください(未確認)。
$ ./download_gitlab-ce_deb.sh
もし、特定のバージョンのgitlab-ceを使用したい場合は、以下のようにします。前方一致するもののうち、(rc版は除く)一番最近ビルドされたパッケージをダウンロードします。
例)8.5.9をダウンロードするとき
$ ./download_gitlab-ce_deb.sh --list
$ ./download_gitlab-ce_deb.sh 8.5.9
debパッケージの展開&rpmbuild
パッケージを入手したら、後はパッケージを変換します。alien
コマンドで行えるのですが、パッケージのインストール・削除時に行うpreinstallなどがCentOS7 (x86_64)用のパッケージと異なっていました。
そこで、alien
コマンドでdebパッケージを展開だけ行い、その後、rpmbuild
コマンドで固め直すスクリプトを作成しました。
例)
$ ./deb2rpm_gitlab-ce.armv7hl.sh gitlab-ce_8.5.9+20160405170751-ce.0_armhf.deb
以下のWarningが出ますが、あまり気にしないでください。
Warning: alien is not running as root!
Warning: Ownerships of files in the generated packages will probably be wrong.
以上でrpmパッケージは完成です。
パッケージのインストール
出来たパッケージをインストールします。
$ sudo rpm -ivh gitlab-ce-8.5.9-ce.0.el6.el7.armv7hl.rpm
また別のところで~/rpmbuild
は使うと思うので、退避または削除しておきます。
$ cd ~
$ mv rpmbuild rpmbuild.gitlab-ce
gitlab-ceの初期設定・起動
設定ファイルの修正
必要に応じて/etc/gitlab/gitlab.rbを修正します。
例)
- external_url:gitlabで表示されるurlを設定します。
- git_data_dir:外付けHDDなどに変更したい場合は、変更します。
- web_server['external_users'], nginx['enable']:gitlab付属のnginx以外のnginxを使用する場合は変更します(下記参照)。
などなど。
firewalldの設定
忘れずに、必要に応じて、設定を変更します。説明は割愛します。
設定の反映・起動
その後、以下のコマンドを実行すれば、自動的に起動します。
$ sudo gitlab-ctl reconfigure
数分待った後、Webブラウザでアクセスしてみると、ログイン画面が出るはずです。
初期のユーザ名・パスワードは以下の通りです。ログイン後は、適宜変更してください。
ユーザ名:root
パスワード:5iveL!fe
バージョン対応状況
以下のバージョンでログイン画面が開けることを確認しました。
- 7.12.2~omnibus.1
- 7.14.3
- 8.0.5
- 8.5.9
一方、以下のバージョンでは500エラーになりました。
- 8.6.1
以上です。以下、gitlab-ceの設定方法、アンインストール方法について、備忘録のために載せておきます。
参考
gitlab-ceの手動での起動・停止
手動で起動するときは以下のようにして行うことができます。
$ sudo gitlab-ctl start
手動で停止するときは以下のようにして行うことができます。
$ sudo gitlab-ctl stop
gitlab-ce付属のnginx以外のnginxを使用する場合
外部のnginxを使用する場合、設定ファイルを変更します。
:
#####################
# GitLab Web server #
#####################
## see: https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/nginx.md#using-a-non-bundled-web-server
## When bundled nginx is disabled we need to add the external webserver user to the GitLab webserver group.
# web_server['external_users'] = []
+ web_server['external_users'] = ['{nginxのユーザー名}']
# web_server['username'] = 'gitlab-www'
# web_server['group'] = 'gitlab-www'
# web_server['uid'] = nil
# web_server['gid'] = nil
# web_server['shell'] = '/bin/false'
# web_server['home'] = '/var/opt/gitlab/nginx'
################
# GitLab Nginx #
################
## see: https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/nginx.md
# nginx['enable'] = true
+ nginx['enable'] = false
:
gitlab-ceをアンインストールする場合
残念ながらrpm -e
だけでは大量のファイルが残ってしまいます。以下のコマンドを実行します。(まだ不足しているかもしれません。)
$ sudo gitlab-ctl stop
$ sudo gitlab-ctl uninstall
$ sudo rpm -e gitlab-ce
$ sudo rm -rf /opt/gitlab
$ sudo rm -rf /etc/gitlab
$ sudo rm -rf /var/log/gitlab
$ sudo rm -rf /var/opt
$ sudo rm -rf /usr/lib/systemd/system/gitlab-runsvdir.service
$ sudo rm -rf /etc/systemd/system/basic.target.wants/gitlab-runsvdir.service
さらに以下のユーザ・グループを削除します。
$ sudo userdel gitlab-www
$ sudo usedel git
$ sudo userdel gitlab-redis
$ sudo userdel gitlab-psql
gitlab-ctl reconfigure時のエラーメッセージ確認
gitlab-ctl reconfigure
した時に、エラーが出なかったか、以下で確認することができます。
$ less /var/log/gitlab/reconfigure/<日時>.log
また、以下のコマンドで異常が発生していないか、確認できます。
$ sudo gitlab-rake gitlab:check
以上です。