Comment utiliser Homebrew pour installer des archives locales


16

J'essaie d'utiliser Homebrew pour installer wget, mais quelque chose se passe où le téléchargement est toujours corrompu. Cela se produit pour tous les packages, pas seulement pour wget. Je peux télécharger l'amende tar.gz via un navigateur. Puis-je utiliser Homebrew pour installer une archive téléchargée localement? Quelque chose comme:

brew install wget-1.14.tar.gz 

1
Semble très étrange. Je ne sais pas si vous pouvez le faire, mais il semble que quelque chose de plus grave se passe. Avez-vous essayé de courir brew doctor?
boyfarrell

Si vous avez l'archive exacte que Homebrew attend, vous pouvez la mettre dans ~ / Library / Caches / Homebrew, puis essayer brew install. Mais c'est mystérieux. Que diriez-vous de publier la sortie de brew installlorsque vous l'essayez de la manière normale?
échristopherson

@echristopherson Votre méthode a fonctionné. Si vous la postez comme réponse, je l'accepterai.
MD6380

Je sais pourquoi ça ne marche pas. Le docteur Brew ne montre aucun problème. Il semble que le proxy HTTP utilisé n'autorise pas le téléchargement.
MD6380

Juste pour noter, cela est utile lorsqu'il y a plusieurs miroirs et que celui de la recette ne fonctionne pas. Vous pouvez définir un miroir SourceForge différent via une variable d'environnement, mais pour d'autres, la solution acceptée est très utile.
Dan

Réponses:


21

Si Homebrew a déjà une formule pour cela (dans / usr / local / Library / Formula), et vous avez l'archive exacte que la formule attend (c'est-à-dire le même nom de fichier et le même contenu, tel que déterminé par SHA1 ou tout autre type de hachage que la formule utilise ), vous pouvez mettre l'archive dans ~ / Library / Caches / Homebrew puis essayer brew install formula_name(en substituant le nom correct à formula_name , bien sûr).


2
Homebrewdossier n'existe pas, mais il fonctionne après moi mkdir.
eccstartup

brew installn'a pas fonctionné pour moi, mais brew install <package>a fonctionné. Merci!
Zayne S Halsall

Oh, j'avais laissé cela implicite. Je corrige cela dans ma réponse.
echristopherson

6
$ brew install -f wget-1.14.tar.gz

1
Paquet différent mais même exigence, -f ne semble pas fonctionner: 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
même erreur se produit
Ben

4

Cinq ans et changer tard pour la fête, mais:

L'astuce consiste à déplacer l'archive dans le cache de l'infusion. Cette cache peut être difficile à trouver à la main; heureusement, vous n'êtes pas obligé. Il suffit de demander à se brasser brew --cache.

Cela vous permet de faire ce qui suit dans bash:

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

alternativement, chez les poissons:

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

Après quoi, l'exécution brew install wgetdevrait se traduire par une annonce annonçant le téléchargement de l'archive, suivie immédiatement de sa réalisation que l'archive est "déjà téléchargée", et tout se déroule sans problème à partir de là.


2

Il est possible de pré-télécharger un fichier pour une formule mais vous aurez besoin d'un nom de fichier cache correct qui peut être généré à l'aide de brew --cache -s <formula> .

Par exemple, pour la formule Erlang, brew --cache -s erlangimprime le nom correct du téléchargement mis en cache. Cela signifie qu'au lieu de renommer manuellement une formule, vous pouvez exécuter:

wget source-version.tar.gz
mv source-version.tar.gz $(brew --cache -s <formula>)

Cela fonctionne pour la version actuelle d'un formel - mais si je veux réinstaller le nœud 11 plutôt que le nœud actuel 12, brasser --cache -s node me donne toujours le chemin pour le nœud 12. Savez-vous comment je peux forcer Homebrew à installer l'ancienne version?
John Y

C'est celui qui fonctionne avec la dernière version de brassage 2.2.1
LnxSlck

2

Selon ceci :

Pas vraiment sans modifier le fichier de formule.

si votre archive locale est un fichier de pré-génération, alias «bouteille» dans Brew. Voici ce que je déterre:

La bouteille d'infusion est liée à la version MacOS.

Prenez pkg-config par exemple.

ici sur  https://bintray.com/homebrew/bottles/pkg-config#files/ , il répertorie différents fichiers pour différentes versions de MacOS.

Après avoir téléchargé le bon fichier, vous devez le déplacer vers le bon chemin qui peut être généré par brew --cache --force-bottle pkg-config

pour 10.14: c'est comme:

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

pour 10.13: c'est comme:

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

après cela, brew peut trouver le fichier local mis en cache lorsque vous exécutez  brew install pkg-config. sinon, il sera toujours téléchargé à partir d'une URL.


il suffit de déplacer le fichier vers $ (brew --cache) ne fonctionnera plus, du moins pour le brew d'aujourd'hui (version 2.19 dans mon cas).


si le fichier local est du code source, pas une bouteille. Le déplacer vers $ (formule brew --cache -s) fonctionnera si vous forcez à l'installer avec l'option --build-from-source.
gebitang

0

Brew a mis à jour sa stratégie de mise en cache, vous devez mettre le fichier téléchargé dans ~/Library/Caches/Homebrew/downloads et suivre sa convention de dénomination.

Vous pouvez laisser infuser démarrer le téléchargement, puis vous verrez un .incompletefichier, par exemple 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.incomplete, vous pourrez ensuite renommer votre fichier en 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.