Homebrew menginstal versi formula tertentu?


2197

Bagaimana cara saya menginstal versi formula tertentu dalam homebrew? Sebagai contoh, postgresql-8.4.4 bukan yang terbaru 9.0.


2
postgresqladalah yang aneh karena memiliki versi terpisah di Homebrew pada satu titik, sesuatu seperti bashmungkin menjadi contoh yang lebih baik karena ia beralih dari 4.x ke 5.x dalam nama formula yang sama. Lihat stackoverflow.com/a/55764594/3794873
dragon788


2
Saya membaca semua jawaban. Ini tahun 2020 dan tidak ada cara mudah atau perintah resmi untuk melakukan itu
oluckyman

Jawaban:


2556

TLDR: brew install postgresql@8.4.4 Lihat jawaban di bawah untuk detail lebih lanjut.


* ( Saya telah mengedit ulang jawaban saya untuk memberikan alur kerja yang lebih menyeluruh untuk menginstal / menggunakan versi perangkat lunak yang lebih lama dengan homebrew. Jangan ragu untuk menambahkan catatan jika Anda menemukan versi lama lebih baik. )

Mari kita mulai dengan kasus paling sederhana:

1) Periksa, apakah versi sudah diinstal (tetapi tidak diaktifkan)

Ketika homebrew menginstal formula baru, itu menempatkannya di direktori berversi seperti /usr/local/Cellar/postgresql/9.3.1. Hanya tautan simbolis ke folder ini yang kemudian diinstal secara global. Pada prinsipnya, ini membuatnya cukup mudah untuk beralih di antara dua versi yang diinstal. (*)

Jika Anda telah menggunakan homebrew lebih lama dan tidak pernah menghapus versi lama (menggunakan, misalnya brew cleanup), kemungkinan beberapa versi lama dari program Anda mungkin masih ada. Jika Anda hanya ingin mengaktifkan versi sebelumnya, brew switchadalah cara termudah untuk melakukan ini.

Periksa dengan brew info postgresql(atau brew switch postgresql <TAB>) apakah versi yang lebih lama diinstal:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Kami melihat bahwa beberapa versi yang lebih lama sudah diinstal. Kami dapat mengaktifkannya menggunakan brew switch:

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

Mari kita periksa apa yang diaktifkan:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Perhatikan bahwa bintang *telah pindah ke versi yang baru diaktifkan

(*) Harap dicatat bahwa brew switchhanya berfungsi selama semua dependensi dari versi yang lebih lama masih ada. Dalam beberapa kasus, pembangunan kembali versi yang lebih lama mungkin diperlukan. Oleh karena itu, menggunakan brew switchsebagian besar berguna ketika seseorang ingin beralih di antara dua versi yang tidak terlalu berjauhan.

2) Periksa, apakah versi tersedia sebagai ketukan

Khusus untuk proyek perangkat lunak yang lebih besar, sangat mungkin ada permintaan yang cukup tinggi untuk beberapa versi utama (yang berpotensi tidak kompatibel dengan API) dari perangkat lunak tertentu. Pada Maret 2012, Homebrew 0.9 menyediakan mekanisme untuk ini: brew tap& repositori versi homebrew .

Repositori versi itu dapat menyertakan backports dari versi yang lebih lama untuk beberapa formula. (Sebagian besar hanya yang besar dan terkenal, tetapi tentu saja mereka juga akan memiliki beberapa formula untuk postgresql.)

brew search postgresql akan menunjukkan kepada Anda ke mana harus mencari:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

Kita cukup menginstalnya dengan mengetik

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

Catatan bahwa ini telah secara otomatis disadap itu homebrew/versionskeran. (Periksa dengan brew tap, hapus dengan brew untap homebrew/versions.) Berikut ini akan menjadi setara:

$ brew tap homebrew/versions
$ brew install postgresql8

Selama formula versi yang di-backport tetap up-to-date, pendekatan ini mungkin merupakan cara terbaik untuk menangani perangkat lunak yang lebih lama.

3) Coba beberapa formula dari masa lalu

Pendekatan berikut sebagian besar didaftar untuk kelengkapan. Keduanya mencoba menghidupkan kembali beberapa rumus undead dari repositori brew. Karena perubahan dependensi, perubahan API dalam spesifikasi rumus atau hanya perubahan dalam URL unduhan, hal-hal mungkin atau mungkin tidak berfungsi.

Karena seluruh direktori rumus adalah repositori git, seseorang dapat menginstal versi spesifik menggunakan perintah plain git. Namun, kita perlu menemukan cara untuk mendapatkan komit di mana versi lama tersedia.

a) masa bersejarah

Antara Agustus 2011 dan Oktober 2014 , homebrew memiliki brew versionsperintah, yang meludahkan semua versi yang tersedia dengan hash SHA masing-masing. Pada Oktober 2014, Anda harus melakukan brew tap homebrew/boneyardsebelum dapat menggunakannya. Seperti yang disarankan oleh nama keran, Anda mungkin harus melakukan ini sebagai upaya terakhir.

Misalnya

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

Seperti yang Anda lihat, disarankan untuk tidak menggunakannya. Homebrew mengeluarkan semua versi yang dapat ditemukan dengan heuristik internal dan menunjukkan kepada Anda cara untuk mengambil formula lama. Ayo kita coba.

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

