CentOS
Apache
global
docker

GNU GLOBALを使ったコードリーディング環境の構築

前提

  • GNU GLOBALを使ったコードリーディング環境をDockerコンテナ上に構築した際のメモです
  • Dockerはインストール済みです
  • GNU GLOBALによるコードはブラウザで閲覧します
  • DockerコンテナはCentOS 6.9を使用します

環境

  • macOS Sierra 10.12.6
  • Docker 17.12.0-ce-mac49
  • GNU GLOBAL 6.6.2

コンテナの準備

  • centosイメージのダウンロード
    # docker pull centos
    
  • GNU GLOBAL用コンテナの起動
    # docker run -it -p 8000:80 --name global centos:centos6.9 /bin/bash
    [root@39061ca81695 ~]#
    

以降は基本的にコンテナ内での手順

GNU GLOBALのインストール

  • 依存パッケージのインストール
    # yum -y install curses ncurses-devel
    
  • wgetパッケージのインストール
    # yum -y install wget
    
  • GNU GLOBALパッケージの入手
    # cd /usr/local/src
    # wget http://tamacom.com/global/global-6.6.2.tar.gz
    
  • GNU GLOBALのインストール
    # tar zvxf global-6.6.2.tar.gz
    # cd global-6.6.2
    # sh configure
    # make && make install
    

ソースパッケージの入手

  • /etc/yum.repos.d/CentOS-Base.repoに下記を記述
[base-src]
name=CentOS-6.9 - Base - Source
baseurl=http://vault.centos.org/6.9/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates-src]
name=CentOS-6.9 - Updates - Source
baseurl=http://vault.centos.org/6.9/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras-src]
name=CentOS-6.9 - Extras - Source
baseurl=http://vault.centos.org/6.9/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  • yum-utilsパッケージのインストール
    # yum -y install yum-utils
    
  • 任意のソースパッケージをインストール
    # cd /usr/local/src
    # yumdownloader --source ファイル名
    

GNU GLOBAL(htags)によるソースコードのHTMLファイル生成

  • その時試していたfileパッケージのソースコード展開を例にしています。
  • ソースコードファイルの取り出し
# cd /usr/local/src
# mkdir file
# mv file-5.04-30.el6.src.rpm file

# cd file
# rpm2cpio file-5.04-30.el6.src.rpm | cpio -id
# cp file-5.04.tar.gz /usr/local/src
  • ソースコードファイルの展開
    # tar zxvf file-5.04.tar.gz
    
  • ソースコードへのタグ付けとHTMLの生成
    # cd /usr/local/src/file-5.04
    # gtags -v
    # htags -afFnvs
    
  • ApacheのDocumentRootにリンクを生成
    # cd /var/www/html
    # ln -s /usr/local/src/file-5.04/HTML file
    

Apacheの設定

  • /etc/httpd/conf.d/global.confにGNU Global用の設定を追加
/etc/httpd/conf.d/global.conf
<Directory "/usr/local/src">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>
  • Apacheの起動
    # /etc/init.d/httpd start
    

ソースコードリーディング

  • ローカル環境のブラウザから下記URLにアクセス
    http://localhost:8000/file
    

GNU GLOBAL用コンテナの保存

  • コンテナの停止
    [root@39061ca81695 ~]# exit
    #
    
  • コンテナの保存
    # docker commit global xxxxx/centos:global
    
  • コンテナの保存を確認
    # docker images xxxxx/centos
    

GNU GLOBAL用コンテナの再起動

  • コンテナの起動
    # docker run -it -p 8000:80 --name global xxxxx/centos:global /etc/init.d/httpd start