Edited at

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

More than 1 year has passed since last update.


前提


  • 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