Sekarang setelah versi postgresql yang lebih lama terinstal, kita dapat menginstal ulang formula terbaru untuk menjaga repositori kita tetap bersih:

$ git checkout -- Library/Formula/postgresql.rb

brew switch adalah teman Anda untuk berubah antara yang lama dan yang baru.

b) zaman prasejarah

Untuk kebutuhan khusus, kami juga dapat mencoba menggali sendiri melalui repo homebrew.

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -Smencari semua komit yang stringnya '8.4.4'ditambahkan atau dihapus dalam file Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. Kami mendapat dua komitmen sebagai hasilnya.

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

Tentunya, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422adalah komit yang kami minati. Karena komit ini sudah cukup tua, kami akan mencoba menurunkan versi pemasangan homebrew yang lengkap (dengan cara itu, API rumus kurang lebih dijamin valid):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

Anda dapat melewati perintah terakhir untuk menyimpan referensi di repositori git Anda.

Satu catatan: Saat memeriksa komit yang lebih lama, Anda menurunkan versi instalasi homebrew untuk sementara waktu. Jadi, Anda harus berhati-hati karena beberapa perintah dalam homebrew mungkin berbeda dengan versi terbaru.

4) Secara manual menulis formula

Ini tidak terlalu sulit dan Anda kemudian dapat mengunggahnya ke repositori Anda sendiri. Dulu versi Homebrew , tetapi sekarang dihentikan.

A.) Bonus: Menjepit

Jika Anda ingin menyimpan versi tertentu, katakan postgresql, di sekitar dan menghentikan pembaruan dari saat Anda melakukan brew update; brew upgradeprosedur alami , Anda dapat menyematkan rumus:

$ brew pin postgresql

Rumus yang disematkan didaftar /usr/local/Library/PinnedKegs/dan setelah Anda ingin memasukkan perubahan dan pembaruan terbaru, Anda dapat melepaskan sematan lagi:

$ brew unpin postgresql

18
Anda juga dapat checkout formula menggunakan git checkout fa992 -- Library/Formula/postgresql.rb. Setelah selesai, Anda dapat membatalkan perubahan menggunakan rumus git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
mipadi

18
Catatan: pada instalasi Homebrew baru, Anda mungkin perlu brew updatemembuat repo Git-nya.
Bluu

557
Ini sangat sulit.
Dogweather

30
Pada hari ini, direktori yang benar untuk menjalankan perintah manual terhadap repositori adalah cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, maka Anda dapat menggunakan git checkout 4cce79d -- Formula/go.rbdan HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin

12
homebrew / versi sudah usang
Yehezkiel Victor

775

Alur Kerja Sederhana

Sekarang Homebrew / versi telah ditinggalkan, Homebrew / core mendukung banyak versi formula dengan format penamaan yang baru.

Untuk menginstal versi tertentu, misalnya postgresql 9.5 Anda cukup menjalankan:

$ brew install postgresql@9.5

Untuk daftar versi yang tersedia, jalankan pencarian dengan @:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6

8
Sepertinya yang paling sederhana, tetapi ketika saya salin dan tempel, dapatkan fatal: Not a git repository (or any of the parent directories): .git. Saya hanya cdke direktori saja (tanpa FORMULANAME.rb), lalu lakukangit checkout 120938
Ramon Tayag

8
@RamonTayag, saya punya masalah yang sama. Pastikan cd /usr/localdulu.
gjb

13
Saya menemukan Anda memerlukan langkah 3.5:brew unlink FORMULANAME
Intentss

37
brew versions <formula>tidak didukung lagi.
ejoubaud

4
@ dem7w2, Anda dapat membuat symlink dengan brew link --force postgresql@9.5. Jika Anda sudah menginstal versi yang lebih baru dan ingin versi yang lebih lama menjadi default Anda, Anda akan memerlukannya juga --overwritedi sana.
Ryan

457

Sekarang ada cara yang jauh lebih mudah untuk menginstal versi formula yang lebih lama yang sebelumnya Anda instal. Cukup gunakan

brew switch [formula] [version]

Misalnya, saya berganti secara teratur antara Node.js 0.4.12 dan 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Karena brew switchhanya mengubah symlink, itu sangat cepat. Lihat dokumentasi lebih lanjut tentang Wiki Homebrew di bawah Perintah Eksternal .


2
Saya mencoba ini, dan berhasil dengan pesan "33 tautan yang dibuat untuk /usr/local/Cellar/node/0.4.7", tetapi ketika saya menjalankan simpul setelahnya, gagal dengan pesan "-bash: / usr / local / bin / node: Tidak ada file atau direktori ". Tahu apa yang bisa salah? Catatan: saya mengunduh 0.4.7 secara manual dan meletakkannya di direktori ruang bawah tanah, karena saya tidak tahu cara mengunduh apa pun kecuali versi simpul terbaru menggunakan minuman.
Soroush Hakami

6
Saya harap Anda tahu ada sesuatu yang disebut 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal

40
Saya mengandalkan versi paket yang sudah diinstal. Jika Anda kehilangan versi, Anda masih perlu menerapkan jawaban yang dipilih.
Nic Strong

