首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能从与jenkins服务相同的文件中提供scala/sbt

不能从与jenkins服务相同的文件中提供scala/sbt
EN

Stack Overflow用户
提问于 2015-11-27 08:23:06
回答 2查看 545关注 0票数 0

我对木偶很陌生,所以如果这是个愚蠢的问题,请原谅我。我找不到类似的问题。

下面是我要做的事情:我使用迷航器和使用詹金斯-木偶模块的傀儡提供一个jenkins环境。到目前一切尚好。我可以创建一个主程序,我可以使用群集插件轻松地使用模块中的jenkins::slave包创建一个从服务器

代码语言:javascript
复制
class { 'jenkins::slave':
    masterurl => 'http://jenkins-master-url:8080',
    version => "2.0",
    slave_mode => "exclusive",
    labels => "scala sbt"
}

但是,我需要scala和sbt在这个奴隶上,这就是我遇到问题的地方。安装工程良好使用

代码语言:javascript
复制
package { "openjdk": name => "openjdk-7-jre" }
## SBT
wget::fetch { "download sbt":
    source => "https://dl.bintray.com/sbt/debian/sbt-0.13.2.deb",
    destination => "/tmp/sbt-0.13.2.deb",
    cache_dir => "/vagrant/cache/"
}
package { "sbt":
    provider => "dpkg",
    source => "/tmp/sbt-0.13.2.deb",
    require => [ File["/tmp/sbt-0.13.2.deb"], Package["scala"] ]
}

file_line { "sbt options":
    path => "/etc/environment",
    line => "SBT_OPTS=\"-Xms40M -Xmx2G -Xss2M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1G -Djavax.net.ssl.trustStore=cacerts -Djavax.net.ssl.trustStorePassword=********\"",
    match => "^SBT_OPTS"
}

## SCALA
wget::fetch { "download scala":
    source => "http://www.scala-lang.org/files/archive/scala-2.10.3.deb",
    destination => "/tmp/scala-2.10.3.deb",
    cache_dir => "/vagrant/cache/"
}

package { "libjansi-java": }
package { "scala":
    provider => "dpkg",
    source => "/tmp/scala-2.10.3.deb",
    require => [ File["/tmp/scala-2.10.3.deb"], Package["openjdk"], Package["libjansi-java"] ]
}'

但是,当我尝试从一个傀儡脚本运行这些命令时,它失败了,它告诉我缺少一个java6依赖项(已经与jenkins服务一起安装),并告诉我要运行apt-get -f install。当我对着机器做那件事时,它就成功了。

