8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS 7 (on Raspberry Pi)でのrpmパッケージ作成方法 - gitlab-ce

Last updated at Posted at 2016-04-18

前置き

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も修正します。

/etc/fstab
/swap none swap defaults 0 0

パッケージビルド用必須パッケージのインストール

alienをインストールします。alienはNux Dextopに入っています。CnetOS 7 (Raspberry Pi)上でのrpmパッケージビルド環境の構築に書いたように/etc/yum.repos.d/nux-dextop.repo$basearchx86_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=wheezyRASPBIAN=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を使用する場合、設定ファイルを変更します。

/etc/gitlab/gitlab.rb
  :
  #####################
  # 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

以上です。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?