1
Khusus untuk simpul versi mgmt, nvm adalah solusi yang lebih baik, imho.
setiap

5
@NicStrong Memang, brew switchbergantung pada versi yang dicari yang sudah diinstal. Sayangnya, jawaban yang diterima saat ini sangat tidak membantu, berbelit-belit, dan ketinggalan zaman. Ada yang lebih baik jawaban di bawah ini yang jauh lebih bermanfaat.
GDP2

250

Pembaruan: 15/1/2015

  • Temukan riwayat komit perangkat lunak dan versi yang diinginkan. misalnya saya perlu beralih dari versi buruh pelabuhan 1.4.1 ke 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Lihat file dengan tombol ini: masukkan deskripsi gambar di sini
  • Klik tombol Mentah: Daftar barang
  • Salin URL (url docker.rb dalam contoh ini) dari bilah alamat
  • brew install <url>(mungkin harus brew unlinkterlebih dahulu, misalnya brew unlink docker)
  • brew switch docker 1.3.3
  • Beralih kembali ke buruh pelabuhan 1.4.1 brew switch docker 1.4.1

Dari intisari ini

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb

46
Ini adalah satu-satunya hal yang berhasil untuk saya. Cukup konyol bahwa seorang manajer paket membutuhkan banyak waktu hanya untuk menginstal versi sebelumnya. Mungkin saya dimanjakan oleh ruby ​​RVM dan bundler, tetapi proses ini benar-benar perlu dirampingkan dan disarikan.
poetmountain

3
Ketika saya mencoba untuk pergi ke versi Ansible sebelumnya, saya harus memutuskan tautan formula sebelum menginstal versi sebelumnya seperti yang ditunjukkan. Jadi sebelum melakukan brew install <url>, brew unlink <formulaname>. Kalau tidak, ini adalah cara paling sederhana dan paling ringkas (sejauh ini) untuk beralih ke versi tertentu dari formula.
bigsweater

Anda menekan Rawtombol pada file apa ?!
Iulian Onofrei

1
Ini berfungsi, tetapi kadang-kadang Anda harus mengunduh file .rb mentah dan mengubah checksum untuk menghindari Homebrew mengeluh tentang ketidakcocokan SHA. GitHub tampaknya memiliki sebagian besar pohon repo yang disusun ulang sekitar tahun 2017, dan checksumnya berubah. (Sebenarnya itu menyebabkan banyak kebingungan di tim saya ketika Bazel mulai gagal pada hash mismatch Juli lalu)
Chang Qian

6
Saya menemukan alamatnya dengan mudah olehbrew log <formula>
kangkyu

128

Sejalan dengan saran @ halfcube, ini bekerja dengan sangat baik:

  1. Temukan perpustakaan yang Anda cari di https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Klik itu: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Klik tombol "histori" untuk melihat komit lama: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Klik yang Anda inginkan: "postgresql: perbarui versi ke 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Klik tautan "mentah": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

8
Ini adalah cara termudah untuk menginstal versi paket yang diperlukan jika tidak tersedia di core repo aspackage@version
avy

7
Jika Anda tidak dapat menggunakan antarmuka web, Anda dapat mengkloning repo dan melakukannya secara lokal: gunakan git log master -- Formula/PACKAGENAME.rbuntuk mendapatkan histori komit, periksa komit yang benar, dan kemudian jalankan brew install Formula/PACKAGENAME.rbuntuk menginstalnya.
chipbuster

7
Saya pikir Anda perlu brew unlinksebelum brew installversi lain.
studgeek

Siapa ini mxcl?
PJSCopeland

1
Saya melakukan ini brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbtetapi mendapatkan kesalahan, mungkin karena @tanda: Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.Ada ide?
msciwoj

109

Saya telah menemukan solusi alternatif yang lebih baik daripada solusi kompleks lainnya.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

Ini akan mengunduh dan menginstal PostgreSQL 8.4.8


Saya menemukan solusi ini dengan mulai mengikuti langkah-langkah mencari repo dan komentar di repo.

Setelah sedikit penelitian menemukan bahwa seseorang memiliki koleksi formulars langka untuk dibuat.


Jika Anda mencari MySQL 5.1.x, coba ini.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbsepertinya gagal dengan kesalahan sintaksis.
Brian Armstrong

6
@BrianArmstrong Anda merujuk ke versi file berformat html, sementara Anda membutuhkan versi mentah .
Nikita Volkov

Pergi ke github.com/Homebrew/homebrew/commits/master/Library/Formula/… , pilih versi Anda, cari kode, mentah - gunakan url ini.
jpillora

1
Jangan lupa rawdi URL
Faber

9
homebrew-versionsadalah pergi dan segala sesuatu yang ada di coresekarang, jadi kasus umum adalah: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITdapat ditemukan dengan mengunjungi github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland

78

