Homebrew'a formülün belirli bir sürümünü nasıl yüklerim? Örneğin, en son 9.0 yerine postgresql-8.4.4.
Homebrew'a formülün belirli bir sürümünü nasıl yüklerim? Örneğin, en son 9.0 yerine postgresql-8.4.4.
Yanıtlar:
TLDR: brew install postgresql@8.4.4
Daha fazla ayrıntı için aşağıdaki cevaba bakınız .
* ( Homebrew ile eski yazılım sürümlerini kurmak / kullanmak için daha kapsamlı bir iş akışı sağlamak için cevabımı yeniden düzenledim. Eski sürümü daha iyi bulduysanız not eklemekten çekinmeyin. )
En basit durumla başlayalım:
Homebrew yeni bir formül yüklediğinde, formülü gibi bir sürüm dizine koyar /usr/local/Cellar/postgresql/9.3.1
. Bu klasöre yalnızca sembolik bağlantılar genel olarak yüklenir. Prensip olarak, bu yüklü iki sürüm arasında geçiş yapmayı oldukça kolaylaştırır. (*)
Homebrew'u daha uzun süredir kullanıyorsanız ve daha eski sürümleri hiç kaldırmamışsanız (örneğin brew cleanup
), programınızın bazı eski sürümlerinin hala etrafta olma olasılığı vardır. Önceki sürümü etkinleştirmek istiyorsanız, brew switch
bunu yapmanın en kolay yolu budur.
Eski sürümün yüklü olup olmadığını brew info postgresql
(veya brew switch postgresql <TAB>
) kontrol edin :
$ 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
Bazı eski sürümlerin zaten kurulu olduğunu görüyoruz. Bunu kullanarak etkinleştirebiliriz 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
Nelerin etkinleştirildiğini iki kez kontrol edelim:
$ 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
Yıldızın *
yeni etkinleştirilen sürüme taşındığını
(*) Lütfen brew switch
yalnızca eski sürümün tüm bağımlılıkları hala geçerli olduğu sürece çalışır. Bazı durumlarda, eski sürümün yeniden oluşturulması gerekebilir. Bu nedenle,brew switch
kullanım çok uzak olmayan iki sürüm arasında geçiş yapmak istediğinde yararlıdır.
Özellikle daha büyük yazılım projeleri için, belirli bir yazılım parçasının birkaç (potansiyel olarak API ile uyumsuz) ana sürümü için yeterince yüksek bir talep olması büyük olasılıktır. Mart 2012 itibariyle, Homebrew 0.9 bunun için bir mekanizma sağlar: brew tap
& homebrew versiyon deposu.
Bu sürüm deposu, birkaç formül için eski sürümlerin backport'larını içerebilir. (Çoğunlukla sadece büyük ve ünlü olanlar, ancak elbette postgresql için de birkaç formüle sahip olacaklar.)
brew search postgresql
nereye bakacağınızı gösterecek:
$ brew search postgresql
postgresql
homebrew/versions/postgresql8 homebrew/versions/postgresql91
homebrew/versions/postgresql9 homebrew/versions/postgresql92
Yazarak kolayca yükleyebiliriz
$ 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
# …
Bunun musluğa otomatik olarak dokunduğuna dikkat edin homebrew/versions
. (İle kontrol edin brew tap
, ile kaldırın brew untap homebrew/versions
.) Aşağıdakiler eşdeğer olurdu:
$ brew tap homebrew/versions
$ brew install postgresql8
Desteklenen sürüm formülleri güncel kaldığı sürece, bu yaklaşım muhtemelen eski yazılımlarla başa çıkmanın en iyi yoludur.
Aşağıdaki yaklaşımlar çoğunlukla tamlık için listelenmiştir. Her ikisi de demlemek deposundan bazı ölümsüz formülü diriltmeye çalışır. Değişen bağımlılıklar, formül spesifikasyonundaki API değişiklikleri veya yalnızca indirme URL'sindeki bir değişiklik nedeniyle işler çalışmayabilir veya çalışmayabilir.
Tüm formül dizini bir git deposu olduğundan, düz git komutlarını kullanarak belirli sürümleri yükleyebilirsiniz. Ancak, eski sürümün mevcut olduğu bir taahhüde ulaşmak için bir yol bulmamız gerekiyor.
a) tarihi zamanlar
Arasında Ağustos 2011 ve Ekim 2014 , homebrew bir vardı brew versions
kendi SHA hash ile mevcut tüm sürümlerini tükürdü komutu. Ekim 2014 itibariyle,brew tap homebrew/boneyard
kullanabilmeniz için önce bir işlem yapmanız gerekir. Musluğun adından da anlaşılacağı gibi, muhtemelen bunu sadece son çare olarak yapmalısınız.
Örneğin
$ 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
Gördüğünüz gibi, kullanılmamasını tavsiye ediyor. Homebrew, iç buluşsal yöntemiyle bulabileceği tüm sürümleri tükürüyor ve size eski formülleri almanın bir yolunu gösteriyor. Hadi deneyelim.
# 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
Eski postgresql sürümü yüklendiğine göre, depomuzu temiz tutmak için en son formülü yeniden yükleyebiliriz:
$ git checkout -- Library/Formula/postgresql.rb
brew switch
eski ile yeni arasında değişecek arkadaşın.
b) tarih öncesi zamanlar
Özel ihtiyaçlar için, aynı zamanda homebrew repo ile kendi kazma deneyebilirsiniz.
$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb
git log -S
dizenin '8.4.4'
dosyaya eklendiği veya kaldırıldığı tüm taahhütleri arar Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Sonuç olarak iki taahhüt alıyoruz.
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
Açıkçası, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
ilgilendiğimiz taahhüt. Bu taahhüt oldukça eski olduğundan, tüm homebrew kurulumunu düşürmeye çalışacağız (bu şekilde, formül API'sının az çok geçerli olduğu garanti edilmektedir):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Git deponuzda referansı tutmak için son komutu atlayabilirsiniz.
Bir not: Eski taahhüdü kontrol ederken, homebrew kurulumunuzu geçici olarak düşürürsünüz. Bu nedenle, dikkatli olmalısınız çünkü homebrew'daki bazı komutlar en son sürümden farklı olabilir.
Çok zor değil ve daha sonra kendi havuzunuza yükleyebilirsiniz. Eskiden Homebrew-Versions'dı , ama şimdi artık üretilmiyor.
Postgresql'in belirli bir sürümünü saklamak ve doğal brew update; brew upgrade
prosedürü yaptığınızda güncellenmesini durdurmak istiyorsanız, bir formül sabitleyebilirsiniz :
$ brew pin postgresql
Sabitlenmiş formüller listelenir /usr/local/Library/PinnedKegs/
ve en son değişiklikleri ve güncellemeleri getirmek istediğinizde, tekrar sabitlemesini kaldırabilirsiniz :
$ brew unpin postgresql
git checkout fa992 -- Library/Formula/postgresql.rb
. İşiniz bittiğinde, formüldeki değişiklikleri kullanarak geri alabilirsiniz git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb
.
brew update
Git deposunu kurmanız gerekebilir .
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
, o zaman git checkout 4cce79d -- Formula/go.rb
ve kullanabilirsiniz HOMEBREW_NO_AUTO_UPDATE=1 brew install go
.
Homebrew / sürümleri kullanımdan kaldırıldığına göre, Homebrew / core yeni bir adlandırma biçimiyle formüllerin birden çok sürümünü desteklemektedir.
Belirli bir sürümü yüklemek için, örneğin postgresql 9.5:
$ brew install postgresql@9.5
Kullanılabilir sürümleri listelemek için @ ile bir arama yapın:
$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔ postgresql@9.4 postgresql@9.5 postgresql@9.6
fatal: Not a git repository (or any of the parent directories): .git
. Ben sadece cd
bunun yerine dizinin içine (FORMULANAME.rb olmadan), sonragit checkout 120938
cd /usr/local
Önce emin olun .
brew unlink FORMULANAME
brew versions <formula>
artık desteklenmiyor.
brew link --force postgresql@9.5
. Zaten daha yeni bir sürüm yüklediyseniz ve eski sürümün varsayılanınız olmasını istiyorsanız, orada da bir sürüm gerekir --overwrite
.
Önceden yüklediğiniz bir formülün eski bir sürümünü yüklemenin çok daha kolay bir yolu var. Basitçe kullanın
brew switch [formula] [version]
Örneğin, düzenli olarak Node.js 0.4.12 ve 0.6.5 arasında değişiyorum:
brew switch node 0.4.12
brew switch node 0.6.5
Yana brew switch
sadece sembolik değiştirir, çok hızlı. Harici Komutlar altındaki Homebrew Wiki ile ilgili diğer belgelere bakın .
Güncelleme: 1/15/2015
brew install <url>
( brew unlink
ilk önce gerekebilir brew unlink docker
) , örneğin )brew switch docker 1.3.3
brew switch docker 1.4.1
Bu özden
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
brew install <url>
, brew unlink <formulaname>
. Aksi takdirde, bu, bir formülün belirli bir sürümüne geçmenin en basit ve en kısa yoludur.
Raw
Ne dosyadaki düğmeye ?!
brew log <formula>
@ Halfcube'un önerisi doğrultusunda, bu gerçekten iyi çalışıyor:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
package@version
git log master -- Formula/PACKAGENAME.rb
taahhüt geçmişini almak için kullanın , doğru taahhüdü kontrol edin ve ardından brew install Formula/PACKAGENAME.rb
yüklemek için çalıştırın .
brew unlink
önce ihtiyacın var brew install
.
mxcl
?
brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rb
ama muhtemelen @
işareti nedeniyle hata alıyorum : 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.
Herhangi bir fikir?
Diğer karmaşık çözümlerden daha iyi bir alternatif çözüm keşfettim.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
Bu, PostgreSQL 8.4.8'i indirip yükleyecektir
Repo ve yorum arama adımlarını izleyerek bu çözümü buldum .
Küçük bir araştırmadan sonra birisinin demlenecek nadir formüller koleksiyonu olduğunu buldu.
MySQL 5.1.x'i arıyorsanız, bunu deneyin.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb
sözdizimi hatalarıyla başarısız görünüyordu.
raw
URL'yi unutmayın
homebrew-versions
gitti ve her şey açıktır core
genel durum için bunu hemen: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb
. github.com/Homebrew/homebrew-core/commits/master/Formula/… adresineCOMMIT
giderek bulunabilir .
Yüklemek istediğiniz paketin sürümüyle eşleşen formülü ve formülün geçmişindeki belirli bir taahhüdü tanımlama stratejisini kullanabilirsiniz.
t
Dosya bulucuyu etkinleştirmek için klavyenizdeki tuşuna basın .
Belki de en alakalı görünen bir formül belirleyin: Formula/mysql.rb
sizi bir forumla dosyası konumuna getirin: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .
Https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb adresindeHistory
bulunan düğmeyi tıklayarak düzeltme geçmişine bakın. . MySQL 5.7.10 ile ilgileniyorsanız, 5.7.11'den önceki bir GitHub taahhüdüne giden en son revizyonu tıklayabilirsiniz:
NOT: Taahhüt geçmişi tarayıcınıza yüklenmezse, GitHub'ın önerisi uyarınca konsolunuzdaki işlem geçmişini görüntülemeniz gerekebilir. GitHub'da bu taahhüdü görmek istiyorsanız yukarıdaki URL'yi yukarıdaki SHA ile değiştirin. Alternatif olarak, aşağıdaki 7. adıma atlayın.
Taahhüt uygulandıktan sonra mysql.rb dosyasının kaynağını görüntülemek için "Görünüm" düğmesini tıklatın.
Ardından ham kaynağı görüntülemek için "Ham" düğmesini tıklayın.
URL'yi kopyalayın. Alternatif olarak, mysql.rb
formülünüzü ve bu formülün belirli sürümünü tanımlamak için URL'yi dosya adıyla kendiniz oluşturun (aşağıdaki URL'de SHA'yı teslim edin).
İle yükleyin $ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
NOT: Bu yanıt, braumeister.org web sitesinin kaldırılmasını hesaba katarak güncellenmiştir. Aynı prensip geçerlidir, braumeister formül sürümlerinde gezinmek için başlangıç dostu bir yol sağlamıştır.
Diğer cevapların çoğu artık kullanılmıyor. Ne yazık ki Homebrew'un, eski bir sürümü kurmanın yerleşik bir yolu yoktur, ancak bu sürüm ayrı bir formül olarak mevcut değilse (ör. python@2
, postgresql@9.4
…).
Neyse ki, diğer formüller için, eskiden gerekli olan kıvrımlı karmaşadan çok daha kolay bir yol var. İşte tam talimatlar:
Günlüklerde doğru sürümü arayın:
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›
Bu işlem sağlama karmalarının bir listesini gösterecektir. Uygun olanı alın (çoğunlukla oldukça açık olmalı ve genellikle en yeni (yani üst) olanı alın.
Formülün yukarı akış deposunda bulunduğu URL'yi bulun:
brew info ‹formula› | grep ^From:
URL'yi düzeltin:
github.com
ileraw.githubusercontent.com
blob/master
İlk adımda bulduğumuz tamamlama karmasıyla değiştirin .master
Daha önce bulunan URL'de taahhüt karmasıyla değiştirerek istediğiniz sürümü yükleyin , örn:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
(Son adım daha brew unlink ‹formula›
önce çalışmayı gerektirebilir .)
Kullanmak istediğiniz bir sağlama karmasını kopyaladıysanız, bu sürümü yüklemek, değeri ve bash
taahhüt karmanızı ve istediğiniz formülü değiştirmek için bu örnekte benzer bir şey kullanabilirsiniz .
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
Bu örnek, bash 5 yerine bash 4.4.23'ü yükler, ancak brew upgrade
daha sonra gerçekleştirirseniz , ilk çalıştırılmadıkça bash 5 üste yüklenir brew pin bash
. Bunun yerine öncelikle en son yüklemeniz gerekir, iğneleme OLMADAN bu yumuşak hale getirmek brew install bash
, sonra brew unlink bash
yukarıdaki komut başına istiyorum eski sürümü yüklemek sonra, ve sonra kullanmak brew switch bash 4.4.23
eski sürüme sembolik kurmak. Şimdi bir brew upgrade
Bash sürümünüzü etkilememelidir. Şunları yapabilirsiniz brew switch bash
geçmek için mevcut sürümlerin listesi almak için.
Aynı hedefe ulaşmanın başka bir yolu şöyledir:
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.
Bu, formula@version
özel örneğinizde yukarıdaki örneğe göre yükleyebileceğiniz bir a oluşturur . Dezavantajı, muhtemelen Bash'inizi veya başka bir formülü kullanmak için hala brew unlink bash
ve sonra ihtiyacınız olması brew link bash@4.4.23
.
brew log
böylece ekstra -F
veya --grep
seçenekler benim için başarısız oldu.
brew log
. Git günlük iletisini düzgün bir şekilde ayrıştırmayı veya alternatif olarak git log
doğrudan ilgili depoda çalıştırmayı gerektirdiğinden, şimdi yeni bir sürüm yazmak için rahatsız edilemem . Ve changelog, bu kırılma değişiminden bile bahsetmiyor gibi görünüyor. Sinir bozucu ötesinde.
External Command
için yapı içinde çalışmak gerekebilir . docs.brew.sh/External-Commandsbrew
git log
brew extract
kullanımı bulabildiğim tek yerdi , teşekkürler!
Homebrew'u Maven 2.2.1'e geri dönmek için kullandım. brew install maven
yüklü Maven 3.0.3'ten .
Önce maven dirsini orada bırakmalısın
$ demlemek unav maven
Demleme musluk komutunu kullanın
$ brew tap homebrew / versiyonlar '/ Usr / local / Library / Taps / homebrew-version' klasörüne kopyalama ... uzak: Nesneleri sayma: 590, bitti. uzak: Nesneleri sıkıştırma:% 100 (265/265), bitti. uzak: Toplam 590 (delta 362), yeniden kullanılan 549 (delta 325) Nesneleri alma:% 100 (590/590), 117,49 KiB | 79 KiB / s, bitti. Çözülen deltalar:% 100 (362/362), bitti. Bantlanmış 50 formül
Şimdi maven2 formülünü yükleyebilirsiniz:
$ brew install maven2 ==> http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz indiriliyor ################################################## ######################% 100.0 /usr/local/Cellar/maven2/2.2.1: 10 dosya, 3,1M, 6 saniyede oluşturulmuş
$ mvn - sürüm Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700) Java sürümü: 1.6.0_37 Java ana sayfası: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Varsayılan yerel ayar: en_US, platform kodlaması: MacRoman İşletim Sistemi adı: "mac os x" sürüm: "10.7.4" arch: "x86_64" Aile: "mac"
Düzenleme:
Ayrıcabrew switch maven 2.2.1
farklı bir sürüme geçmek için .
Edit: Apache Maven projesi repolarını yeniden düzenledi. Bu değişikliği, bu değişikliği hesaba katarak güncelledi.
@Tschundeee ve @ Debilski'nin güncellemesi 1 tarafından açıklanan iş akışına dayanarak , prosedürü otomatikleştirdim ve bu komut dosyasına temizleme ekledim .
İndirin , yolunuza koyun ve brewv <formula_name> <wanted_version>
. Spesifik OP için:
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
O zamandan beri güncellenmiş bir cevap @ lance-pollard'ın zaten çalışma yanıtı olarak ne gönderdiğini ekler.
Bir Formülün belirli bir sürümünü yükleme (bu örnekte kullanılan formül terraform
):
git log master -- Formula/terraform.rb
repoyu yerel olarak klonladıysanız, github'un geçmişinden taahhütlü sürümü alın .brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Maalesef Homebrew'un daha eski bir sürümünü kurmanın belirgin bir yerleşik yolu yok.
Neyse ki, çoğu formül için eskiden gerekli olan kıvrımlı karmaşadan çok daha kolay bir yol var. bash
Örnek olarak kullanılan talimatların tamamı şunlardır :
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.
Bu formula@version
, yukarıdaki örneğe göre yükleyebileceğiniz özel dokunuşunuzda oluşturur . Önemli bir not, brew unlink bash
formülün varsayılan / en son sürümünü daha önce yüklediyseniz ve sonra brew link bash@4.4.23
Bash'in belirli sürümünü (veya en son ve daha eski bir sürümün yüklü olduğu başka bir formülü) kullanmak için muhtemelen yapmanız gerekir.
Bu yöntemin potansiyel bir dezavantajı, sürümler arasında kolayca ileri geri geçiş yapamamanızdır, çünkü brew
ona göre "farklı bir formül" dir.
Kullanmak istiyorsanız bir brew switch $FORMULA $VERSION
sonraki yöntemi kullanmalısınız.
Bu örnek, bash
formül şu anda bash 5'i yüklediğinden faydalı bir örnek olan eski bash 4.4.23'ü yüklemeyi göstermektedir .
brew install bash
brew unlink bash
brew switch bash 4.4.23
sürümünüze sembolik bağlantıları ayarlamak içinEğer bir gerçekleştirdiyseniz brew upgrade
öncelikle en son yüklemeden eski bir sürümünü yükledikten sonra ilk idam sürece, o zaman son, senin eski sürümü clobbering yüklü alacağıbrew pin bash
.
Buradaki adımları unutmaktan kaçının, çünkü unutmak kolaydır ve gelecekte güvensiz hale gelen bir sürüme sabitleyebilirsiniz (bkz. Shellshock / etc). Bu kurulum brew upgrade
ile Bash sürümünüzü etkilemez ve her zaman çalıştırabilirsinizbrew switch bash
geçiş yapmak için mevcut sürümlerin bir listesini almak için .
export
İstediğiniz sürüm ve formül adıyla güncellemek için aşağıdaki kod snippet'indeki satırları kopyalayıp yapıştırın ve düzenleyin , ardından geri kalanını olduğu gibi kopyalayıp yapıştırın ve sihri yapmak için bu değişkenleri kullanır.
# 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
Sürümün formülde bulunduğundan eminseniz, aşağıdakileri kullanabilirsiniz:
# 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}')
Kullanmak istediğiniz işlem karmasını dışa aktardıktan sonra, paketin o sürümünü yüklemek için bunu kullanabilirsiniz.
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
PATH'nize koymak veya varsayılan kabuğunuz olarak ayarlamak için formül çıkışındaki talimatları izleyin.
Homebrew'un en yeni sürümünde (bu yazıdan itibaren 0.9.5) yüklemek istediğiniz homebrew fıçısı sürümü için belirli bir tarif olacaktır. Misal:
$ brew search mongodb
mongodb mongodb24 mongodb26
Sonra brew install mongodb26
normal gibi yapın.
Zaten son sürümünü yüklemiş olduğu durumda, en son sürümünü bağlantısını kaldırmak emin olun ve istenen versiyonunu bağlantı: brew unlink mongodb && brew link mongodb26
.
İle ilgili sorun homebrew/versions
şu ki, birisinin onu kullanabilmeniz için o yazılımın belirli bir sürümünün depoda listelenmiş olması gerekir. Ayrıca, brew versions
artık desteklenmediği için başka bir çözüm gereklidir. Kullanmayı gösteren çözümler için brew switch
, yalnızca brew cleanup
sürümün bilgisayarınızda bulunması gerektiğinden bunu yapmadıysanız çalışır.
Uygulamasının eski bir sürümünü yüklemek istemeyle ilgili bir sorun yaşadım docker-machine
Listede olmayanhomebrew/versions
. Bunu, demlenmiş herhangi bir yazılım için de çalışması gereken aşağıdakileri kullanarak çözdüm. Aşağıdaki örnek docker-machine
, 0.5.0 sürümünden 0.4.1 sürümüne geçmek istediğim paket olarak kullanılacaktır .
Homebrew Formula
dizininize gidin.
Bunu çalıştırarak belirleyebilirsiniz brew info [any package name]
. Örneğin brew info docker-machine
, bana bir yol gösteren bir çizgi verir /usr/local/Cellar/docker-machine/0.5.0
. Bu bana makinemde homebrew'un/usr/local
ve Formula
dizinimin varsayılan olarak/usr/local/Library/Formula
Paketiniz için belirli formül dosyasını (.rb) bulun.
Eski sürüme geçmek istediğimden docker-machine
bir docker-machine.rb
dosya görebiliyorum .
Bu formül dosyası için sürüm geçmişini alın . Enter git log docker-machine.rb
. Bu işlem, bu dosya için tüm tamamlanma geçmişini listeler. Aşağıdaki gibi bir çıktı göreceksiniz:
...Daha taahhüt 20c7abc13d2edd67c8c1d30c407bd5e31229cacc Eser Sahibi: BrewTestBot Tarih: Perş 5 Kas 16:14:18 2015 +0000 liman işçisi makine: 0.5.0 şişeyi güncelleyin. taahhüt 8f615708184884e501bf5c16482c95eff6aea637 Eser Sahibi: Vincent Lesierse Tarih: Sal 27 Eki 22:25:30 2015 +0100 liman işçisi makine 0.5.0 Liman işçisi makine 0.5.0 olarak güncellendi Kapatır # 45403. İmzalayan: Dominyk Tiller taahhüt 5970e1af9b13dcbeffd281ae57c9ab90316ba423 Eser Sahibi: BrewTestBot Tarih: Pzt Eyl 21 14:04:04 2015 +0100 liman işçisi makine: 0.4.1 şişeyi güncelleyin. taahhüt 18fcbd36d22fa0c19406d699308fafb44e4c8dcd Eser Sahibi: BrewTestBot Tarih: Paz 16 Ağu 09:05:56 2015 +0100 liman işçisi makine: 0.4.1 şişeyi güncelleyin. ...Daha
Zor kısmı, istediğiniz belirli sürüm için en son taahhüdü bulmaktır. Yukarıdaki, ben etiketi işlemek son 0.4.1 sürümü ile bu işlendiği söyleyebilirim: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. Bu noktanın üstündeki taahhütler 0.5.0 sürümünü kullanmaya başlar (git log girişleri en sondan en erken tarihe kadar listelenir).
Formül dosyasının önceki bir sürümünü edinin. 3. adımdaki kesinleştirme etiketini kullanarak (ilk 6 karakteri kullanabilirsiniz), aşağıdakileri kullanarak formül dosyasının daha eski bir sürümünü alabilirsiniz:
git checkout 5970e1 docker-machine.rb
Mevcut paket sürümünüzü kaldırın.
Paketinizin geçerli sürümünü kaldırmak için normal demleme komutlarını çalıştırmanız yeterlidir.
Ör.brew uninstall docker-machine
Eski paket sürümünü yükleyin
Şimdi, normal demlemek yükleme komutunu çalıştırabilirsiniz ve ödeme yaptığınız formülü yükleyecektir. Ör.brew install docker-machine
brew link docker-machine
Gerekirse kullanarak yeniden bağlamanız gerekebilir.
Herhangi bir zamanda belirli bir paketin en son sürümüne geri dönmek isterseniz, Formula dizinine gidin ve formül dosyanızda (.rb) aşağıdaki komutları verin
git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb
O zaman yapabilirsin brew uninstall docker-machine
ve brew install docker-machine
son sürümü almak ve bu şekilde devam tutmak.
git log --grep 0.4.1 docker-machine.rb
.
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
cairo
Bu şekilde demleme için yeterli sürüm geçmişi bulamadım . @ sealocal'ın cevabı bir nedenden dolayı daha fazlasını gösterdi.
Durumum: postgresql
11'den 12'ye yanlışlıkla yükseltildi. 11 tutmak istiyorum.
brew services stop postgresql
brew install postgresql@11
brew link postgresql@11 --force
postgres
için postgres@11
:cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
brew services start postgresql@11
Herhangi bir hatanız varsa, kontrol edin /usr/local/var/log/postgresql@11.log
(@ 11'e dikkat edin).
brew postgresql-upgrade-database
. Bu cevap hemen hemen her formül için yararlı değildir.
brew postgresql-upgrade-database
, yükseltmeler içindir . Cevabım eski bir Postgres sürümünü kullanmakla ilgili . Sadece ikili dosyaları değiştirmek işe yaramaz.
nvm
, örneğin , FYI Eski LTS sürümleri için bu tekniği kullanma şansım oldu. En azından v10 ve v12 yazarken mevcut olmalıdır, örneğin brew install node@12
formulae.brew.sh/formula/node
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
VEYA
git clone git@github.com:Homebrew/homebrew-core.git
git log master -- Formula/flyway.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb
brew install Formula/flyway.rb
gelen homebrew-core
dizinden? raw.github..
adres kullanmadan benim için çalıştı
demleme son sürümü için çok kolay yapılabilir.
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)
Bunların hiçbiri benim durumumda gerçekten işe yaramadı (Python), bu yüzden 2 sentimi ekleyeceğim:
cd `brew --prefix`
git log Library/Formula/python.rb
Çıktı şöyle görünür:
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. ...
Sürümü istiyorum 2.7.11
böylece karma cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(veya cf5da05
kısa). Sonra, bu sürüme göz atın ve formülü yükledim python
:
git checkout cf5da05
brew install python
Son olarak, temizleyin:
git checkout master
HOMEBREW_NO_AUTO_UPDATE
ve github.com/Homebrew/brew/issues/1188 adresini ziyaret edin
cd
demlemek --prefix /Homebrew
vegit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Taps
yok sayılıyor.
HOMEBREW_NO_AUTO_UPDATE
. Evet, ihtiyacınız olan şeyi keşfettikten sonra ihtiyacınız olan şeyi unutmayın . xD
HOMEBREW_NO_INSTALL_CLEANUP
bu hatırlamanız gereken bir şey değil mi?
Sürümünüzü brew search <formula>
bulamıyorsanız, istediğiniz sürümü bulmak için formülünüzün taahhüt günlüklerini gözden geçirmeyi de deneyebilirsiniz:
demleme yoluyla nginx'in eski bir sürümünü yüklemek için bir örnek:
görmek nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Oradan 1.6.3
, sha ve raw git url ile kurabiliriz :
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
Şu anda belirli formül sürümlerini yüklemenin eski yolları kullanımdan kaldırılmıştır. Yani kullanmak zorundayız gibi görünüyor brew edit [formula]
. Diyelim ki bir 62.1
sürümünü kurmak istiyoruz icu4c
(örneğin için gerekli postgresql 10.5
). O zaman yapmak zorundasın
> brew edit icu4c
# drops you to editor
Burada değiştirmek zorunda kalacak url
, version
ve sha256
(belki de mirror
tekabül kadar) 62.1
dizeleri.
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"
sonra brew reinstall icu4c
nihayet 62.1
sürümü indirmek için çalıştırın .
sha256
? benim durumumdahttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
Library / Formula / postgresql.rb satır 8'e güncelleştirme
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
9 numaralı MD5
fcc3daaf2292fa6bf1185ec45e512db6
Kaydet ve çık.
brew install postgres
initdb /usr/local/var/postgres
Şimdi bu aşamada postgresql could not create shared memory segment
, bu güncellemeyi geçici olarak çözmek için şu hatayla karşılaşabilirsiniz /etc/sysctl.conf
:
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
initdb /usr/local/var/postgres
Tekrar deneyin ve sorunsuz çalışmalıdır.
Postgresql'yi başlangıçta çalıştırmak için
launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist
Umarım yardımcı olur :)
Daha önce elasticsearch'ün eski bir sürümünü /usr/local/Cellar/elasticsearch
dizine kopyaladım .
$ 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
Bu kadar. Belki herkes için yararlıdır.
Daha iyi bir yargıya karşı Maven 3.1.1 için olmayan bir formül yaratmaya karar verdim homebrew/versions
. Bunu yapmak için:
homebrew/versions
üzerine çatalladım.$(brew --prefix)/Library/Taps
yerel çalışma kopyasına bağlandım. Bunu arayacağım my-homebrew/versions
.my-homebrew/versions/<formula>
.homebrew/versions
Yeni formülüm için bir çekme isteği gönderdim .Yaşasın.
Şu anda varsayılan demleme formüllerinde bulunmayan sürümler için, https://github.com/buildtools-version-taps/homebrew-versions-tap-tool adresindeki araçla kendi musluğunuzu kolayca oluşturabilirsiniz.
brew tap-new user/repo
ve sonra brew extract --version='Major.minor' FORMULA user/repo
ve sonra brew install FORMULA@Major.minor
.
Bu cevapta öngörülen süreci kolaylaştırmak için bir araç oluşturdum .
pkg
Sürümü a.b.c
olan bir paket bulmak için şunu çalıştırın:
$ brew-install-specific pkg@a.b.c
Bu, pkg
GitHub url'leriyle birlikte verilen sürümden bahseden homebrew formülünde taahhütleri listeler .
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:
Verilen URL'den kesinliği doğrulayın ve seçilen kesinliğin dizinini girin.
Select index: 2
Run:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb
Yüklemek için verilen komutu kopyalayın ve çalıştırın.
postgresql
Garip bir tanesidir çünkü Homebrew'da bir noktada ayrı sürümleri vardıbash
, aynı formül adı içinde 4.x'ten 5.x'e gittiği için daha iyi bir örnek olabilir. Bkz. Stackoverflow.com/a/55764594/3794873