10
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.

OSSのライセンスを容易に把握するためにDoSOCSv2でソースコードを解析する

Last updated at Posted at 2018-03-08

はじめに

近年、ソフトウェア開発に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のライセンスのコンプライアンスの活動を促進できます。

参考情報

『各種製品名は、各社の製品名称、商標または登録商標です。本記事に記載されているシステム名、製品名には、必ずしも商標表示((R)、TM)を付記していません。』

10
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
10
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?