Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

Conan

Контекст Conan — пакетный менеджер для C/C++ (Python‑based). В отличие от голой связки CMake + системный apt, Conan хранит декларацию зависимостей в conanfile.txt/conanfile.py, фиксирует точные версии и опции сборки в conan.lock и оперирует устойчивой идентичностью пакета вида openssl/3.2.1#<recipe_revision>:<package_id>. Это редкий для мира C/C++ случай, когда состав ПО объявлен машиночитаемо.

Для чего

Conan управляет внешними C/C++ зависимостями: разрешает граф requires, скачивает или собирает бинарные пакеты под конкретный профиль (компилятор, архитектура, build_type) и отдаёт сборочной системе пути к заголовкам и библиотекам. Для SCA важно, что он даёт то, чего обычно нет в legacy‑C/C++: воспроизводимый список компонентов с версиями и каноническим ключом пакета, пригодным для нормализации в PURL.

Как применяют

Граф зависимостей с точными ревизиями и опциями:

conan graph info . --format=json > graph.json
conan lock create .            # фиксирует conan.lock

Идентичность пакета в выводе: openssl/3.2.1@_/_#a1b2... :da39a3ee... (recipe revision + package_id). Это нормализуется в PURL:

pkg:conan/openssl@3.2.1?rrev=a1b2c3&prev=d4e5f6

SBOM в CycloneDX штатно генерируется CycloneDX‑deployer'ом (в составе расширений Conan):

conan install . --deployer-package=* --format=json   # + cyclonedx-генерация поверх графа

Сильные стороны

Ограничения

Offline / on-premise

Да. Conan работает с приватным remote (conan remote add <name> <url>), пакеты и рецепты кешируются локально (~/.conan2); возможен полностью закрытый контур с зеркалом ConanCenter во внутреннем репозитории артефактов. Сам Conan ставится из колеса Python и не требует обращения наружу при наличии заполненного локального кеша.

Связанные темы

М09 C/C++ legacy · М05 Генерация SBOM · П21. Conan graph и package identity · П24. PURL нормализация и private qualifiers · П31. Пилот CodeScoring make CMake qmake · CMake · vcpkg · Package URL