2015-05-24 3 views
0

Я пытаюсь создать пакет deb, используя cpack. Но из-за ошибки в cpack он создает файл «md5sums» с неправильными разрешениями, и я получаю предупреждение при установке пакета deb с помощью программного центра. У меня есть скрипт, который изменит разрешения файла из пакета deb. Но я смущен тем, как автоматически запускать сценарий после создания пакета.запустить сценарий после создания пакета deb с помощью cpack

ответ

0

Вы можете использовать пост-скрипт установки, как это:

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_NAME}/contrib/postinst;") 
+0

вы поняли, это не так ... я хотел изменить разрешение файла внутри пакета ... например, сам скрипт postint – nithin

+0

Команда INSTALL CMake имеет параметр PERMISSIONS - он определяет разрешения для установленных файлов. Как вы решили проблему? –

+0

нет, мы не можем указать разрешения, потому что этот файл создается cpack iteslf – nithin

0

Я использовал следующий метод

использовал скрипт, который имеет следующее содержание

#!/bin/sh 
set -e 
mkdir fix_up_deb 
dpkg-deb -x @[email protected] fix_up_deb 
dpkg-deb --control @[email protected] fix_up_deb/DEBIAN 
rm @[email protected] 
chmod 0644 fix_up_deb/DEBIAN/md5sums 
find -type d -print0 |xargs -0 chmod 755 
fakeroot dpkg -b fix_up_deb @[email protected] 
rm -rf fix_up_deb 

Затем сконфигурированный его с помощью

CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/debian/fixup_deb.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE) 

Затем запустите его один раз пакет построен с использованием (I havnt тестировал этот шаг)

add_custom_command(TARGET package POST_BUILD COMMAND bash fixup_deb.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 

Или запустить его вручную из каталога сборки

bash fixup_deb.sh