1. 라이선스 확인의 중요성
현재 우리는 수 많은 Open Source Software(이하 OSS)를 이용하고 많은 종류의 OSS를 이용하여 또 다른 OSS 및 여러 프로그램들을 만들고 있다. 이렇게 많은 종류의 OSS를 사용하면서 개발자들이나 심지어 기업들은 OSS에 저작권 정보를 인식하지 못하면서 OSS를 자신의 프로젝트에 사용 및 배포하고 있다. 어떠한 OSS는 아무런 제약 조건이 없어 사용자가 해당 OSS를 마음대로 가져다 사용 수 있으며 심지어 이 OSS를 상용 제품에 포함시켜 상용제품을 판매 및 배포할 수 있다. 하지만, 대부분의 OSS는 배포 시 배포자가 지켜야 할 규약들을 포함하고 있기 때문에 다른 사용자에게 OSS 및 OSS를 사용한 프로그램을 배포 할 경우 각 규약들을 지켜야 한다. 이러한 규약들을 지칭하여 라이선스라고 한다. 만약 이러한 라이선스 규약들을 지키지 않고 OSS를 배포할 경우 많은 불이익을 당할 수 있다. 예를 들어 사용제품일 경우 저작권자로부터 수익 Share, 판매금지, 손해배상 청구 등 회사에 심각한 타격을 입힐 수 있는 요청이 있을 수 있으며 개인일 경우도 이와 비슷한 처분이 내려질 수 있다.
이러한 끔직한 불이익을 당하지 않기 위해서는 OSS를 사용시 자신이 어떠한 OSS를 사용하고 있고 사용중인 OSS에 어떠한 라이선스가 적용되었는지 파악 및 관리를 해야 한다. 자신의 프로젝트에 사용되고 있는 OSS의 라이선스를 파악하기 위해서는 개발 초기 단계부터 프로젝트에 사용중인 OSS의 홈페이지를 방문하여 어떠한 라이선스가 적용되어 있고 해당 라이선스에 어떠한 규약들이 적용되어 있는지 확인하고 관리하는 것이 가장 좋은 방법이다. 하지만 이렇게 사용자가 하나하나 코드 및 파일 레벨에서 직접 확인 할 경우 많은 시간이 투자되어지며 사람이 직접 확인하다 보니 실수로 잘못 확인 할 수 도 있다. 이러한 실수를 피하기 위해서는 OSS 라이선스를 확인할 수 있는 자동화 도구를 활용하는 방법이 있다. 도구 중 상용제품 중에는 Blackduck (http://www.blackducksoftware.com)의 Protex라는 제품이 있으며 이 제품은 코드 비교, 문자 검색, 의존성 검색 등 OSS를 분석할 수 있는 도구 중 가장 뛰어난 정확성과 기능을 제공하는 제품이지만 구매 가격이 높아 개인이 사용하기에는 무리가 있다. 이외 상용제품으로는 Palamida(http://www.palamida.com)와 Protecode(http://www.protecode.com) 등이 있다. 상용제품에 비해 기능은 떨어지지만 공개소프트웨어로 이와 같은 목적으로 만들어진 fossology(http://www.fossology.org)라는 제품이 있으며 이 도구는 HP에서 개발하였으며 GPL 라이선스가 적용되었다. 이 도구는 현재 공개가 되어 누구나 이용할 수 있으며 도구의 소스코드 또한 다운이 가능하다. 이외 바이너리리를 검사할 수 있는 Binary Analysis(http://www.binaryanalysis.org/en/home)라는 도구가 있으며 이 도구 또한 누구나 이용할 수 있다. 다만 이 도구는 코드를 분석하는 것이 아닌 바이너리 레벨에서 분석하는 도구이다.
다음 세션부터는 검사도구 중 오픈되어 있는 fossology의 설치환경, 설치방법, 사용방법에 대해서 기술 할 것이다. 이를 참고하여 자신이 사용하고 있는 OSS가 어떠한 라이선스하에 배포되고 있는지 확인, 관리, 사용, 배포하기를 바란다.
2. 설치 과정
아래의 설정 값들은 이 글에서 테스트 되어지는 장비에 맞춰진 설정 값이다. 각각의 설정 값은 사용되는 장비에 따라 달라 질 수 있으며 자세한 설정 값은 각 패키지들의 문서를 참조하기 바란다.
a. OS 종류를 먼저 확인 후 OS를 설치한다.
사용되어진 OS는 Ubuntu karmic koala 9.10 이다. CentOS, Fedora등 다른 리눅스 계열에서도 fossology의 설치가 가능하지만 fossology는 우분투(karmic koala 9.10)에서 패키지형식으로 설치 지원이 되어 손쉽게 설치할 수 있다. OS 설치와 관련되어진 자세한 사항은 OS 설치관련 다른 문서를 참고하기를 바란다.
* 테스트 되어진 Ubuntu karmic koala 9.10 를 다운 받을 수 있는 주소는 다음과 같다.
http://old-releases.ubuntu.com/releases/karmic/
b. OS설치 후 apt-get를 통해 fossology를 설치한다.
# apt-get install fossology
위를 입력하면 fossology를 실행하는데 필요한 패키지(php5, apache2, postgresql 8.3, lib* 등)들이 자동 설치된다.
c. fossology를 설치 한 후 각 설정 파일들을 수정한다.
다음을 Command Line에 입력 한다.
# echo 512000000 > /proc/sys/kernel/shmmax
# echo "kernel.shmmax=512000000" >> /etc/sysctl.conf
d. /etc/postgresql/<version>/main/postgresql.conf 파일을 열어 다음 설정 값들을 수정한다.
#hba_file = 'ConfigDir/pg_hba.conf'# host-based authentication file
#ident_file = 'ConfigDir/pg_ident.conf'# IDENT configuration file
#external_pid_file = '(none)'# write an extra pid file
listen_addresses = '*'
max_connections = 50
#shared_buffers = 1000# min 16 or max_connections*2, 8KB each
shared_buffers = 32768
work_mem = 102400
max_fsm_pages = 100000# min max_fsm_relations*16, 6 bytes each
fsync = off
full_page_writes = off#recover from partial page writes
commit_delay = 1000
effective_cache_size = 25000
log_min_duration_statement = -1# -1 is disabled, 0 logs all statements
log_line_prefix = '%t %h %c'# prepend a time stamp to all log entries
e. /etc/php5/apache2/php.ini 파일을 열어 다음 설정 값들을 수정한다.
max_execution_time = 90
memory_limit = 702M
post_max_size = 701M
upload_max_filesize = 700M
f. /etc/apache2/sites-available/defualt 파일을 열어 다음과 같이 수정한다.
Alias /repo/ /usr/share/fossology/www/
<Directory "/usr/share/fossology/www/">
AllowOverride None
Options followSymLinks MultiViews
Order allow,deny
Allow from all
# uncomment to turn on php error reporting
#php_flag display_errors on
#php_value error_reporting 2039
</Directory>
g. /usr/share/cups/doc-root/robots.txt 파일을 열어 다음과 같이 수정 한다.
User-agent: *
Disallow: /repo
h. 모든 설정 파일의 수정 후 다음을 실행 한다.
# etc/init.d/apache2 stop
# etc/init.d/apache2 start
# etc/init.d/postgresql8.3 stop
# etc/init.d/postgresql8.3 start
# etc/init.d/fossology stop
# etc/init.d/fossology start
i. 브라우저를 열어 다음 정보를 이용하여 설치되어진 fossology에 접속한다.
Account는 Defualt 되어진 설정 값이다.
Address : http://127.0.0.1/repo/
ID : fossy
PW :fossy
3. 사용방법
- 로그인 후의 첫 화면은 다음과 같이 매우 심플하다.
|
위에서 보는 바와 같이 각 메뉴의 기능이 어떠한 기능이지 도저히 감이 오질 않는다.
어떠한 메뉴를 사용하여 어떻게 파일들을 검증을 하는지 다음을 통해 확인하자.
■ Project 생성 및 분석 방법
- Upload 메뉴를 보면 검증할 대상이 되는 파일들을 선택할 수 있다. fossology가 설치되어진 서버 안의 폴더나 URL을 입력하여 온라인으로 파일을 가져와 분석할 수 있다.
다음은 Upload > Upload from Server 메뉴를 클릭하여 서버에 저장되어 있는 파일을 가져오기 위한 설정 내용이다.
각 메뉴에 대한 설명은 다음과 같다.
> Select the folder for storing the upload : 소스코드 업로드 시 카테고리를 구분 짓기 위해 사용되는 메뉴이다.
> Select the directory or files(s) on the server to upload : 검증 대상이 되는 소스코드의 위치를 입력하는 메뉴이다.
> Files can be placed in alphabetized sub-folders for organization(옵션) : 분석 후 분석 대상이 되는 폴더 아래의 폴더를 알파벳 별로 정렬할 것인지에 대한 옵션이다.
> Enter a description for this Upload (옵션) : 업로드 되어지는 프로젝트에 대한 설명을 기입하는 곳이다.
> Enter a viewable name for this Upload (옵션) : 업로드 되어지는 프로젝트의 이름을 설정하는 곳이다.
> Select optional analysis : 분석되어지는 대상에 대한 옵션을 설정하는 곳이다.
위의 설정을 끝내고 Upload를 클릭하면 분석이 시작된다.
- 분석은 바로 실행이 되지 않고 다음과 같이 Queue에 따라 실행이 되며 Jobs 메뉴에서 다음과 같이 분석되어지는 과정을 확인할 수 있다.
위에서 보는 바와 같이 각 색상 별로 작업 되어지는 순서를 알 수 있다.
위의 노란색은 | |
| | | | | | | |