Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

control directory has bad permissions 750 (must be >=0755 and <=0775) #419

Closed
taylorleese opened this issue Nov 26, 2014 · 10 comments
Closed

Comments

@taylorleese
Copy link

I'm currently running into the issue below. This seems to happen with a clean workspace in Jenkins. Any idea if I am doing something wrong or if this is a bug? I'm using Play 2.2.3 and the native packager 1.0.0-M1.

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.3" exclude("com.typesafe.sbt", "sbt-native-packager"))

// sbt Native Packager plugin
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0-M1")
[info] Building debian package with native implementation
[error] dpkg-deb: error: control directory has bad permissions 750 (must be >=0755 and <=0775)
java.lang.RuntimeException: Failure packaging debian file.  Exit code: 2
    at scala.sys.package$.error(package.scala:27)
    at com.typesafe.sbt.packager.debian.DebianNativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:91)
    at com.typesafe.sbt.packager.debian.DebianNativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:85)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
[error] (debian:packageBin) Failure packaging debian file.  Exit code: 2
@taylorleese
Copy link
Author

It looks like the same issue exists with version 0.7.6 as well.

@muuki88
Copy link
Contributor

muuki88 commented Nov 27, 2014

Can you post your build.sbt and the commands you issue?

@taylorleese
Copy link
Author

Command:
sbt clean debian:package-bin

build.sbt:

packageArchetype.java_server

packageSummary := "My service."

packageDescription := (packageSummary in Debian).value

maintainer := "Taylor Leese <tleese22@gmail.com>"

serverLoading := ServerLoader.Upstart

daemonUser := name.value

daemonGroup := (daemonUser in Debian).value

version := sys.props.get("deb-version").getOrElse(version.value)

@taylorleese
Copy link
Author

@muuki88 Any idea what might be going wrong here?

@muuki88
Copy link
Contributor

muuki88 commented Dec 9, 2014

Sorry, I didn't had time to take a closer look. Hopefully I will this week :-)

@muuki88
Copy link
Contributor

muuki88 commented Dec 9, 2014

Okay. So first to your build.sbt. If you are using play, you shouldn't add the packageArchetype.java_server yourself as play changes some of the mappings you override these by reapplying the settings. However I couldn't reproduce the error with or without this setting.

I tried to reproduce the error, but wasn't able to. What I did

1. Created activator template

activator new play-scala

2. SBT Version 0.13.7

Changed build.properties => sbt.version=0.13.7

3. Changed plugins.sbt

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.3" exclude("com.typesafe.sbt", "sbt-native-packager"))

// sbt Native Packager plugin - USING VERSION M3
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0-M3")

4. Changed build.sbt

import com.typesafe.sbt.packager.archetypes.ServerLoader

enablePlugins(JavaServerAppPackaging)

packageSummary := "My service."

packageDescription := (packageSummary in Debian).value

maintainer := "Taylor Leese <tleese22@gmail.com>"

serverLoading := ServerLoader.Upstart // this is the default for debian anyway

daemonUser := name.value

daemonGroup := (daemonUser in Debian).value

version := sys.props.get("deb-version").getOrElse(version.value)

5. Build debian package

Everything work.

Still, I'm not sure if play 2.2.x works well with the 1.0.x branch.

@taylorleese
Copy link
Author

@muuki88 Hmm, I'm still receiving the same error. The good news is universal packaging works fine so I'm just going to use that.

@muuki88
Copy link
Contributor

muuki88 commented Dec 12, 2014

Can you give me some details on your packaging system? Mine is

  • Ubuntu 14.04 x86_64
  • dpkg-deb version 1.17.5 (amd64)
  • java version "1.8.0_25"

@taylorleese
Copy link
Author

@muuki88 Actually, I just realized the error changed when I removed the java_server definition. This is with name := "expert" and version := 1.0.

[info] Building debian package with native implementation
java.io.IOException: Cannot run program "fakeroot" (in directory "/Users/taylor/code/expert/target/expert-1.0"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at sbt.SimpleProcessBuilder.run(ProcessImpl.scala:349)
    at sbt.AbstractProcessBuilder.run(ProcessImpl.scala:128)
    at sbt.AbstractProcessBuilder$$anonfun$runBuffered$1.apply(ProcessImpl.scala:159)
    at sbt.AbstractProcessBuilder$$anonfun$runBuffered$1.apply(ProcessImpl.scala:159)
    at sbt.BufferedLogger.buffer(BufferedLogger.scala:25)
    at sbt.AbstractProcessBuilder.runBuffered(ProcessImpl.scala:159)
    at sbt.AbstractProcessBuilder.$bang(ProcessImpl.scala:156)
    at com.typesafe.sbt.packager.debian.NativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:74)
    at com.typesafe.sbt.packager.debian.NativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:70)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:184)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
    at sbt.SimpleProcessBuilder.run(ProcessImpl.scala:349)
    at sbt.AbstractProcessBuilder.run(ProcessImpl.scala:128)
    at sbt.AbstractProcessBuilder$$anonfun$runBuffered$1.apply(ProcessImpl.scala:159)
    at sbt.AbstractProcessBuilder$$anonfun$runBuffered$1.apply(ProcessImpl.scala:159)
    at sbt.BufferedLogger.buffer(BufferedLogger.scala:25)
    at sbt.AbstractProcessBuilder.runBuffered(ProcessImpl.scala:159)
    at sbt.AbstractProcessBuilder.$bang(ProcessImpl.scala:156)
    at com.typesafe.sbt.packager.debian.NativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:74)
    at com.typesafe.sbt.packager.debian.NativePackaging$$anonfun$debianNativeSettings$4.apply(NativePackaging.scala:70)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
[error] (debian:packageBin) java.io.IOException: Cannot run program "fakeroot" (in directory "/Users/taylor/code/expert/target/expert-1.0"): error=2, No such file or directory

@muuki88
Copy link
Contributor

muuki88 commented Dec 12, 2014

Yep, you need fakeroot in order to build a debian package

@muuki88 muuki88 closed this as completed Dec 12, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants