Как использовать Homebrew для установки локального архива

16

Я пытаюсь использовать Homebrew для установки wget, но что-то происходит, когда загрузка всегда повреждена. Это происходит для всех пакетов, а не только для wget. Я могу скачать tar.gz нормально через браузер. Могу ли я использовать Homebrew для установки локально загруженного архива? Нечто такое как:

brew install wget-1.14.tar.gz 
MD6380
источник
1
Кажется очень странным. Я не знаю, как вы можете это сделать, но, похоже, что-то более серьезное происходит. Ты пробовал бегать brew doctor?
boyfarrell
Если у вас есть именно тот архив, который ожидает Homebrew, вы можете поместить его в ~ / Library / Caches / Homebrew и затем попробовать brew install. Но это загадочно. Как насчет публикации результатов, brew installкогда вы попробуете это обычным способом?
Эхристоферсон
@echristopherson Ваш метод сработал. Если вы отправите это как ответ, я приму это.
MD6380
Я знаю, почему это не работает. Заваривать доктор не показывает никаких проблем. Похоже, что используемый прокси-сервер HTTP не позволяет загрузку.
MD6380
Просто отметим, что это полезно, когда есть несколько зеркал, а одно в рецепте не работает. Вы можете установить другое зеркало SourceForge через переменную окружения, но для других приемлемое решение очень полезно.
Дан

Ответы:

21

Если Homebrew уже имеет формулу для него (в / usr / local / Library / Formula), и у вас есть точный архив, который ожидает формула (т. Е. Такое же имя файла и такое же содержимое, как определено SHA1 или любым другим типом хеша, который используется формулой) ), вы можете поместить архив в ~ / Library / Caches / Homebrew и затем попробовать brew install formula_name(подставив правильное имя для имя_формулы , конечно).

echristopherson
источник
2
HomebrewПапка не существует, но она работает после того, как я mkdirодна.
eccstartup
brew installне работал для меня, но brew install <package>сделал. Благодарность!
Зейн С. Халсолл,
О, я оставил это неявным. Я исправляю это в своем ответе.
Эхристоферсон
6
$ brew install -f wget-1.14.tar.gz
Сюйжи
источник
1
Другой пакет, но с тем же требованием, -f не работает: zaynehalsall@mbp:~$ brew install -f Library/Caches/Homebrew/pwgen-2.07.tar.gz Error: No available formula with the name "Library/Caches/Homebrew/pwgen-2.07.tar.gz" ==> Searching for similarly named formulae... Error: No similarly named formulae found. ==> Searching taps... Error: No formulae found in taps. zaynehalsall@mbp:~$
Zayne S Halsall
1
такая же ошибка случается
Бен
4

Пять лет и переоденься на вечеринку, но:

Хитрость заключается в том, чтобы переместить архив в кеш brew. Указанный тайник может быть трудным найти вручную; К счастью, вам не нужно. Просто попроси завариться brew --cache.

Это позволяет вам делать следующее в bash:

mv wget-1.14.tar.gz $(brew --cache)

поочередно в рыбе:

mv wget-1.14.tar.gz (brew --cache)

После чего запуск brew install wgetдолжен привести к тому, что brew объявит о загрузке архива, а затем сразу же поймет, что архив «уже загружен», и оттуда все идет гладко.

Дэн Мартинес
источник
2

Можно предварительно загрузить файл для формулы, но вам потребуется правильное имя файла кэша, которое можно сгенерировать с помощью brew --cache -s <formula>.

Например, для формулы Эрланга brew --cache -s erlangбудет напечатано правильное имя кэшированной загрузки. Это означает, что вместо ручного переименования формулы вы можете выполнить:

wget source-version.tar.gz
mv source-version.tar.gz $(brew --cache -s <formula>)
rstml
источник
Это работает для текущей версии формальной - но если я хочу переустановить узел 11, а не текущий узел 12, узел brew --cache -s все равно дает мне путь для узла 12. Знаете ли вы, как я могу заставить Homebrew установить старую версию?
Джон Y
Это тот, который работает с последней версией
Brew
2

Согласно этому :

Не совсем без изменения файла формулы.

если ваш локальный архив - файл предварительной сборки, то есть «бутылка» в Brew. Вот что я выкопал:

Бутылка варева связана с версией MacOS.

Взять, к примеру, pkg-config.

здесь, на  https://bintray.com/homebrew/bottles/pkg-config#files/ , перечислены разные файлы для разных версий MacOS.

После загрузки правильного файла вам нужно переместить его на правильный путь, который может быть сгенерирован brew --cache --force-bottle pkg-config

для 10.14: это как:

/Users/username/Library/Caches/Homebrew/downloads/dd6c78ec64b7c09961ccdb1bf873b5852fd93783cf25ae9b9399c5896a420462--pkg-config-0.29.2.mojave.bottle.tar.gz

для 10.13: это как:

/Users/username/Library/Caches/Homebrew/downloads/8b865a8ad8179d4a45289cab9267cc5e3a6153d06432d90cf1745caf5d92a64d--pkg-config-0.29.2.high_sierra.bottle.tar.gz

после этого brew может найти кэшированный локальный файл при запуске  brew install pkg-config. в противном случае он все равно будет загружаться с URL.


просто переместить файл в $ (brew --cache) больше не будет работать, по крайней мере, для сегодняшнего brew (в моем случае версия 2.19).

gebitang
источник
если локальный файл - это исходный код, а не бутылка. Перемещение в $ (формула brew --cache -s) будет работать, если вы заставите установить его с опцией --build-from-source.
Гебитанг
0

Brew обновил свою стратегию кэширования, вам нужно поместить загруженный файл ~/Library/Caches/Homebrew/downloadsи следовать соглашению об именах.

Вы можете позволить brew начать загрузку, затем вы увидите .incompleteфайл, например 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.incomplete, затем вы можете переименовать ваш файл в 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.

Piasy
источник