2015-02-08 2 views
0

У меня есть приложение Play сервера.Как создать deb с настраиваемым макетом

В настоящее время у меня есть 20 строки Баш скрипт, который создает этот Деб:

/srv 
    /foo 
    /conf 
     <unmanaged resources> 
    /staged 
     <jars> 

Я хотел бы использовать SBT родной упаковщик для создания этого.

В настоящее время sbt debian:package-bin дает мне

etc/ 
    default/ 
    foo 
    foo 
    init/ 
    foo.conf 
usr/ 
    bin/ 
    foo 
    share/ 
    foo/ 
     bin/ 
     foo 
     conf/ 
     <unmanaged resources> 
     lib/ 
     <jars> 
     share/ 
     doc/ 
      api/ 
      <docs> 
     logs 
     README 
var/ 
    log/ 
    foo/ 

Как я могу получить нужный мне макет? Нужно ли мне реализовать archetype?

Я использую SBT 0.13.7 и SBT native packager 1.0.0-M1.

ответ

2

Если ваш макет близок к уже созданному, вы можете использовать настройки, такие как defaultLinuxInstallLocation и defaultLinuxConfigLocation.

Или изменить linuxPackageSymlinks и linuxPackageMappings непосредственно, что-то вроде

linuxPackageSymlinks := Seq(), 
    linuxPackageMappings := { 
     val libPath = "/srv/foo/staged" 
     val libs = scriptClasspathOrdering.value.map { case (file, classpath) => 
     file -> classpath.replaceFirst("^lib", Matcher.quoteReplacement(libPath)) 
     } 
     Seq(LinuxPackageMapping(libs)) 
     // plus configuration 
    }, 

Если у вас есть много бинарных файлов в архив (то есть у вас есть много зависимостей), debian:packageBin является довольно медленным. Для отладки рассмотрите возможность использования debianExplodedPackage.

Кроме того, знайте, что все, что находится в каталоге debianExplodedPackage, будет включено в архив, поэтому, если в конце есть дополнительные файлы в .deb, вам может понадобиться удалить этот каталог.

Смежные вопросы