代码语言:javascript
复制
Error: Execution of '/usr/bin/dpkg --force-confold -i /tmp/scala-2.10.3.deb' returned 1: Selecting previously unselected package scala. ==> jenkins-slave: (Reading database ... 40786 files and directories currently installed.)
==> jenkins-slave: Preparing to unpack /tmp/scala-2.10.3.deb ...
==> jenkins-slave: Unpacking scala (2.10.3-400) ...
==> jenkins-slave: dpkg: dependency problems prevent configuration of scala:
==> jenkins-slave:  scala depends on openjdk-6-jre | java6-runtime; however:
==> jenkins-slave:   Package openjdk-6-jre is not installed.
==> jenkins-slave:   Package java6-runtime is not installed.
==> jenkins-slave:
==> jenkins-slave: dpkg: error processing package scala (--install):
==> jenkins-slave:  dependency problems - leaving unconfigured
==> jenkins-slave: Processing triggers for man-db (2.7.0.2-5) ...
==> jenkins-slave: Errors were encountered while processing:
==> jenkins-slave:  scala
==> jenkins-slave: Error: /Stage[main]/Main/Node[jenkins-slave]/Package[scala]/ensure: change from purged to present failed: Execution of '/usr/bin/dpkg --force-confold -i /tmp/scala-2.10.3.deb' returned 1: Selecting previously unselected package scala.
==> jenkins-slave: (Reading database ... 40786 files and directories currently installed.)
==> jenkins-slave: Preparing to unpack /tmp/scala-2.10.3.deb ...
==> jenkins-slave: Unpacking scala (2.10.3-400) ...
==> jenkins-slave: dpkg: dependency problems prevent configuration of scala:
==> jenkins-slave:  scala depends on openjdk-6-jre | java6-runtime; however:
==> jenkins-slave:   Package openjdk-6-jre is not installed.
==> jenkins-slave:   Package java6-runtime is not installed.
==> jenkins-slave:
==> jenkins-slave: dpkg: error processing package scala (--install):
==> jenkins-slave:  dependency problems - leaving unconfigured
==> jenkins-slave: Processing triggers for man-db (2.7.0.2-5) ...
==> jenkins-slave: Errors were encountered while processing:
==> jenkins-slave:  scala
==> jenkins-slave: Notice: /Package[sbt]: Dependency Package[scala] has failures: true
==> jenkins-slave: Warning: /Package[sbt]: Skipping because of failed dependencies
==> jenkins-slave: Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install openjdk-7-jdk' returned 100: Reading package lists...
==> jenkins-slave: Building dependency tree...
==> jenkins-slave: Reading state information...
==> jenkins-slave: You might want to run 'apt-get -f install' to correct these:
==> jenkins-slave: The following packages have unmet dependencies:
==> jenkins-slave:  openjdk-7-jdk : Depends: openjdk-7-jre (= 7u91-2.6.3-1~deb8u1) but it is not going to be installed
==> jenkins-slave:                  Recommends: libxt-dev but it is not going to be installed
==> jenkins-slave:  scala : Depends: openjdk-6-jre but it is not installable or
==> jenkins-slave:                   java6-runtime
==> jenkins-slave: E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
==> jenkins-slave: Error: /Stage[main]/Java/Package[java]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install openjdk-7-jdk' returned 100: Reading package lists...
==> jenkins-slave: Building dependency tree...
==> jenkins-slave: Reading state information...
==> jenkins-slave: You might want to run 'apt-get -f install' to correct these:
==> jenkins-slave: The following packages have unmet dependencies:
==> jenkins-slave:  openjdk-7-jdk : Depends: openjdk-7-jre (= 7u91-2.6.3-1~deb8u1) but it is not going to be installed
==> jenkins-slave:                  Recommends: libxt-dev but it is not going to be installed
==> jenkins-slave:  scala : Depends: openjdk-6-jre but it is not installable or
==> jenkins-slave:                   java6-runtime
==> jenkins-slave: E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
==> jenkins-slave: Notice: /Stage[main]/Java::Config/Exec[update-java-alternatives]: Dependency Package[java] has failures: true
==> jenkins-slave: Warning: /Stage[main]/Java::Config/Exec[update-java-alternatives]: Skipping because of failed dependencies
==> jenkins-slave: Notice: /Stage[main]/Java/Anchor[java::end]: Dependency Package[java] has failures: true
==> jenkins-slave: Warning: /Stage[main]/Java/Anchor[java::end]: Skipping because of failed dependencies
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/User[jenkins-slave_user]/ensure: created
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/Exec[get_swarm_client]/returns: executed successfully
==> jenkins-slave: Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install daemon' returned 100: Reading package lists...
==> jenkins-slave: Building dependency tree...
==> jenkins-slave: Reading state information...
==> jenkins-slave: You might want to run 'apt-get -f install' to correct these:
==> jenkins-slave: The following packages have unmet dependencies:
==> jenkins-slave:  scala : Depends: openjdk-6-jre but it is not installable or
==> jenkins-slave:                   java6-runtime
==> jenkins-slave: E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
==> jenkins-slave: Error: /Stage[main]/Jenkins::Slave/Package[daemon]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install daemon' returned 100: Reading package lists...
==> jenkins-slave: Building dependency tree...
==> jenkins-slave: Reading state information...
==> jenkins-slave: You might want to run 'apt-get -f install' to correct these:
==> jenkins-slave: The following packages have unmet dependencies:
==> jenkins-slave:  scala : Depends: openjdk-6-jre but it is not installable or
==> jenkins-slave:                   java6-runtime
==> jenkins-slave: E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

但是,当我使用两个脚本(首先安装服务,然后不运行apt-get -f install)执行scala/sbt操作时,它就成功了。

来自两个文件的输出

