Libyang เป็นตัวแยกวิเคราะห์ภาษาแบบจำลองข้อมูล Yang และชุดเครื่องมือที่เขียน (และให้ API) ใน C. ห้องสมุดถูกใช้เช่นใน LibnetConf2, Netopeer2 หรือโครงการ Sysrepo
โครงการใช้ 2 สาขา master และ devel สาขาอื่น ๆ ไม่ควรถูกโคลน ใน master มีไฟล์ของ การเปิดตัวอย่าง เป็นทางการครั้งล่าสุด การปรับปรุงและการเปลี่ยนแปลงล่าสุดใด ๆ ซึ่งได้รับการทดสอบอย่างน้อยก็พบได้ใน devel ในทุก รุ่น ใหม่ devel จะถูกรวมเข้ากับ master
ซึ่งหมายความว่าเมื่อมีการใช้งานอย่างเป็นทางการที่มีเสถียรภาพเท่านั้นอาจใช้ master หรือดาวน์โหลดเฉพาะ รุ่น เฉพาะ หากควรใช้ข้อผิดพลาดล่าสุดทั้งหมด devel Branch เป็นสิ่งที่ต้องใช้ โปรดทราบว่าเมื่อใดก็ตามที่ มีการสร้างปัญหาใหม่ และเกิดขึ้นในสาขา master ตอบสนองครั้งแรกน่าจะ ใช้ devel ก่อนที่จะให้การสนับสนุนเพิ่มเติม
ดูเอกสารและ Transition Manual ส่วน ที่ควรช่วยในการย้ายถิ่นฐานขั้นพื้นฐานและความสามารถในการรวบรวมโครงการ แต่เพื่อใช้ประโยชน์จากคุณสมบัติใหม่จำเป็นต้องอ่านเอกสารทั้งหมดและ API
การใช้งานปัจจุบันครอบคลุม Yang 1.0 (RFC 6020) เช่นเดียวกับ Yang 1.1 (RFC 7950)
Binary RPM หรือ DEB แพ็คเกจของรุ่นล่าสุดสามารถสร้างขึ้นได้ในพื้นที่โดยใช้ apkg ให้ดูที่ README ในไดเรกทอรี distro
pthreads-win32direntdlfcn-win32getopt-win32 เวอร์ชัน Windows ไม่รองรับปลั๊กอินและ yanglint ทำงานในโหมดที่ไม่โต้ตอบเท่านั้น บน Windows ค่าวันที่และเวลาของ Yang ทั้งหมดจะถูกแปลงเป็น UTC เป็นครั้งแรก (หากระบุ TZ Offset) จากนั้นกลับมาด้วย "เขตเวลาที่ไม่ระบุ"
$ 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" ..
สำหรับส่วนขยายของหยางลิเบียอนุญาตให้โหลดปลั๊กอินส่วนขยาย โดยค่าเริ่มต้นไดเรกทอรีเพื่อจัดเก็บปลั๊กอินคือ libdir/libyang หากต้องการเปลี่ยนให้ใช้ตัวเลือก CMake ต่อไปนี้ด้วยค่าที่ระบุไดเรกทอรีที่ต้องการ:
$ cmake -DPLUGINS_DIR:PATH=`pwd`"/src/extensions/" ..
เส้นทางไดเรกทอรีสามารถเปลี่ยนรันไทม์ผ่านตัวแปรสภาพแวดล้อมเช่น:
$ LIBYANG_EXTENSIONS_PLUGINS_DIR=`pwd`/my/relative/path yanglint
โปรดทราบว่าปลั๊กอินไม่สามารถใช้งานได้บน Windows
เมื่อใดก็ตามที่การแก้ไขล่าสุดของสคีมาควรจะโหลด (นำเข้าโดยไม่มีการแก้ไขเฉพาะ) มันจะดำเนินการในวิธีมาตรฐานเป็นครั้งแรก โดยค่าเริ่มต้นทุกครั้งที่จำเป็นต้องมีการแก้ไขล่าสุดของสคีมาเดียวกันการโหลดครั้งแรกจะถูกนำมาใช้ซ้ำ หากคุณรู้ว่าสิ่งนี้อาจทำให้เกิดปัญหาซึ่งหมายถึงการแก้ไขล่าสุดของสคีมาสามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการคุณสามารถบังคับให้ลิเบียค้นหาสคีมาใหม่ได้เสมอโดย:
$ cmake -DENABLE_LATEST_REVISIONS=OFF ..
โปรดทราบว่าด้วย CMake หากคุณต้องการเปลี่ยนคอมไพเลอร์หรือตัวเลือกหลังจากที่คุณใช้งาน CMake แล้วคุณต้องล้างแคชก่อน - วิธีที่ง่ายที่สุดในการทำคือการลบเนื้อหาทั้งหมดออกจากไดเรกทอรี 'build'
ฟังก์ชั่นทั้งหมดของลิเบียมีให้บริการผ่านส่วนหัวหลัก:
#include <libyang/libyang.h>
ในการรวบรวมโปรแกรมของคุณด้วยลิเบียจำเป็นต้องเชื่อมโยงกับลิเบียโดยใช้พารามิเตอร์ Linker ต่อไปนี้:
-lyang
หมายเหตุว่าอาจจำเป็นต้องเรียก ldconfig(8) หลังจากการติดตั้งไลบรารีและหากมีการติดตั้งไลบรารีลงในเส้นทางที่ไม่ได้มาตรฐานจะต้องระบุเส้นทางไปยังลิบี้ไปยัง Linker เพื่อช่วยในการตั้งค่าตัวเลือกของคอมไพเลอร์ทั้งหมดมีไฟล์ libyang.pc สำหรับ pkg-config(1) ที่มีอยู่ในแผนผังต้นทาง ไฟล์ถูกติดตั้งด้วยไลบรารี
หากคุณใช้ cmake ในโครงการของคุณก็เป็นไปได้ที่จะใช้ไฟล์ FindLibYANG.cmake ที่ให้ไว้เพื่อตรวจจับการมีอยู่ของไลบรารีลิเบียในระบบ
ไม่มีการเชื่อมโยงสำหรับภาษาอื่น ๆ โดยตรงในโครงการนี้ แต่มีให้แยกต่างหาก
โครงการลิเบียมีเครื่องมือมากมายที่เรียกว่า yanglint(1) สำหรับการตรวจสอบความถูกต้องและการแปลงข้อมูลแบบจำลอง Schemas และ Yang ซอร์สโค้ดอยู่ที่ /tools/lint และสามารถใช้เพื่อสำรวจว่าแอปพลิเคชันควรใช้ไลบรารีลิเบียอย่างไร yanglint(1) ไบนารีและหน้าผู้ชายได้รับการติดตั้งพร้อมกับห้องสมุดเอง
นอกจากนี้ยังมี readme อธิบายตัวอย่างของการใช้ yanglint
ลิเบียมีการทดสอบหลายครั้งที่สร้างด้วย CMOCKA การทดสอบสามารถพบได้ในไดเรกทอรีย่อย tests และได้รับการออกแบบมาสำหรับการตรวจสอบฟังก์ชั่นไลบรารีหลังจากการเปลี่ยนแปลงรหัส การทดสอบการถดถอยเพิ่มเติมที่ทำกับคลังข้อมูลของอินพุตฟัซซิ่งที่เกิดขึ้นก่อนหน้านี้เกิดขึ้น สิ่งเหล่านี้มีอยู่ใน tests/fuzz และสร้างขึ้นโดยอัตโนมัติด้วยการทดสอบหน่วย CMOCKA
การทดสอบนั้นถูกสร้างขึ้นโดยค่าเริ่มต้นในโหมด Debug โดยเรียกใช้
$ make
ในกรณีของโหมด Release ตัวการทดสอบจะไม่ถูกสร้างขึ้นโดยค่าเริ่มต้น (ต้องมีการพึ่งพาเพิ่มเติม) แต่สามารถเปิดใช้งานได้ผ่านตัวเลือก CMake:
$ cmake -DENABLE_TESTS=ON ..
โปรดทราบว่าหากส่วนหัว CMOCKA ที่จำเป็นไม่ได้อยู่ในระบบรวมถึงเส้นทางการทดสอบจะไม่สามารถใช้ได้แม้จะมีโหมดการสร้างหรือตัวเลือกของ CMAKE
การทดสอบสามารถดำเนินการโดยเป้าหมาย test ของ Make:
$ make test
มีเครื่องมือวัดประสิทธิภาพรวมอยู่ในการพิมพ์ข้อมูลเกี่ยวกับเวลาที่ใช้ในการดำเนินการกรณีการใช้งานทั่วไปของการทำงานกับข้อมูลอินสแตนซ์หยาง
ในการเปิดใช้งานการทดสอบนี้ให้ใช้ตัวเลือกและเพื่อรับผลลัพธ์ที่เป็นตัวแทนเปิดใช้งานการสร้างประเภทการสร้าง:
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PERF_TESTS=ON ..
และเพื่อเรียกใช้การทดสอบด้วยการดูการทำงานของมัน:
$ make
$ ctest -V -R ly_perf
จากการทดสอบการทำงานเป็นไปได้ที่จะสร้างรายงานการครอบคลุมรหัส แต่ต้องเปิดใช้งานและจำเป็นต้องมีคำสั่งเหล่านี้เพื่อสร้างรายงาน:
$ cmake -DENABLE_COVERAGE=ON ..
$ make
$ make coverage
มีเป้าหมายที่ฟัซซิงหลายหยางและคำแนะนำที่ฟัซซิ่งมีอยู่ในไดเรกทอรี tests/fuzz
เป้าหมายทั้งหมดสามารถฟัซซิงด้วย Libfuzzer และ AFL ของ LLVM และสามารถเพิ่มเป้าหมายใหม่ได้อย่างง่ายดาย ตัวอย่าง Asciinema ที่อธิบายการตั้งค่าฟัซซิ่งสำหรับทั้ง AFL (https://asciinema.org/a/311060) และ libfuzzer (https://asciinema.org/a/311035) มีให้บริการ