Homebrew выдает ошибку при запуске make для перемещения двоичных файлов

РЕДАКТИРОВАТЬ :Этот вопрос сильно изменился по сравнению с оригиналом. На данный момент кажется, что вам нужно собрать пары имен файлов для вставки в два выходных файла.

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

for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
  mailing=${physical/_1_s/_s}
  # Do your own thing, but for testing...
  printf "Pair:\n  %s\n  %s\n" "$mailing" "$physical"
  done

Теперь, что касается следующей части вашего требования, вы, кажется, хотите поместить имена каждой пары файлов в какие-то третий и четвертый выходные файлы. Для этого вы можете использовать либо printf, если вам нужен простой выходной список, либо sedдля более сложных вставок.

Для первого (простого )случая:

for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
  mailing=${physical/_1_s/_s}
  printf "%s\n" "$mailing"  >> path/to/your_mailing_list.txt
  printf "%s\n" "$physical" >> path/to/your_physical_list.txt
  done

Во втором, более сложном случае, подготовьте каждый выходной файл шаблона с двумя гарантированно уникальными строками, одной для $physicalи одной для $mailing, а затем используйте sed, чтобы заменить эти строки именами файлов. В дальнейшем я выбрал уникальные строки @physicalи @mailing, файлы шаблонов называются physical_template.txtи mailing_template.txt, а окончательные результаты будут файлами с уникальными именами в формеresult_{$physical or $mailing}.txt:

for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
  mailing=${physical/_1_s/_s}
  sed "s/@physical/$physical/g" physical_template.txt > result_$physical.txt
  sed "s/@mailing/$mailing/g" mailing_template.txt > result_$mailing.txt
  done
1
12.09.2019, 04:28
1 ответ

Вы делаете что-то неправильно. Формуле запрещено устанавливать двоичные файлы или что-либо еще в /usr/local/binнапрямую.

В качестве формулы он должен поместить все свое содержимое в путь, подобный /usr/local/Celler/<formula-name>/<version>, который называется путем prefixи обозначается как #{prefix}в ruby. Homebrew создаст символическую ссылку на двоичный файл из подпапки bin/под этим #{prefix}в /usr/local/bin.

Переменная #{prefix}из ruby ​​вычисляется Homebrew автоматически, следуя шаблону, который я упоминал выше.

Все, что вам нужно сделать, это сообщить конфигурационному файлу это prefixперед компиляцией и сборкой.

class Wget < Formula
  homepage "https://www.gnu.org/software/wget/"
  url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
  sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"

  def install
    system "./configure", "--prefix=#{prefix}"
    system "make", "install"
  end
end

Прежде чем писать собственные формулы, прочтите документацию разработчика и некоторые существующие коды формул.

3
27.01.2020, 23:22

Теги

Похожие вопросы