Verwenden Sie mit Homebrew auf dem Mac eine bestimmte Paketversion pro Verzeichnis

Verwenden Sie mit Homebrew auf dem Mac eine bestimmte Paketversion pro Verzeichnis

Ich wechsle häufig zu einer bestimmten Version eines Pakets, das mitselbstgebrautesbeim Projektwechsel.

$ cd ~/Desktop/projects/project1
$ brew switch phantomjs 2.0.0
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/2.0.0

Und dann beim Projektwechsel:

$ cd ~/Desktop/projects/project2
$ brew switch phantomjs 1.9.8
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/1.9.8

Ist es irgendwie möglich, dies zu automatisieren, sodass ich brewinnerhalb eines bestimmten Projekts einen automatischen Wechsel zu einer angegebenen Version erzwingen kann?

Wäre schön, wenn man .homebrewim Zielverzeichnis eine Datei mit etwa diesem Namen erstellen und von dort aus die benötigten Pakete und Versionen angeben könnte.

Antwort1

Um Ihre Frage direkt zu beantworten: Schauen Sie sichondir. Ich habe es nicht persönlich verwendet, aber es scheint zu Ihrem Anwendungsfall zu passen.

ondir ist ein kleines Programm zum Automatisieren von Aufgaben, die bestimmte Verzeichnisse betreffen. Es funktioniert, indem es Skripte in Verzeichnissen ausführt, wenn Sie diese betreten und verlassen.

Um jedoch einen Moment darüber nachzudenken ...

Das Austauschen von Paketversionen beim Betreten/Verlassen von Verzeichnissen über die Shell ist aus verschiedenen Gründen riskant. (Stellen Sie sich zunächst zwei Terminalsitzungen vor, jede in ihrem eigenen Verzeichnis.)

Was Sie verlangen (Homebrew-Konfiguration pro Verzeichnis) ist effektiv eine virtuelle Maschine oder ein Container, da es über die "Virtualisierung" einer Sprache hinausgeht (z. B. Ruby überrbenv, Python übervirtualenv`) und ist stattdessen für alle Systempakete. Sie sollten erwägen, einLandstreicherBox für Ihre Projekte, um sie ordnungsgemäß von Ihrem Mac zu isolieren und Ihre Abhängigkeiten besser zu verwalten.

Wie auch immer, zurück zu Ihrem aktuellen Problem ...

PhantomJS ist ein eigenständiges Tool, das praktischerweise auch alsstatisch verknüpfte Binärdatei. Wir können dies zu unserem Vorteil nutzen. Anstatt PhantomJS-Versionen über auszutauschen brew switch, laden Sie einfach jede statisch verknüpfte Version herunter, fügen Sie die Binärdatei in ein ~/bin, benennen Sie sie entsprechend (z. B. phantomjs-1.9.8) und passen Sie Ihre Skripte an, um die gewünschte Version aufzurufen. Wenn Sie die Skripte nicht anpassen können, müssen Sie ein anderes Schema entwickeln (projektspezifische Symlinks usw.).

Oder, wie vorgeschlagen inIhre Anfrage auf GitHub, Sie können Ihre auch anpassen PATH, entweder über ondiroder ein Wrapping-Skript um beliebige Laufwerke phantomjs.

(Ja, für diezum zweiten Mal in einer NachtIch habe jemanden auf ein Tool hingewiesen, das ich persönlich nicht verwendet habe.)

verwandte Informationen