はじめに
近年、ソフトウェア開発にOSSを用いることは必要不可欠になってきています。
OSSを利用するときには、そのライセンスを把握し適切に対応することが大切です。
ソースコードを入手して1つ1つ手作業で確認していくこともできますが、とても時間がかかってしまいます。
ソースコードの解析を行うツールを導入し自動化することで、ライセンスを容易に把握することができます。
本記事では、ソースコードの解析を行うツールの1つであるDoSOCSv2の実行環境を構築してOSSの解析を行い、ライセンスを確認する手順を示します。
前提知識
SPDXとは
SPDXは"Software Package Data Exchange"の略で、ソフトウェア パッケージに関連するコンポーネントやライセンス、コピーライト等の情報をやり取りするための標準的なフォーマットの仕様です。
さらに詳しく知りたい場合は下記のWebサイトをご覧ください。
https://spdx.org/
DoSOCSv2とは
DoSOCSv2は、SPDXドキュメントとデータを管理するためのコマンドライン ツールです。
ソース コードを解析し、SPDX情報を出力することができます。
さらに詳しく知りたい場合は下記のWebサイトをご覧ください。
https://github.com/DoSOCSv2/DoSOCSv2
実行環境
DoSOCSv2の開発者によってDockerイメージが公開されていたため、Ubuntu上のDockerを用いて環境構築を行います。
執筆者の都合上、認証が必要なプロキシサーバー配下で作業を行うものとします。
Ubuntuは既にインストールされ、aptコマンドが利用できるように設定されていることを前提とします。
主なソフトウェアとバージョンを下記に示します。
- Ubuntu 16.04
- Docker 1.13.1
- DoSOCSv2 0.16.1
手順
Dockerのインストール
aptコマンドでdocker.ioパッケージをインストールします。
$ sudo apt install docker.io
Dockerコマンドのプロキシの設定
認証が必要なプロキシサーバー配下でdockerコマンドを使うために、下記のファイルを準備します。
$ cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://user:pass9@proxy-server:port/"
$
ファイル作成後はデーモンをリロードし、docker.serviceを再起動します。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
DoSOCSv2のDockerイメージを取得と実行
DockerHubにて公開されているDoSOCSv2がセットアップされたDockerイメージを利用します。
https://hub.docker.com/r/ushan89/dosocsv2/
dockerコマンドにてイメージを取得し、実行します。
$ sudo docker image pull ushan89/dosocsv2
$ sudo docker run -it ushan89/dosocsv2
wgetコマンドでソースコードを取得する
wgetコマンドを用いて、http,https,ftpサーバーからソースコードします。
※scp, rsyncコマンド等でソースコードを取得する場合にはこの手順は不要です。
dockerコンテナ内でaptコマンドを利用できるようにし、wgetパッケージをインストールします。
# echo "Acquire::http::proxy \"http://user:pass@proxy-server:port/\";" >> /etc/apt/apt.conf
# echo "Acquire::ftp::proxy \"ftp://user:pass@proxy-server:port/\";" >> /etc/apt/apt.conf
# echo "Acquire::https::proxy \"https://user:pass@proxy-server:port/\";" >> /etc/apt/apt.conf
# apt update
# apt install wget
ここでは例としてsedのソースコードを取得します。
wgetコマンドでhttpサーバーにアクセスするため、事前にhttp_proxy環境変数を設定しています。
# export http_proxy=http://user:pass@proxy-server:port
# wget http://ftp.gnu.org/gnu/sed/sed-4.2.tar.gz
データベースのセットアップ
DoSOCSv2を利用するために必要なデータベースのセットアップを行います。
# dosocs2 dbinit
ソースコードの解析とSPDX形式のドキュメントの出力
sedのソースコードをスキャンし、SPDX形式のドキュメントを出力します。
# dosocs2 oneshot sed-4.2.tar.gz > sed-4.2.spdx
ライセンスの確認
sed 4.2のライセンスに関する情報はCOPYINGファイルに記述されており、GPLv3であることがわかります。
# less sed-4.2.spdx
(略)
FileName: ./sed-4.2/COPYING
SPDXID: SPDXRef-file-COPYING-8427-faa689eb
FileType: OTHER
FileChecksum: SHA1: 842745cb706f8f2126506f544492f7a80dbe29b3
LicenseConcluded: NOASSERTION
LicenseInfoInFile: GPL-3.0
LicenseComments: <text></text>
FileCopyrightText: NOASSERTION
FileComment: <text></text>
FileNotice: <text></text>
## Relationships
Relationship: SPDXRef-file-COPYING-8427-faa689eb CONTAINED_BY SPDXRef-package-sed_4_2_tar_gz-b0a9-7f98cbdc
Relationship: SPDXRef-file-COPYING-8427-faa689eb DESCRIBED_BY SPDXRef-DOCUMENT
(略)
まとめ
本記事では、ソースコードの解析を行うツールの1つであるDoSOCSv2の実行環境を構築してOSSの解析を行い、ライセンスを確認する手順を示しました。
ソースコードの解析を自動化することによって、OSSのライセンスを容易に把握することができ、
ソフトウェア開発で用いるOSSのライセンスのコンプライアンスの活動を促進できます。
参考情報
- The Software Package Data Exchange
- DoSoCSv2
- ushan89/dosocsv2
- systemd と Docker の管理・設定
『各種製品名は、各社の製品名称、商標または登録商標です。本記事に記載されているシステム名、製品名には、必ずしも商標表示((R)、TM)を付記していません。』