代码语言:javascript
复制
==> jenkins-slave: Notice: Compiled catalog for jenkins-slave.jade.box in environment production in 1.97 seconds
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/File[/etc/default/jenkins-slave]/ensure: defined content as '{md5}fc9a0abb2cdd083b052e2a1ae747fc13' ==> jenkins-slave: Notice: /Stage[main]/Java/Package[java-common]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/File[/etc/init.d/jenkins-slave]/ensure: defined content as '{md5}dd82f282fd273568cdc22b7475a0ef0b'
==> jenkins-slave: Notice: /Stage[main]/Java/Package[java]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/User[jenkins-slave_user]/ensure: created
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/Exec[get_swarm_client]/returns: executed successfully
==> jenkins-slave: Notice: /Stage[main]/Timezone/File[/etc/timezone]/content: content changed '{md5}a1aea69cebd51fc6bebc02f7a550fbcf' to '{md5}6322bc8cb3ec53f5eea33201b434b74b'
==> jenkins-slave: Notice: /Stage[main]/Timezone/Exec[update_timezone]: Triggered 'refresh' from 1 events
==> jenkins-slave: Notice: /Stage[main]/Timezone/File[/etc/localtime]/ensure: ensure changed 'file' to 'link'
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/Package[daemon]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: /Stage[main]/Jenkins::Slave/Service[jenkins-slave]/ensure: ensure changed 'stopped' to 'running'
==> jenkins-slave: Notice: Finished catalog run in 46.95 seconds
==> jenkins-slave: Running provisioner: puppet...
==> jenkins-slave: Running Puppet with sbt-scala.pp...
==> jenkins-slave: stdin: isseconds not a tty
==> jenkins-slave: Warning: Config file /etc/puppet/hiera.yaml not found, using Hiera defaults
==> jenkins-slave: Notice: Compiled catalog for jenkins-slave.jade.box in environment production in 1.22 seconds
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/File_line[sbt options]/ensure: created
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Wget::Fetch[download sbt]/Exec[wget-download sbt]/returns: executed successfully
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Wget::Fetch[download sbt]/File[/tmp/sbt-0.13.2.deb]/ensure: defined content as '{md5}daa304595c0132c34b170b1e1a6b4044'
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Wget::Fetch[download scala]/Exec[wget-download scala]/returns: executed successfully
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Wget::Fetch[download scala]/File[/tmp/scala-2.10.3.deb]/ensure: defined content as '{md5}59f6ff95433df2105ed27dd77bb29a9e'
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Package[libjansi-java]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Package[scala]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: /Stage[main]/Main/Node[jenkins-slave]/Package[sbt]/ensure: ensure changed 'purged' to 'present'
==> jenkins-slave: Notice: Finished catalog run in 3.65 

基本上,我的问题是,这个错误意味着什么,从某个脚本中运行它在某种程度上是可能的吗?为了维护性和保持代码的整洁,我希望这样做。

我的这两个脚本的迷走片文件看起来像

代码语言:javascript
复制
config.vm.define "linux-slave" do |node|
    node.vm.box = "debian/jessie64"
    node.vm.hostname = "jenkins-slave.box"
    node.vm.network :private_network, ip: "172.28.128.12"

    node.vm.provider :virtualbox do |v|
        v.memory = 2048
        v.cpus = 2
    end

    node.vm.provision :shell, inline: "apt-get update && apt-get install -y puppet vim"
    node.vm.provision :puppet do |puppet|
        puppet.manifests_path = "jenkins-slave"
        puppet.module_path = ".modules"
        puppet.manifest_file = "default.pp"
        puppet.options = "--parser future"
    end

    node.vm.provision :puppet do |puppet|
        puppet.manifests_path = "jenkins-slave"
        puppet.module_path = ".modules"
        puppet.manifest_file = "sbt-scala.pp"
        puppet.options = "--parser future"
    end

end

我想去掉第二个node.vm.provision :puppet do |puppet| ... end部分。

这是木偶执行命令的顺序吗?我能用某种方式强迫你吗?

周围有木偶大师知道吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-27 09:03:27

安装告诉您需要安装Java才能将scala安装为依赖于1.6或更高版本

安装Java有许多不同的方法,但我建议使用木偶模块

票数 1
EN

Stack Overflow用户

发布于 2015-11-27 11:43:55

结果发现需求是不正确的,这里需要JDK。

代码语言:javascript
复制
package { "scala":
    provider => "dpkg",
    source => "/tmp/scala-2.10.3.deb",
    require => [ File["/tmp/scala-2.10.3.deb"], Package["openjdk"],    Package["libjansi-java"] ]
}'

最后,解决了需要文件的问题(如@Frédéric所述)

代码语言:javascript
复制
exec { "enable-jenkins-slave":
    command => "/bin/systemctl enable jenkins-slave",
    require => File['/etc/init.d/jenkins-slave'],
    before => Service["jenkins-slave"],
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33953042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档