Jenkins 无法在 macOS 10.12 (Sierra) 上启动

Posted

技术标签:

【中文标题】Jenkins 无法在 macOS 10.12 (Sierra) 上启动【英文标题】:Jenkins does not start on macOS 10.12 (Sierra) 【发布时间】:2016-09-30 15:15:16 【问题描述】:

将我的 macOS 升级到 Sierra 后,当我使用 launchctl load 启动 Jenkins 时,我无法连接到 localhost:8080。如果我再次调用 launchctl load,我会看到响应“服务已加载”。默认位置 /var/log/jenkins/ 没有日志文件(在 jenkins-ci.plist 中设置)。我还尝试在那里创建 jenkins.log 并 chown 给 jenkins 用户,但那里仍然没有打印任何内容。

如果我尝试使用 java -jar jenkins.war 启动 Jenkins,我可以连接到 localhost,但 Jenkins 作为新安装运行。

我安装了最新的 JRE 1.8.0_102。

如何诊断问题?

【问题讨论】:

【参考方案1】:

似乎 Sierra 更改了 Jenkis 文件夹的权限。所以最好的解决办法是: 1.添加org.jenkins-ci.plist的执行权限:sudo chmod +x /Library/LaunchDaemons/org.jenkins-ci.plist 2.设置jenkins为/var/log/jenkins的所有者:sudo chown jenkins /var/log/jenkins 3. 启动 Jenkins:sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

【讨论】:

不错的一个。谢谢。一件小事是你不需要允许对每个人执行。允许它为所有者就足够了。所以 chmod u+x 就可以了。 很好,这很有帮助。唯一一件小事是詹金斯显然处于某种“部分运行”状态,所以我首先需要用“卸载”停止詹金斯(与步骤 3 相同,但用“卸载”而不是“加载”),然后按照所述执行第 3 步。 Jenkins 不拥有日志目录已修复它。 在将我的 MacBook 升级到 OSX Mojave 后,这也对我有用! @RickSlinkman,仍然无法打开 localhost:8080 OSX Mojave。【参考方案2】:

当我升级到 Sierra 时,这发生在我身上,我设法通过 @mac.slusarek 的回答解决了这个问题。但最近又发生了。这次我允许对操作系统进行小幅更新,并且我也一直在使用SDK Man 来切换 JDK。不确定是哪一个破坏了我的 Jenkins,但这次不是权限问题。

我从日志中注意到 Jenkins 试图在 Java 9-ea, which is apparently not supported yet 上运行。我已经使用Jenkins installer for Mac 安装了 Jenkins,所以尝试卸载:

/Library/Application\ Support/Jenkins/Uninstall.command

并再次安装,但问题并没有消失。

然后我发现this article 建议改为使用Homebrew 安装它。就像跑步一样简单:

$brew install jenkins

由于我只在本地运行它进行开发,我不需要将它作为守护进程启动,所以现在我只需键入即可运行它

$jenkins

问题解决了。我希望这对其他人有所帮助。

【讨论】:

你是一个救生员。简单而有效的答案!谢谢。【参考方案3】:

我通过设置适当的JAVA_HOME 变量来修复它。我诊断它的方法是查看 Jenkins 尝试运行时引发的错误:

tail -f /var/log/jenkins/jenkins.log

然后我尝试运行它:

sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist

如果说已经加载,先卸载:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

然后运行它:

sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist

我看到的错误是 Jenkins 需要 Java 8,而不是 Java 10。所以我卸载了:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

然后安装 Java 8。然后我编辑了plist 文件:

sudo nano /Library/LaunchDaemons/org.jenkins-ci.plist

并添加了适当的JAVA_HOME 环境变量:

<dict>
   <key>JENKINS_HOME</key>
   <string>/Users/Shared/Jenkins/Home</string>
   <key>JAVA_HOME</key>
   <string>/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home</string>
</dict>

最后,我再次尝试了launchctl 命令:

sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist

瞧!

【讨论】:

是的,这对我有用。我在日志中有一个“使用 JDK 10 而不是 8”错误。【参考方案4】:

我有同样的问题,安装 JDK 没有成功

但是更改日志目录的权限(在我的例子中是 /var/log/jenkins)并重新启动 Jenkins 是有效的。

似乎迁移到 Sierra 更改了此文件夹的权限。

【讨论】:

我遇到了同样的问题,@Werdeil 是正确的。 Sierra 更改了 Jenkins 日志目录 (/var/log/jenkins) 的权限,并阻止了 Jenkins 重新启动守护程序。所以,我将/var/log/jenkins的权限修改为组可写和组可执行,然后重新启动Jenkins。它现在正在工作。感谢您的回答-它对我帮助很大。很高兴我们都在互相照顾。干杯。【参考方案5】:

就我而言,Catalina (OSX 10.15) 上的安装不知何故甚至没有创建 /var/log/jenkins 文件。我不得不

sudo mkdir /var/log/jenkins

然后取得所有权,然后 Jenkins 正常启动。刚刚做了正常的 OSX 安装程序,所以不确定安装损坏的原因。

【讨论】:

这发生在我最初的安装以及刚刚更新到 Catalina OSX 10.15 Beta 9 的时候。更新过程中的某些东西似乎正在杀死或重置 /var/log 中的所有内容。将向 Apple 报告。 将此文件夹的所有权更改为chown jenkins /var/log/jenkins【参考方案6】:

正如我在问题中提到的,我安装了 JRE。安装JDK后,Jenkins就可以正常启动了。

【讨论】:

【参考方案7】:

当我从 Sierra 升级到 High Sierra 时,同样的事情也发生在我身上。我按照上面 mac.slusarek 的说明进行操作,但是 jenkins ID 不再存在于我的计算机上。我作为标准用户创建了 jenkins id。 此外,/Users/Shared/Jenkins 下的文件不再归 jenkins 所有。在我用命令找出错误日志后:

sudo cat /var/log/jenkins/jenkins.log

看到错误后:

Exception in thread "main" java.io.IOException: Jenkins has failed to create a 
temporary file in /Users/Shared/Jenkins/tmp
    at Main.extractFromJar(Main.java:368)
    at Main._main(Main.java:210)
    at Main.main(Main.java:112)
 Caused by: java.io.IOException: Permission denied
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createTempFile(File.java:2024)
    at Main.extractFromJar(Main.java:365)
    ... 2 more

我用命令修复了所有权:

sudo chown -R jenkins /Users/Shared/Jenkins

【讨论】:

当我升级到 High Sierra 时,我也失去了我的 jenkins 用户。我问了关于这个问题的另一个问题:***.com/questions/47079065/…【参考方案8】:

我遇到了同样的问题。

我手动启用了对

/Users/Shared/Jenkins 

文件夹。

【讨论】:

【参考方案9】:

我在我的 MacOs(Mojave 版本)上加载 jenkins-cli.plist 命令时遇到问题。

Mac 版本:Mojave 10.14.6 詹金斯版本:2.190.1

我使用 .pkg 文件安装了 jenkins。

参考链接:https://java2blog.com/install-jenkins-mac-os-x/

执行以下命令时,

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

我遇到了“已经加载”的错误。

解决方案:

第 1 步。检查 jenkins 日志中的确切错误。

tail -f /var/log/jenkins/jenkins.log

(在我的情况下,这是端口绑定问题,端口 8080 已被其他应用程序使用)

第 2 步。所以我决定在其他端口(比如 7070)上启动 jenkins。您可以使用以下命令来执行此操作。

sudo 默认写入 /Library/Preferences/org.jenkins-ci.plist httpPort 7070

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

第 3 步。尝试在浏览器中访问它,http://localhost:7070。它应该工作!

【讨论】:

以上是关于Jenkins 无法在 macOS 10.12 (Sierra) 上启动的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 10.12+ 上自定义 NSTableView 标头?

xxx.app已损坏,打不开.你应该将它移到废纸篓 macOS 10.12 Sierra

macOS 10.12 brew install openssl 问题

VBox 安装 macOS 10.12

制作macOS10.12系列的系统镜像文件

macOS Sierra 10.12显示允许任何来源