设置使用Homebrew安装的脚本的可执行权限

时间:2019-05-13 06:38:12

标签: installation homebrew file-permissions linuxbrew

我写了第一次点击,所以我仍然不确定它是如何工作的。我写了这个小公式:

class Konversation < Formula
  desc "Konversation is a tool to generate rich and diversified responses to the user of a voice application."
  homepage "https://github.com/rewe-digital-incubator/Konversation/"
  url "https://github.com/rewe-digital-incubator/Konversation/releases/download/1.0.0/konversation-cli.jar"
  sha256 "6123d126278faae2419f5de00411a1b67ae57e0cf2265a5d484ed6f9786baaca"

  def install
    prefix.install "#{buildpath}/konversation-cli.jar"
    File.write("#{buildpath}/konversation", "java -jar #{prefix}/konversation-cli.jar $@")
    bin.install "#{buildpath}/konversation"
    system "chmod", "+x", "#{bin}/konversation"
  end
end

但是,由于“ konversation”可执行文件没有x权限,因此我无法运行我的工具。我尝试使用系统chmod修复此问题,但是我发现安装后通过brew清除了我的x标志:

==> Cleaning
Fixing /home/linuxbrew/.linuxbrew/opt/konversation/bin/konversation permissions from 777 to 444

如何正确设置文件权限?

请注意,我不想将shell脚本本身托管在某个地方,因为我看不到将shell脚本和jar文件打包到另一个zip文件中以进行销毁的工作。

如果您想自己尝试,请尝试以下命令:

brew install rekire/packages/konversation

1 个答案:

答案 0 :(得分:1)

Shell脚本需要有一个shebang行,否则postinstall cleaner将设置其权限,就好像它不是可执行文件一样。在这种情况下,我建议:

  • 改为使用bin.write_jar_script -这将为JAR脚本设置正确的环境
  • .jar而不是libexec安装prefixvar editor = ace.edit('myeditor'); editor.setTheme("ace/theme/terminal"); editor.getSession().setMode("ace/mode/sql"); editor.getSession().setUseWrapMode(true); ,以避免不必要的文件污染前缀。

Example formula from Homebrew/homebrew-core