Pertanyaan Homebrew menginstal versi formula tertentu?


Bagaimana cara menginstal versi spesifik formula di homebrew? Misalnya, postgresql-8.4.4 bukan 9.0 terbaru.


1709
2017-10-21 12:58


asal


Jawaban:


(Saya telah mengedit kembali 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 dengan lebih baik.)

Mari mulai dengan kasus yang paling sederhana:

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

Ketika homebrew menginstal formula baru, itu menempatkannya dalam direktori berversi seperti /usr/local/Cellar/postgresql/9.3.1. Hanya tautan simbolis ke folder ini yang kemudian dipasang secara global. Pada prinsipnya, ini membuatnya sangat 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 bahwa beberapa versi lama dari program Anda mungkin masih ada. Jika Anda hanya ingin mengaktifkan versi sebelumnya, brew switch adalah 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 periksa kembali 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 itu * telah pindah ke versi yang baru saja diaktifkan

(*) Harap dicatat bahwa brew switch hanya berfungsi selama semua dependensi versi lama masih ada. Dalam beberapa kasus, membangun kembali versi yang lebih lama mungkin diperlukan. Karena itu, menggunakan brew switch sebagian besar berguna ketika seseorang ingin beralih di antara dua versi yang tidak terlalu jauh.

2) Periksa, apakah versi tersedia sebagai ketukan

Khusus untuk proyek perangkat lunak yang lebih besar, sangat mungkin ada permintaan yang cukup besar untuk beberapa versi utama perangkat lunak tertentu. Pada Maret 2012, Homebrew 0.9 menyediakan mekanisme untuk ini: brew tap & itu versi homebrew gudang.

Repositori versi tersebut dapat mencakup backports versi lama untuk beberapa rumus. (Sebagian besar hanya yang besar dan terkenal, tetapi tentu saja mereka juga memiliki beberapa rumus untuk postgresql.)

brew search postgresql akan menunjukkan tempat untuk 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
# …

Perhatikan bahwa ini secara otomatis disadap itu homebrew/versions keran. (Periksa dengan brew tap, hapus dengan brew untap homebrew/versions.) Berikut ini akan sama:

$ brew tap homebrew/versions
$ brew install postgresql8

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

3) Coba beberapa rumus dari masa lalu

Pendekatan berikut sebagian besar didaftar untuk kelengkapan. Keduanya mencoba untuk menghidupkan kembali beberapa formula mayat hidup dari gudang pembuatan bir. Karena ketergantungan yang berubah, perubahan API dalam spesifikasi rumus atau hanya perubahan di URL unduhan, hal-hal mungkin atau tidak dapat berfungsi.

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

a) waktu bersejarah

Antara Agustus 2011 dan Oktober 2014, homebrew punya brew versions perintah, yang meludahkan semua versi yang tersedia dengan hash SHA masing-masing. Pada Oktober 2014, Anda harus melakukan brew tap homebrew/boneyard sebelum kamu bisa menggunakannya. Seperti namanya, Anda mungkin hanya 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, itu menyarankan untuk tidak menggunakannya. Homebrew memuntahkan semua versi yang dapat ditemukan dengan heuristik internalnya dan menunjukkan kepada Anda cara untuk mengambil rumus lama. Ayo 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 penyimpanan repositori kita:

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

brew switch adalah temanmu untuk mengganti antara yang lama dan yang baru.

b) zaman prasejarah

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

$ git log -S'8.4.4' -- Library/Formula/postgresql.rb

git log -S mencari semua commit di mana string '8.4.4' ditambahkan atau dihapus dalam file Library/Formula/postgresql.rb. Kami mendapatkan dua commit 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, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 adalah komitmen yang kami minati. Karena komitmen ini sudah cukup lama, kami akan mencoba untuk menurunkan versi pemasangan homebrew lengkap (dengan begitu, rumus API lebih atau kurang 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 melewatkan perintah terakhir untuk menyimpan referensi di repositori git Anda.

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

4) Tuliskan rumus secara manual

Itu tidak terlalu sulit dan Anda dapat mengunggahnya Homebrew-Versi.

A.) Bonus: Pinning

Jika Anda ingin menyimpan versi tertentu, katakan postgresql, keliling dan hentikan agar tidak diperbarui saat Anda melakukannya secara alami brew update; brew upgrade prosedur, Anda bisa pin sebuah formula:

$ brew pin postgresql

