Установить права на выполнение скрипта, установленного с Homebrew - PullRequest
0 голосов
/ 13 мая 2019

Я написал свой первый тап, так что я до сих пор не уверен, как он работает. Я написал эту маленькую формулу:

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, однако я вижу, что мой флаг x удаляется после установки brew в качестве некоторой очистки:

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

Как правильно установить разрешения для файлов?

Обратите внимание, что я не хочу где-то размещать сам сценарий оболочки, так как не вижу прогресса в упаковке сценария оболочки и файла jar в другой zip-файл для уничтожения.

Если вы хотите попробовать сами, попробуйте следующую команду:

brew install rekire/packages/konversation

1 Ответ

1 голос
/ 15 мая 2019

Сценарии оболочки должны иметь строку shebang, в противном случае postinstall cleaner установит свои разрешения, как если бы это был не исполняемый файл.В этом конкретном случае я предлагаю:

  • использовать вместо bin.write_jar_script - это установит правильную среду для JAR-скриптов
  • install .jar s для libexec вместоиз prefix - чтобы избежать загрязнения префикса ненужными файлами.

Пример формулы из Homebrew / homebrew-core

...