Anda dapat menggunakan strategi mengidentifikasi rumus dan komit tertentu dalam riwayat rumus yang cocok dengan versi paket yang ingin Anda instal.

  1. Pergi ke https://github.com/Homebrew/homebrew-core

  2. Tekan tpada keyboard Anda untuk mengaktifkan pencari file.

  3. Identifikasi formula yang terlihat paling relevan, mungkin Formula/mysql.rb:, membawa Anda ke lokasi file forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Lihatlah riwayat revisi dengan mengklik Historytombol, yang terletak di https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Jika Anda tertarik dengan MySQL 5.7.10, Anda mungkin ingin mengklik revisi terbaru sebelum 5.7.11, yang menavigasi ke komit GitHub:

    https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb

CATATAN: Anda mungkin harus melihat histori komit di konsol Anda sesuai saran GitHub jika histori komit tidak dimuat di browser Anda. Ganti SHA komit di atas dalam URL jika Anda tertarik melihat komit itu di GitHub. Atau, lompat ke langkah 7, di bawah ini.

  1. Klik tombol "Lihat" untuk melihat sumber untuk file mysql.rb setelah komit diterapkan.

  2. Kemudian klik tombol "Raw" untuk melihat sumber mentah.

  3. Salin URL. Atau, buat sendiri URL dengan mysql.rbnama file untuk mengidentifikasi formula Anda dan versi tertentu dari formula itu (diidentifikasi oleh komite SHA di URL di bawah).

    https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb

  4. Instal dengan $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
    

CATATAN: Jawaban ini telah diperbarui untuk memperhitungkan penghapusan situs web braumeister.org. Prinsip yang sama berlaku, braumeister hanya menyediakan cara ramah-pemula untuk menavigasi versi formula.


13
Sayangnya ini terlalu jauh dalam daftar jawaban tetapi merupakan solusi terbaik. Inilah yang saya gunakan, kecuali daripada menggunakan braumeister, saya hanya pergi ke halaman Homebrew GitHub dari formula yang saya inginkan (misalnya untuk gcc, pergi ke github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) dan kemudian saya pergi melalui "History" file sampai saya mendapatkan versi yang saya inginkan.
Guy Kogus

3
Ini jelas merupakan solusi terbaik dalam kasus saya - memasang versi Watchman yang lebih lama yang tidak memerlukan Xcode 8.1
Zachary Keener

3
Ini benar-benar cara termudah untuk menginstal versi yang lebih lama. Jawaban yang bagus
Martin

4
Ini bekerja untuk saya tetapi saya harus membuat tautan dulu perangkat lunaknya.
Brett Wagner

3
Ini solusi paling sederhana bagi saya. Ini harus lebih tinggi karena jawaban yang diterima sudah usang.
Tim W

35

Sebagian besar jawaban lain sudah usang sekarang. Sayangnya Homebrew masih belum memiliki cara yang terpasang untuk menginstal versi yang sudah kadaluwarsa, kecuali jika versi itu ada sebagai formula yang terpisah (misalnya python@2, postgresql@9.4 ...).