Rumus yang disematkan tercantum dalam /usr/local/Library/PinnedKegs/ dan setelah Anda ingin membawa perubahan dan pembaruan terbaru, Anda bisa membuka peniti lagi:

$ brew unpin postgresql

2117
2017-11-11 20:04



Alur Kerja Sederhana

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

Untuk menginstal versi tertentu, mis. postgresql 9.5 Anda cukup jalankan:

$ 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

632
2018-03-22 23:29



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

brew switch [formula] [version]

Sebagai contoh, saya berganti-ganti secara teratur antara Node.js 0.4.12 dan 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Sejak brew switch hanya mengubah symlink, itu sangat cepat. Lihat dokumentasi lebih lanjut tentang Homebrew Wiki di bawah Perintah Eksternal.


425
2017-12-14 16:33



Pembaruan: 15/1/2015

  • Temukan riwayat komit dari perangkat lunak dan versi yang diinginkan. misalnya Saya perlu beralih dari docker versi 1.4.1 ke 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Lihat file dengan tombol ini: enter image description here 
  • Klik tombol Raw: List item
  • Salin URL (docker.rb url dalam contoh ini) dari bilah alamat
  • brew install <url> (mungkin harus brew unlink pertama, mis. brew unlink docker)
  • brew switch docker 1.3.3
  • Beralih kembali ke buruh pelabuhan 1.4.1 brew switch docker 1.4.1

Dari ini inti

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

183
2017-07-19 23:42



Saya telah menemukan solusi alternatif yang lebih baik dari 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 a komentar di repo.

Setelah sedikit riset menemukan bahwa seseorang memiliki koleksi formulars langka untuk diseduh.


Jika Anda mencari MySQL 5.1.x, cobalah ini.

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

92
2017-09-19 11:55



Sepanjang garis saran @ halfcube, ini bekerja sangat baik:

  1. Temukan perpustakaan yang Anda cari https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Klik itu: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Klik tombol "riwayat" untuk melihat commit lama: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Klik yang Anda inginkan: "postgresql: perbarui versi ke 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Klik tautan "mentah": https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

50
2017-10-16 22:12



Anda dapat menggunakan strategi mengidentifikasi rumus dan komitmen tertentu dalam sejarah rumus yang sesuai dengan versi paket yang ingin Anda pasang.

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

  2. tekan t pada 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 pada History tombol, yang terletak di https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb. Jika Anda tertarik pada MySQL 5.7.10, Anda mungkin ingin mengklik revisi terbaru sebelum ke 5.7.11, yang menavigasi ke commit GitHub:

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

CATATAN: Anda mungkin harus melihat sejarah komit di konsol Anda sesuai saran GitHub jika riwayat komit tidak dimuat di browser Anda. Ganti SHA komit di atas di URL jika Anda tertarik untuk melihat bahwa melakukan commit di GitHub. Atau, lompat ke langkah 7, di bawah.

  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 URL sendiri dengan mysql.rb nama file untuk mengidentifikasi rumus Anda dan versi khusus dari rumus itu (diidentifikasi oleh komit SHA di URL di bawah).

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

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

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

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


49
2018-02-24 05:38



Saya baru saja menggunakan Homebrew untuk kembali ke Maven 2.2.1 karena yang sederhana brew install maven diinstal Maven 3.0.3.

Pertama Anda harus meninggalkan dir maven di sana

$ buat unlink maven

Gunakan perintah tap minuman

$ menyeduh homebrew / versi
Kloning ke '/ usr / local / Library / Taps / homebrew-version' ...
remote: Menghitung benda: 590, selesai.
remote: Mengompresi objek: 100% (265/265), selesai.
remote: 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:

$ buat menginstal 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 --version
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, penyandian platform: MacRoman
Nama OS: "mac os x" versi: "10.7.4" arch: "x86_64" Keluarga: "mac"

Edit: Anda juga bisa brew switch maven 2.2.1 untuk beralih ke versi lain.

Edit: Proyek Apache Maven mereorganisasi repo mereka. Memperbarui jawaban ini untuk memperhitungkan perubahan ini.


27
2018-02-12 20:35



Berdasarkan alur kerja yang dijelaskan oleh @tschundeee dan @ Pembaruan Debilski 1, Saya mengotomatiskan prosedur dan menambahkan pembersihan skrip ini.

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

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

:)


21
2017-07-09 14:06