О сборке deb пакетов или как не превратить дебиан в свалку

Debian - весьма стабильная система, однако за это нужно расплачиваться весьма не новыми пакетами в репозитории. Возникла у меня мысль использовать clang для парсинга C++ кода, т.е. воспользоваться python bindings, которые есть в clang 3.2. Clang 3.2 нет в репозитории, поэтому нужно собирать вручную.
Сборка проекта с помощью всем известных ./configure && make && make install несет в себе опасность. После make install мы получим бинарники раскиданные по всей системе, о которых не знает пакетный менеджер - в будущем проблемы обеспечены. Кроме того, если потребуется снова собрать приложение, то это потребует времени (llvm + clang собирались на моем уютном ноутбуке около 1.5 часа).
Решить все эти проблемы можно, собрав аккуратненький deb-пакет. В этом нам поможет утилита checkinstall, которой весьма просто пользоваться.
Настраиваем сборку с помощью ./configure. Здесь будет полезно установить префикс, т.к. многие приложения лезут в /usr/local, но удобнее работать с /usr:
 ./configure --prefix=/usr 
Затем собираем утилитой make:
 make
На последнем шаге, вместо make install воспользуемся checkinstall. По-хорошему, достаточно вызова sudo checkinstall, но в дебиане недостаточно новая версия утилиты, и это вызовет ошибку при создании директории в /usr:
  /bin/mkdir: cannot create directory `/usr/share/llvm': No such file or directory 
Костыль для дебиана:
 sudo checkinstall -D --fstrans=no --install=yes   
Checkinstall задаст несколько вопросов: хорошим тоном будет указать описание, указать себя в качестве мейнтейнера, зависимости и т.д.
После работы утилиты будем иметь deb-пакет, причем он будет уже установлен. В будущем такой пакет можно установить через dpkg -i package-name.deb.

Leave a Reply

Технологии Blogger.