Cara menggunakan Homebrew untuk menginstal arsip lokal


16

Saya mencoba menggunakan Homebrew untuk menginstal wget, tetapi sesuatu terjadi di mana unduhannya selalu rusak. Ini terjadi untuk semua paket, bukan hanya wget. Saya dapat mengunduh tar.gz baik melalui browser. Bisakah saya menggunakan Homebrew untuk menginstal arsip yang diunduh secara lokal? Sesuatu seperti:

brew install wget-1.14.tar.gz 

1
Tampak sangat aneh. Saya tidak tahu Anda bisa melakukan itu tetapi sepertinya ada sesuatu yang lebih serius terjadi. Sudahkah Anda mencoba berlari brew doctor?
boyfarrell

Jika Anda memiliki arsip yang persis seperti yang diharapkan oleh Homebrew, Anda bisa memasukkannya ke ~ / Library / Caches / Homebrew lalu coba brew install. Tapi ini misterius. Bagaimana dengan memposting output brew installketika Anda mencobanya dengan cara normal?
echristopherson

@echristopherson Metode Anda berhasil. Jika Anda mempostingnya sebagai jawaban, saya akan menerimanya.
MD6380

Saya tahu mengapa itu tidak berhasil. Dokter bir tidak menunjukkan masalah. Sepertinya proxy HTTP yang digunakan tidak mengizinkan unduhan.
MD6380

Sebagai catatan, ini berguna ketika ada beberapa mirror dan yang ada di resep tidak berfungsi. Anda dapat mengatur mirror SourceForge yang berbeda melalui variabel lingkungan, tetapi bagi orang lain solusi yang diterima sangat berguna.
Dan

Jawaban:


21

Jika Homebrew sudah memiliki formula untuk itu (di / usr / local / Library / Formula), dan Anda memiliki arsip persis seperti yang diharapkan oleh rumus (yaitu nama file dan konten yang sama, seperti yang ditentukan oleh SHA1 atau apa pun jenis hash yang digunakan rumus ), Anda dapat meletakkan arsip di ~ / Library / Caches / Homebrew dan kemudian mencoba brew install formula_name(mengganti nama yang benar dengan formula_name , tentu saja).


2
Homebrewfolder tidak ada, tetapi berfungsi setelah saya mkdirsatu.
eccstartup

brew installtidak bekerja untuk saya, tetapi brew install <package>berhasil. Terima kasih!
Zayne S Halsall

Oh, saya telah meninggalkan yang tersirat itu. Saya memperbaiki itu dalam jawaban saya.
echristopherson

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

1
Paket berbeda tetapi persyaratan yang sama, -f tampaknya tidak berfungsi: 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
kesalahan yang sama terjadi
Ben

4

Lima tahun dan berubah terlambat ke pesta, tetapi:

Caranya adalah dengan memindahkan arsip ke dalam cache buatan. Cache yang dikatakan bisa menjadi susah ditemukan dengan tangan; untungnya, Anda tidak harus melakukannya. Hanya bertanya pada dirinya sendiri brew --cache.

Ini memungkinkan Anda melakukan hal berikut di bash:

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

secara bergantian, pada ikan:

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

Setelah berjalan brew install wgetharus menghasilkan minuman mengumumkan bahwa itu mengunduh arsip, segera diikuti dengan realisasi bahwa arsip "Sudah diunduh", dan semuanya berjalan dengan lancar dari sana.


2

Dimungkinkan untuk mengunduh terlebih dahulu file untuk suatu formula tetapi Anda akan memerlukan nama file cache yang benar yang dapat dihasilkan menggunakan brew --cache -s <formula>.

Misalnya, untuk rumus Erlang, brew --cache -s erlangakan mencetak nama yang benar dari unduhan yang di-cache. Ini berarti alih-alih mengganti nama formula secara manual, Anda dapat menjalankan:

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

Ini berfungsi untuk versi formual saat ini - tetapi jika saya ingin menginstal ulang node 11 daripada node saat ini 12, menyeduh --cache -s node masih memberi saya path untuk node 12. Apakah Anda tahu bagaimana saya bisa memaksa Homebrew untuk instal versi yang lebih lama?
John Y

Ini adalah yang bekerja dengan versi bir terbaru 2.2.1
LnxSlck

2

Menurut ini :

Tidak juga tanpa memodifikasi file formula.

jika arsip lokal Anda adalah file pra-bangun, alias 'botol' di Brew. Inilah yang saya gali:

Botol minuman terkait dengan versi MacOS.

Ambil pkg-config misalnya.

di sini di  https://bintray.com/homebrew/bottles/pkg-config#files/ , daftar file yang berbeda untuk versi MacOS yang berbeda.

Setelah mengunduh file yang benar, Anda perlu memindahkannya ke jalur yang benar yang dapat dihasilkan oleh brew --cache --force-bottle pkg-config

untuk 10.14: seperti:

/ Pengguna / nama pengguna / Perpustakaan / cache / Homebrew/downloads/dd6c78ec64b7c09961ccdb1bf873b5852fd93783cf25ae9b9399c5896a420462--pkg-config-0.29.2.mojave.bottle.tar.gz

untuk 10.13: seperti:

/ Pengguna / nama pengguna / Perpustakaan / cache / Homebrew/downloads/8b865a8ad8179d4a45289cab9267cc5e3a6153d06432d90cf1745caf5d92a64d--pkg-config-0.29.2.high_sierra.bottle.tar.tar

setelah itu, minuman dapat menemukan file lokal yang di-cache ketika Anda menjalankan  brew install pkg-config. jika tidak, ia masih akan mengunduh dari URL.


cukup pindahkan file ke $ (buatan --cache) tidak akan berfungsi lagi, setidaknya untuk buatan hari ini (versi 2.19 dalam kasus saya).


jika file lokal adalah kode sumber, bukan botol. Memindahkannya ke $ (menyeduh --cache -s formula) akan berfungsi jika Anda memaksa untuk menginstalnya dengan opsi --build-from-source.
gebitang

0

Brew memperbarui strategi cachingnya, Anda perlu memasukkan file yang diunduh ke ~/Library/Caches/Homebrew/downloadsdalamnya, dan ikuti konvensi penamaannya.

Anda dapat membiarkan minuman memulai unduhan, kemudian Anda akan melihat .incompletefile, misalnya 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.incomplete, kemudian Anda dapat mengubah nama file Anda menjadi 544b4d734091aeb6482dbe2496a8ff223d15bc970fa330d3dccbb0bb6fb0e13e--qemu-4.2.0.catalina.bottle.tar.gz.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.