리비아당은 Yang 데이터 모델링 언어 파서 및 툴킷 작성 (및 API 제공)입니다. 라이브러리는 LibnetConf2, Netopeer2 또는 Sysrepo 프로젝트에 사용됩니다.
이 프로젝트는 2 개의 주요 지점 master 및 devel 사용합니다. 다른 지점은 복제되어서는 안됩니다. master 에는 마지막 공식 릴리스 파일이 있습니다. 최소한 간단히 테스트 된 최신 개선 및 변경 사항은 devel 간단히 설명됩니다. 새로운 릴리스 마다 devel master 로 병합됩니다.
이는 안정적인 공식 릴리스 만 사용될 때 master 사용하거나 특정 릴리스를 다운로드 할 수 있음을 의미합니다. 모든 최신 버그 픽스를 적용 해야하는 경우 devel 분기가 사용됩니다. 새로운 문제가 생성 되고 master 브랜치에서 발생할 때마다 첫 번째 응답은 추가 지원을 제공하기 전에 devel 사용하는 것일 수 있습니다 .
문서와 섹션 Transition Manual 살펴보십시오. 기본 마이그레이션 및 프로젝트 컴파일 기능에 도움이됩니다. 그러나 실제로 새로운 기능을 사용하려면 전체 문서와 API를 읽어야합니다.
현재 구현은 Yang 1.0 (RFC 6020)과 Yang 1.1 (RFC 7950)을 다룹니다.
최신 릴리스의 이진 RPM 또는 DEB 패키지는 apkg 사용하여 로컬로 구축 할 수 있으며 distro 에서 README 살펴보십시오.
pthreads-win32direntdlfcn-win32getopt-win32 Windows 버전은 플러그인을 지원하지 않으며 yanglint 비 결과 모드에서만 작동합니다. Windows에서는 모든 양 날짜 및 시간 값이 먼저 UTC로 변환 된 다음 (TZ 오프셋이 지정된 경우) "지정되지 않은 시간대"로 반환됩니다.
$ mkdir build; cd build
$ cmake ..
$ make
# make install
CC 변수 설정 :
$ CC=/usr/bin/clang cmake ..
라이브러리, 헤더 및 기타 파일이 설치된 접두사를 변경하려면 CMAKE_INSTALL_PREFIX 변수를 설정하십시오.
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
기본 접두사는 /usr/local 입니다.
두 가지 빌드 모드가 있습니다.
Debug 모드는 현재 기본 모드로 사용됩니다. Release 모드로 전환하려면 명령 줄에 입력하십시오.
$ cmake -D CMAKE_BUILD_TYPE:String="Release" ..
Yang Extensions와 관련하여 Libyang은 확장 플러그인을로드 할 수 있습니다. 기본적으로 플러그인을 저장하는 디렉토리는 Libdir/Libyang입니다. 변경하려면 원하는 디렉토리를 지정하는 값과 함께 다음 CMake 옵션을 사용하십시오.
$ cmake -DPLUGINS_DIR:PATH=`pwd`"/src/extensions/" ..
디렉토리 경로는 환경 변수를 통해 런타임을 변경할 수도 있습니다.
$ LIBYANG_EXTENSIONS_PLUGINS_DIR=`pwd`/my/relative/path yanglint
플러그인은 Windows에서 사용할 수 없습니다.
스키마의 최신 개정이로드 될 때마다 (특정 개정없이 가져 오기) 처음으로 표준 방식으로 수행됩니다. 기본적으로 동일한 스키마의 최신 개정이 필요한 경우 매번로드 된 스키마가 재사용됩니다. 이것이 문제를 일으킬 수 있다는 것을 알고 있다면 스키마의 최신 가용 개정이 작동 중에 변경 될 수 있음을 의미합니다. Libyang은 항상 다음과 같이 스키마를 검색하도록 강요 할 수 있습니다.
$ cmake -DENABLE_LATEST_REVISIONS=OFF ..
CMAKE를 사용하면 CMAKE를 이미 실행 한 후 컴파일러 또는 해당 옵션을 변경하려면 먼저 캐시를 지우려면 가장 간단한 방법은 '빌드'디렉토리에서 모든 컨텐츠를 제거하는 것입니다.
모든 리비아당 기능은 메인 헤더를 통해 사용할 수 있습니다.
#include <libyang/libyang.h>
리비아랑과 함께 프로그램을 컴파일하려면 다음 링커 매개 변수를 사용하여 리비아랑과 연결해야합니다.
-lyang
라이브러리 설치 후 ldconfig(8) 호출하고 라이브러리를 비표준 경로에 설치 한 경우 리비아랑으로가는 경로를 링커에 지정해야합니다. 모든 컴파일러의 옵션을 설정하는 데 도움을주기 위해 소스 트리에는 pkg-config(1) libyang.pc 파일)이 있습니다. 파일은 라이브러리에 설치됩니다.
cmake 에서 You Project를 사용하는 경우 제공된 FindLibYANG.cmake 파일을 사용하여 시스템에서 리비아당 라이브러리의 존재를 감지 할 수도 있습니다.
이 프로젝트에는 다른 언어에 직접 구속력이 없지만 별도로 사용할 수 있습니다.
리비아당 프로젝트에는 Schemas 및 Yang 모델링 데이터의 검증 및 변환을위한 yanglint(1) 라는 기능이 풍부한 도구가 포함되어 있습니다. 소스 코드는 /tools/lint 에 위치하고 있으며 응용 프로그램이 리비아어 라이브러리를 사용하는 방법을 탐색하는 데 사용될 수 있습니다. yanglint(1) 바이너리 및 Man Page는 라이브러리 자체와 함께 설치됩니다.
yanglint 사용하는 몇 가지 예를 설명하는 Readme도 있습니다.
리비아랑에는 Cmocka로 구축 된 여러 테스트가 포함되어 있습니다. 테스트는 tests 하위 디렉토리에서 찾을 수 있으며 코드 변경 후 라이브러리 기능을 확인하도록 설계되었습니다. 이전에 충돌을 일으킨 퍼지 입력 코퍼스로 수행 된 추가 회귀 테스트가 수행되었습니다. 이들은 tests/fuzz 로 제공되며 CMOCHA 장치 테스트를 통해 자동으로 구축됩니다.
테스트는 기본적으로 Debug 빌드 모드에서 실행하여 내장되었습니다.
$ make
Release 모드의 경우 테스트는 기본적으로 구축되지 않았지만 (추가 종속성이 필요합니다) CMAKE 옵션을 통해 활성화 할 수 있습니다.
$ cmake -DENABLE_TESTS=ON ..
시스템에 필요한 CMOCKA 헤더가 존재하지 않으면 경로가 포함되어 있지 않으면 빌드 모드 또는 CMAKE 옵션에도 불구하고 테스트를 사용할 수 없습니다.
테스트는 Make test Target에서 실행할 수 있습니다.
$ make test
Yang 인스턴스 데이터 작업의 일반적인 사용 사례를 실행하는 데 필요한 시간에 대한 정보를 인쇄하는 성능 측정 도구가 포함되어 있습니다.
이 테스트를 활성화하려면 옵션을 사용하고 대표적인 결과를 얻으려면 릴리스 빌드 유형을 활성화하십시오.
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PERF_TESTS=ON ..
출력 실행을 보면서 테스트를 실행합니다.
$ make
$ ctest -V -R ly_perf
실행되는 테스트를 기반으로 코드 커버리지 보고서를 생성 할 수 있습니다. 그러나 보고서를 생성하려면이 명령이 필요합니다.
$ cmake -DENABLE_COVERAGE=ON ..
$ make
$ make coverage
여러 Yang 퍼지 대상 및 퍼징 지침은 tests/fuzz 디렉토리에서 제공됩니다.
모든 대상은 LLVM의 libfuzzer 및 AFL로 퍼지 될 수 있으며 새로운 목표를 쉽게 추가 할 수 있습니다. AFL (https://asciinema.org/a/311060) 및 Libfuzzer (https://asciinema.org/a/311035)에 대한 퍼지 설정을 설명하는 Asciinema 예제를 사용할 수 있습니다.