Untungnya, untuk formula lain ada cara yang jauh lebih mudah daripada kekacauan berbelit-belit yang dulu diperlukan. Ini instruksi lengkapnya:

  1. Cari versi yang benar di log:

    brew log formula
    # Scroll down/up with j/k or the arrow keys
    # or use eg. /4\.4\.23 to search a specific version
    
    # This syntax only works on pre-2.0 Homebrew versions
    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    Ini akan menampilkan daftar hash komit. Ambil satu yang sesuai (kebanyakan itu harus cukup jelas, dan biasanya yang paling baru (yaitu atas).

  2. Temukan URL tempat rumus berada di repositori hulu:

    brew info ‹formula› | grep ^From:
    
  3. Perbaiki URL:

    1. Ganti github.comdenganraw.githubusercontent.com
    2. Ganti blob/masterdengan hash komit yang kami temukan di langkah pertama.
  4. Instal versi yang diinginkan dengan mengganti masterURL yang sebelumnya ditemukan oleh hash komit, misalnya:

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(Langkah terakhir mungkin mengharuskan berjalan brew unlink ‹formula›sebelumnya.)


Jika Anda telah menyalin hash komit yang ingin Anda gunakan, Anda dapat menggunakan sesuatu seperti contoh ini untuk menginstal versi itu, mengganti nilai dan bashdengan hash komit Anda dan formula yang Anda inginkan.

BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install

Contoh ini menginstal bash 4.4.23 bukan bash 5, meskipun jika Anda melakukan brew upgradebash 5 maka bash 5 akan diinstal di atas, kecuali Anda pertama kali dieksekusi brew pin bash. Alih-alih membuat ini lebih lancar TANPA menyematkan, Anda harus menginstal yang terbaru terlebih dahulu brew install bash, kemudian brew unlink bash, instal versi yang lebih lama yang Anda inginkan sesuai skrip di atas, dan kemudian gunakan brew switch bash 4.4.23untuk mengatur symlink ke versi yang lebih lama. Sekarang brew upgradeseharusnya tidak memengaruhi versi Bash Anda. Anda bisa brew switch bashmendapatkan daftar versi yang tersedia untuk beralih.


Alternatif menggunakan ketukan khusus lokal khusus

Cara lain untuk mencapai tujuan yang sama tampaknya:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install bash@4.4.23
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Ini menciptakan sebuah formula@versionketukan khusus yang dapat Anda instal per contoh di atas. Kelemahannya adalah bahwa Anda mungkin masih perlu brew unlink bashdan kemudian brew link bash@4.4.23untuk menggunakan versi spesifik Bash Anda atau formula lainnya.


1
Mereka tampaknya berubah sintaks untuk brew logjadi tambahan apapun -Fatau --grepopsi yang gagal untuk saya.
dragon788

1
@ dragon788 Sialan, Homebrew 2 benar-benar hancur brew log. Saya tidak dapat diganggu untuk menulis versi baru sekarang karena itu membutuhkan penguraian pesan log git dengan benar, atau sebagai alternatif menjalankan git loglangsung pada repositori yang sesuai. Dan changelog tampaknya tidak menyebutkan perubahan yang melanggar ini. Sangat menjengkelkan.
Konrad Rudolph

Kecuali mereka menerima bahwa perubahan perilaku adalah bug, sepertinya External Commanddiperlukan operasi dalam struktur brewuntuk mendapatkan jenis git logpenyaringan kembali. docs.brew.sh/External-Commands
dragon788

Ini adalah satu-satunya tempat saya dapat menemukan brew extractpenggunaan yang benar , terima kasih!
dognotdog

Saya menyarankan untuk membuat custom local0hanya ketuk bagian pertama dari jawaban Anda. Ini sepertinya solusi terbaik secara keseluruhan.
studgeek

29

Saya hanya menggunakan Homebrew untuk kembali ke Maven 2.2.1 karena brew install mavenMaven 3.0.3 yang diinstal sederhana .

Pertama, Anda harus meninggalkan dir maven di sana begitu

$ buatan batalkan tautan pakar

Gunakan perintah penyeduhan minuman

$ brew ketuk homebrew / versi
Mengkloning ke '/ usr / local / Library / Taps / versi-homebrew' ...
jarak jauh: Menghitung objek: 590, selesai.
jarak jauh: Objek yang dikompresi: 100% (265/265), selesai.
jarak jauh: Total 590 (delta 362), digunakan kembali 549 (delta 325)
Menerima objek: 100% (590/590), 117,49 KiB | 79 KiB / s, selesai.
Menyelesaikan delta: 100% (362/362), selesai.
Mengetuk 50 formula

Sekarang Anda dapat menginstal rumus maven2:

$ brew instal maven2
==> Mengunduh http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz
############################################### ###################### 100.0%
/usr/local/Cellar/maven2/2.2.1: 10 file, 3.1M, dibangun dalam 6 detik
$ mvn --versi
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Versi Java: 1.6.0_37
Beranda Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Lokal default: en_US, pengkodean platform: MacRoman
Nama OS: "mac os x" versi: "10.7.4" arch: "x86_64" Family: "mac" 

Sunting: Anda juga dapat hanya brew switch maven 2.2.1beralih ke versi yang berbeda.

Sunting: Proyek Apache Maven mereorganisasi repo mereka. Memperbarui jawaban ini untuk menjelaskan perubahan ini.


Ini sangat membantu. Catatan, yayasan apache telah menata ulang binari maven ke dalam versi (1,2,3) direktori spesifik, jadi Anda perlu mengedit maven.rb untuk 2.2.1 dan mungkin yang lain agar sesuai dengan struktur baru. Sebagai contoh, biner untuk 2.2.1 terletak di: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Catat "maven-2 / 2.2.1 /" di url.
Charles Forcey

@CharlesForcey Anda benar tentang repo maven dist sedang direorganisasi. Saya akan memperbarui jawaban untuk menggunakan brew tap untuk menggunakan formula maven2 yang lebih lama. Terima kasih atas komentarnya.
Cameron Goodale

21

Berdasarkan alur kerja yang dijelaskan oleh pembaruan @tschundeee dan @ Debilski , saya mengotomatiskan prosedur dan menambahkan pembersihan dalam skrip ini .

Unduh , letakkan di jalur Anda dan brewv <formula_name> <wanted_version>. Untuk OP spesifik, itu akan menjadi:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)


4
menakjubkan. mengapa ini tidak dibuat?
Adrian

