# 라이센스 검증 도구 사용법

Yocto 프로젝트에서 라이센스 관리는 필수적인 작업 중 하나이다. 여기서는 라이센스 검증 도구 사용법에 대해 설명한다.

#### 1. 라이센스 검증 개요

Yocto 프로젝트는 오픈 소스 소프트웨어를 사용할 때 라이센스 호환성을 관리하고 검증하는 도구를 제공한다. 이는 사용된 오픈 소스 라이센스가 프로젝트의 요구 사항과 호환되는지 확인하는 데 유용하다.

#### 2. 라이센스 검증 도구 설치

Yocto 프로젝트의 라이센스 검증 도구를 사용하려면 먼저 Yocto 빌드 환경을 설정해야 한다. Yocto 빌드 환경에 대한 자세한 설정 방법은 Yocto 공식 문서를 참조하라.

#### 3. 중요한 변수 및 설정

Yocto 프로젝트에서 라이센스 관리와 검증을 위해 사용되는 주요 변수는 다음과 같다:

* `LICENSE`: 각 레시피에 적용된 라이센스를 정의.
* `LIC_FILES_CHKSUM`: 라이센스 파일의 체크섬을 포함하여 라이센스 상태를 검증.
* `INHERIT += "license"`: 레시피에 라이센스 검증을 포함시키도록 함.

레시피 예시는 아래와 같다:

```bitbake
DESCRIPTION = "Example Recipe"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d41d8cd98f00b204e9800998ecf8427e"

SRC_URI = "http://example.com/source.tar.gz"
SRC_URI[md5sum] = "e99a18c428cb38d5f260853678922e03"
```

#### 4. 라이센스 검증 실행

라이센스 검증 도구는 `bitbake` 명령과 함께 사용된다. 예를 들어 특정 패키지의 라이센스를 검증하려면 다음 명령을 실행한다:

```sh
bitbake my-recipe -c do_populate_lic
```

이를 통해 빌드 과정에서 라이센스 파일을 확인하고 검증한다.

#### 5. 라이센스 보고서 생성

라이센스 검증 후 라이센스에 대한 종합적인 보고서를 생성할 수 있다. 이는 다음 명령으로 가능한다:

```sh
bitbake image -c populate_lic
```

이 명령은 `tmp/deploy/licenses` 디렉토리에 라이센스 파일과 요약 보고서를 생성한다.

#### 6. 라이센스 예외 처리

특정 라이센스가 허용되지 않거나 예외 처리해야 하는 경우, `conf/local.conf` 파일에 다음과 같은 설정을 추가한다:

```conf
LICENSE_FLAGS_WHITELIST += "commercial"
```

위 설정은 상용 라이센스 패키지를 사용할 수 있도록 허용한다.

#### 7. 문제 해결

라이센스 검증 과정에서 발생할 수 있는 일반적인 문제와 그에 대한 해결 방법은 다음과 같다:

* **파일 누락**: `LIC_FILES_CHKSUM` 변수에 정의된 파일이 존재하지 않으면 빌드가 실패한다. 이러한 경우 올바른 파일을 추가하거나 체크섬을 수정한다.
* **체크섬 불일치**: 라이센스 파일의 내용이 수정되면 체크섬이 달라질 수 있다. `md5sum` 명령을 사용하여 새로운 체크섬을 계산하고 `LIC_FILES_CHKSUM`을 업데이트 한다.

```sh
md5sum path/to/license/file
```

이를 통해 Yocto 프로젝트 내에서의 라이센스 관리와 검증 작업을 보다 효율적으로 수행할 수 있다. 마지막으로 요약과 함께 라이센스 검증 도구 사용의 장점을 정리하겠다.

#### 8. 요약 및 장점

라이센스 검증 도구를 활용하면 다음과 같은 이점을 얻을 수 있다:

1. **법적 위험 감소**: 라이센스 컴플라이언스를 보장하여 법적 문제를 미연에 방지할 수 있다.
2. **자동화된 검증**: 빌드 프로세스 중 자동으로 라이센스를 검증하여 관리의 편의성을 높인다.
3. **종합적인 보고서**: 라이센스 상태를 한눈에 파악할 수 있는 종합적인 보고서를 제공한다.
4. **유연한 설정**: 다양한 라이센스 규칙을 설정하고 관리할 수 있어 프로젝트의 요구 사항에 맞게 조정이 가능한다.
5. **개발자에게 도움**: 명확한 라이센스 정보 제공으로 개발자들이 사용하는 오픈 소스 소프트웨어의 라이센스를 쉽게 이해하고 준수할 수 있다.