3
Tidak ditemukan lagi :(
D-32

18

Jawaban yang diperbarui sejak itu menambah apa yang sudah diposkan @ lance-pollard sebagai jawaban yang berfungsi.

Cara Memasang versi khusus Formula (rumus yang digunakan dalam contoh ini adalah terraform):

  1. Temukan file formula Anda, misalnya: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Dapatkan versi komit dari sejarah github dengan https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb atau git log master -- Formula/terraform.rbjika Anda telah mengkloning repo secara lokal.
  3. Dapatkan URL mentah git dengan versi komit dari rumus Anda: Jika tautan rumus di github.com adalah https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , URL mentah Anda akan, URL mentah Anda menjadi: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Instal dengan: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

Untuk mendapatkan URL mentah git di langkah 3, Anda juga bisa menekan tombol "Raw" dan menyalin URL yang dibawa browser.
Brian Topping

15

Metode resmi (menilai dari tanggapan terhadap https://github.com/Homebrew/brew/issues/6028 )

Sayangnya Homebrew masih belum memiliki cara menginstal yang jelas untuk versi yang lebih lama.

Untungnya, untuk kebanyakan formula ada cara yang jauh lebih mudah daripada kekacauan berbelit-belit yang dulu diperlukan. Berikut adalah petunjuk lengkap yang digunakan bashsebagai contoh:

brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install bash@4.4.23
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Ini menciptakan formula@versionketukan khusus Anda yang dapat Anda instal per contoh di atas. Catatan penting adalah bahwa Anda mungkin perlu brew unlink bashjika sebelumnya telah menginstal versi standar / terbaru dari formula dan kemudian brew link bash@4.4.23untuk menggunakan versi spesifik Bash Anda (atau formula lain di mana Anda memiliki versi terbaru dan yang lebih lama diinstal).

Kelemahan potensial dari metode ini adalah Anda tidak dapat dengan mudah beralih antar versi karena menurutnya brewmerupakan "formula yang berbeda".

Jika Anda ingin dapat menggunakan brew switch $FORMULA $VERSIONAnda harus menggunakan metode selanjutnya.


Metode Scripted (Disarankan)

Contoh ini menunjukkan menginstal bash 4.4.23 yang lebih lama, contoh yang berguna karena bashrumus saat ini menginstal bash 5.

  • Pertama instal versi terbaru dari formula dengan brew install bash
  • kemudian brew unlink bash
  • kemudian instal versi yang lebih lama yang Anda inginkan per potongan di bawah ini
  • akhirnya gunakan brew switch bash 4.4.23untuk mengatur symlink ke versi Anda

Jika Anda melakukan brew upgradesetelah menginstal versi yang lebih lama tanpa menginstal yang terbaru, maka yang terbaru akan terinstal mengacaukan versi yang lebih lama, kecuali Anda terlebih dahulu dieksekusi brew pin bash.

Langkah-langkah di sini HINDARI menyematkan karena mudah dilupakan dan Anda mungkin menyematkan ke versi yang menjadi tidak aman di masa mendatang (lihat Shellshock / etc). Dengan pengaturan ini, brew upgradeseharusnya tidak memengaruhi versi Bash Anda dan Anda selalu dapat berlari brew switch bashuntuk mendapatkan daftar versi yang tersedia untuk beralih.

Salin dan tempel dan edit exportbaris dari cuplikan kode di bawah ini untuk memperbarui dengan versi dan nama formula yang Anda inginkan, lalu salin dan tempel sisanya apa adanya dan itu akan menggunakan variabel-variabel itu untuk melakukan keajaiban.

# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME

Saat Anda yakin versi ada dalam rumus, Anda dapat menggunakan yang berikut ini:

# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
 --format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')

Setelah Anda mengekspor hash komit yang ingin Anda gunakan, Anda dapat menggunakan ini untuk menginstal versi paket itu.

brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install

Ikuti petunjuk dalam output rumus untuk memasukkannya ke PATH Anda atau menjadikannya sebagai shell default Anda.


12

Pada versi homebrew terbaru (0.9.5 pada tulisan ini) akan ada resep khusus untuk versi tong homebrew yang ingin Anda instal. Contoh:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Maka lakukan brew install mongodb26seperti biasa.

Dalam hal bahwa Anda telah menginstal versi terbaru, pastikan untuk menghapus link versi terbaru dan link versi yang diinginkan: brew unlink mongodb && brew link mongodb26.


Meskipun ini dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Erik

1
@Erik Terima kasih, sudah diperbaiki.
Alex Sharp

11

Masalahnya homebrew/versionsadalah seseorang harus memiliki versi perangkat lunak tertentu yang terdaftar dalam repositori agar Anda dapat menggunakannya. Juga, karena brew versionstidak lagi didukung, solusi lain diperlukan. Untuk solusi yang menunjukkan penggunaan brew switch, ini hanya akan berfungsi jika Anda belum melakukan brew cleanupkarena versi perlu ada di komputer Anda.

Saya memiliki masalah dengan keinginan untuk menginstal versi lama yang spesifik docker-machineyang tidak tercantum dalam homebrew/versions. Saya memecahkan ini menggunakan di bawah ini, yang juga harus bekerja untuk perangkat lunak yang diinstal buatan. Contoh di bawah ini akan digunakan docker-machinesebagai paket yang ingin saya turunkan dari versi 0.5.0 ke 0.4.1.

  1. Buka Formuladirektori homebrew Anda .
    Anda dapat menentukan ini dengan menjalankan brew info [any package name]. Misalnya, brew info docker-machineberi saya garis yang menunjukkan saya jalan - /usr/local/Cellar/docker-machine/0.5.0. Ini memberitahu saya bahwa pada mesin saya, homebrew diinstal pada /usr/localdan Formula direktori saya secara default di/usr/local/Library/Formula

  2. Temukan file formula spesifik (.rb) untuk paket Anda. Karena saya ingin menurunkan versi docker-machine, saya dapat melihat docker-machine.rbfile.

  3. Dapatkan riwayat versi untuk file formula ini . Masukkan git log docker-machine.rb. Ini akan mencantumkan riwayat komit lengkap untuk file ini. Anda akan melihat output seperti ini:

    ...lebih 

    komit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Penulis: BrewTestBot 
    Tanggal: Kamis 5 Nov 16:14:18 2015 +0000

        docker-machine: perbarui 0,5.0 botol.

    komit 8f615708184884e501bf5c16482c95eff6aea637
    Penulis: Vincent Lesierse 
    Tanggal: Sel 27 Okt 22:25:30 2015 +0100

        buruh pelabuhan-mesin 0,5.0

        Mesin docker yang diperbarui menjadi 0,5.0

        Menutup # 45403.

        Ditandatangani oleh: Dominyk Tiller 

    komit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Penulis: BrewTestBot 
    Tanggal: Sen 21 Sep 14:04:04 2015 +0100

        docker-machine: perbarui 0.4.1 botol.

    komit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Penulis: BrewTestBot 
    Tanggal: Minggu 16 Agt 09:05:56 2015 +0100

        docker-machine: perbarui 0.4.1 botol.

    ...lebih

Bagian yang sulit adalah menemukan komit terbaru untuk versi spesifik yang Anda inginkan. Dalam contoh di atas, saya dapat memberitahu versi terbaru 0.4.1 berkomitmen dengan ini berkomitmen tag: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. Komit di atas titik ini mulai menggunakan versi 0.5.0 (entri log git terdaftar dari terbaru ke tanggal paling awal).

  1. Dapatkan versi sebelumnya dari file formula. Menggunakan tag komit dari langkah # 3 (Anda dapat menggunakan 6 karakter pertama), Anda bisa mendapatkan versi yang lebih lama dari file formula menggunakan yang berikut ini:

    git checkout 5970e1 docker-machine.rb

  2. Copot versi paket Anda saat ini. Jalankan saja perintah pembuatan bir normal untuk menghapus instalasi versi paket Anda saat ini.
    Ex.brew uninstall docker-machine

  3. Instal versi paket yang lebih lama Sekarang, Anda hanya dapat menjalankan perintah install brew normal dan itu akan menginstal formula yang sudah Anda checkout. Ex.brew install docker-machine

Anda mungkin perlu menautkan kembali dengan menggunakan brew link docker-machinejika perlu.

Jika suatu saat Anda ingin kembali ke versi terbaru dari paket tertentu, masuk ke direktori Formula dan mengeluarkan perintah berikut pada file formula Anda (.rb)

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

Kemudian Anda bisa brew uninstall docker-machinedan brew install docker-machineuntuk mendapatkan versi terbaru dan tetap seperti itu ke depan.


1
Sangat teliti menulis @ rchawdry, terima kasih. BTW: untuk menemukan komit yang cocok dengan versi yang Anda inginkan, cepat tambahkan parameter --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek

Bagi saya, jalannya adalah/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
alias

Saya tidak dapat menemukan cukup riwayat versi untuk cairominuman dengan cara ini. Jawaban @ sealocal menunjukkan lebih banyak, untuk beberapa alasan.
akauppi

11

Ini tahun 2020 dan sebagian besar jawaban sudah usang

Situasi saya: postgresqlditingkatkan dari 11 menjadi 12 secara tidak sengaja. Saya ingin menyimpan 11.

  1. Hentikan DB:
brew services stop postgresql
  1. Instal Postgres 11:
brew install postgresql@11
  1. Aktifkan:
brew link postgresql@11 --force
  1. (Opsional) Ganti nama direktori data DB dari postgresmenjadi postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Mulai DB:
brew services start postgresql@11

Jika Anda memiliki kesalahan, periksa /usr/local/var/log/postgresql@11.log(perhatikan @ 11).


6
Ini hanya berfungsi untuk kasus khusus postgresql @ 11 yang secara eksplisit disimpan oleh pengelola Homebrew untuk membantu dengan migrasi datastore (dilakukan dengan perintah khusus brew postgresql-upgrade-database). Jawaban ini tidak berguna untuk hampir semua formula lainnya.
Adam Wróbel

@ AdamWróbel Saya sudah memutuskan ini tidak apa-apa untuk menjawab pertanyaan awal tentang Postgres . brew postgresql-upgrade-databaseuntuk upgrade . Jawaban saya adalah tentang menggunakan versi Postgres yang lebih lama . Cukup berpindah binari tidak akan bekerja.
Max Malysh

Pengguna NodeJS yang tidak menggunakan manajer versi misalnya nvm, FYI Saya beruntung menggunakan teknik ini untuk rilis LTS yang lebih lama. Setidaknya pada saat penulisan v10 & v12 harus tersedia, mis. brew install node@12 Formulae.brew.sh/formula/node
paws

9

Instal versi paket minuman lama (contoh Flyway 4.2.0)

Temukan homebrew git dir lokal Anda atau klon Homebrew / homebrew-core secara lokal

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

ATAU

git clone git@github.com:Homebrew/homebrew-core.git

Daftar semua versi yang tersedia

git log master -- Formula/flyway.rb

Salin ID komit untuk versi yang Anda inginkan dan instal secara langsung

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb


mengapa tidak lari saja brew install Formula/flyway.rbdari homebrew-coredirektori? itu bekerja untuk saya tanpa menggunakan raw.github..alamat
kangkyu

9

Saya sudah mencoba sebagian besar solusi di sini dan mereka sudah usang. Saya harus menggabungkan beberapa ide dari sini dengan pekerjaan saya sendiri. Sebagai hasilnya, saya membuat skrip untuk membantu saya melakukan pekerjaan berat yang dapat Anda temukan di sini

Pemakaian:

brewv.sh formula_name desired_version

6

itu bisa dilakukan dengan sangat mudah untuk versi terakhir minuman.

brew tap homebrew/versions
brew install subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8  # for postgresql 8 (which you ask)

2
... jika seseorang ingin membuat resep versi untuk paket itu.
clacke

6

Tidak ada yang benar-benar berfungsi untuk kasus saya (Python), jadi saya akan menambahkan 2 sen:

cd `brew --prefix`
git log Library/Formula/python.rb

Output terlihat seperti ini:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <dominyktiller@gmail.com>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <rakkesh@users.noreply.github.com>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <git@tim-smith.us>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

Saya ingin versi 2.7.11jadi hash saya adalah cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(atau cf5da05singkatnya). Selanjutnya, saya memeriksa versi itu dan menginstal rumus python:

git checkout cf5da05
brew install python

Akhirnya, bersihkan:

git checkout master

2
Kehidupan berubah dan jawaban ini paling relevan. Jangan lupa HOMEBREW_NO_AUTO_UPDATEdan baca github.com/Homebrew/brew/issues/1188
Wile E.

Perintah yang benar adalah cd brew --prefix /Homebrewdangit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei

Tetapi bahkan itu tidak berhasil karena /Library/Tapsdiabaikan.
Iulian Onofrei

Jangan lupakan HOMEBREW_NO_AUTO_UPDATE. Ya, jangan lupakan hal yang Anda butuhkan sampai setelah Anda tahu Anda membutuhkannya. xD
Josh Habdas

Bagaimana dengan yang ini? HOMEBREW_NO_INSTALL_CLEANUPbukankah ini sesuatu yang perlu Anda ingat?
kangkyu

6

Jika Anda tidak dapat menemukan versinya brew search <formula> , Anda juga dapat mencoba memeriksa log komit untuk rumus Anda untuk menemukan versi yang Anda inginkan:

berikut adalah contoh untuk menginstal versi nginx via brew yang lebih lama:

Dari sana, kita dapat menginstal 1.6.3dengan ur sha dan raw git:

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb


3

Saat ini cara lama untuk menginstal versi formula tertentu telah usang. Jadi sepertinya kita harus menggunakan brew edit [formula]. Misalnya katakan kita ingin menginstal 62.1versi icu4c(diperlukan misalnya untuk postgresql 10.5). Maka Anda harus melakukannya

> brew edit icu4c
# drops you to editor

Di sini Anda harus mengubah url, versiondan sha256(mungkin juga mirror) ke 62.1string yang sesuai .

url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"

kemudian jalankan brew reinstall icu4cuntuk mengunduh 62.1versi akhirnya .


bagaimana cara mendapatkannya sha256 ? dalam kasus sayahttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo

1

Perbarui pada Library / Formula / postgresql.rb baris 8 ke

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

Dan MD5 pada jalur 9 hingga

fcc3daaf2292fa6bf1185ec45e512db6

Simpan dan keluar.

brew install postgres
initdb /usr/local/var/postgres

Sekarang dalam tahap ini Anda mungkin menghadapi postgresql could not create shared memory segmentkesalahan, untuk mengatasi pembaruan /etc/sysctl.confseperti ini:

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

Coba initdb /usr/local/var/postgreslagi, dan itu akan berjalan lancar.

Untuk menjalankan postgresql saat mulai

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

Semoga itu bisa membantu :)


1

Saya baru saja menyalin rilis lama elasticsearch ke /usr/local/Cellar/elasticsearchdirektori.

$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3

Itu dia. Mungkin bermanfaat bagi siapa saja.


Retas buruk rupa. Tapi, ya itu berhasil juga untuk saya, ketika saya mencoba mencari & menginstal versi konsul yang lebih lama! Bersulang.
darkdefender27

0

Saya memutuskan, bertentangan dengan penilaian saya yang lebih baik, untuk membuat formula untuk Maven 3.1.1, yang homebrew/versionstidak ada. Untuk melakukan ini:

  1. Saya bercabang homebrew/versions di github.
  2. Saya simetris dari $(brew --prefix)/Library/Tapske copy pekerjaan lokal garpu saya. Saya akan memanggil inimy-homebrew/versions .
  3. Saya menguji dengan menentukan rumus sebagai my-homebrew/versions/<formula> .
  4. Saya mengirim permintaan tarik ke homebrew/versionsuntuk formula baru saya.

Yay.



0

Saya membuat alat untuk memudahkan proses yang ditentukan dalam jawaban ini .

Untuk menemukan paket pkgdengan versi a.b.c, jalankan:

$ brew-install-specific pkg@a.b.c

Daftar ini akan melakukan komit pada pkgrumusan rumahan yang menyebutkan versi yang diberikan bersama dengan url GitHub mereka.

Matching versions:
1. pkg: update a.b.c bottle.
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>

Select index: 

Verifikasi komit dari URL yang diberikan, dan masukkan indeks komit yang dipilih.

Select index: 2
Run:
  brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb

Salin dan jalankan perintah yang diberikan untuk menginstal.

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.