<p>Garn Global Add installiert Binärdateien nicht richtig</p>

Erstellt am 11. Okt. 2016  ·  120Kommentare  ·  Quelle: yarnpkg/yarn

Möchten Sie eine Funktion anfordern oder einen Fehler melden?
_Fehler_

Wie ist das aktuelle Verhalten?

➜  ~  yarn global add create-react-app
yarn global v0.15.1
warning No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
warning [email protected]: The engine "rhino" appears to be invalid.
warning [email protected]: The engine "rhino" appears to be invalid.
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Installed [email protected] with binaries:
      - create-react-app
✨  Done in 8.43s.
➜  ~  which create-react-app
create-react-app not found

Was ist das erwartete Verhalten?

➜  ~  yarn global add create-react-app
yarn global v0.15.1
warning No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
warning [email protected]: The engine "rhino" appears to be invalid.
warning [email protected]: The engine "rhino" appears to be invalid.
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Installed [email protected] with binaries:
      - create-react-app
✨  Done in 8.43s.
➜  ~  which create-react-app
/usr/local/bin/create-react-app

Bitte geben Sie Ihre node.js, Garn und Betriebssystemversion an.

➜  ~  system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: macOS 10.12 (16A323)
      Kernel Version: Darwin 16.0.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled

➜  ~ node --version
v6.7.0
➜  ~  yarn --version
0.15.1
cat-bug cat-compatibility

Hilfreichster Kommentar

Führen Sie yarn global bin und fügen Sie es Ihrem $PATH .

Alle 120 Kommentare

Das gleiche Verhalten hier auf dem gleichen System.

Nur eine Anmerkung, um zu verdeutlichen, dass dies nicht nur für die Erstellung-Reagieren-App gilt. mean-cli zum Beispiel zeigt das gleiche Problem.

Habe dies auch auf Ubuntu 15.10 System

Führen Sie yarn global bin und fügen Sie es Ihrem $PATH .

Dies behebt es. Dies ist hier jedoch in keiner Weise dokumentiert: https://yarnpkg.com/en/docs/cli/global
(Ich meine ja, yarn global bin ist dokumentiert, aber das Beispiel legt nicht nahe, dass das Hinzufügen zu Ihrem PFAD erforderlich ist.)

Auf meinem Computer gibt dies /usr/local/Cellar/node/6.7.0/bin . Bedeutet dies, dass alle meine globalen Binärdateien an diese Knotenversion gebunden sind und ich sie bei einem Update neu installieren muss? Das scheint chaotisch, nicht wahr?

Eine andere Sache, die mir aufgefallen ist, ist, dass "$(yarn global bin)" ^[[2K^[[1G/usr/local/Cellar/node/6.7.0/bin zurückgibt. Mache ich etwas falsch, wenn ich versuche, export="${PATH}:$(yarn global bin)" zu meinen .zshrc hinzuzufügen?

Es ist nicht AFAIK dokumentiert. Es sollte sein. Fühlen Sie sich frei, eine PR einzureichen.
Lesen Sie dies, um zu verstehen, warum der globale Pfad versionierungsspezifisch ist.

@wokalski Sind Sie sicher, dass Sie auf das richtige Problem verwiesen haben? Ich verstehe nicht einmal, warum das so ist ...

@Fahrradflucht sorry! Repariert.

Okay, verstanden!

Dann bleibt mir diese Frage:

Eine andere Sache, die mir aufgefallen ist, ist, dass "$ (Garn global bin)" ^ [[2K ^ [[1G / usr / local / Cellar / node / 6.7.0 / bin zurückgibt. Mache ich etwas falsch, wenn ich versuche, meiner .zshrc export = "$ {PATH}: $ (Garn global bin)" hinzuzufügen?

Ich würde eine neue Ausgabe einreichen, wenn ich sicherer wäre, dass ich keinen dummen Fehler gemacht habe 😁

@Fahrradflucht Es sind nicht nur Sie, ich habe das gleiche Problem unter MacOS mit einfachen alten Bash.

export PATH="/usr/local/Cellar/node/6.3.1/bin:$PATH"

funktioniert

export PATH="$(yarn global bin):$PATH"

Nicht. Ich habe eine Ausgabe geöffnet. https://github.com/yarnpkg/yarn/issues/851

yarn global bin ist /usr/bin auf meinem System. Ich möchte, dass es /usr/local/bin , um mich vor Dauerwellenkopfschmerzen zu bewahren.

Jetzt, wo ich darüber nachdenke ... warum gibt yarn global bin ~/.yarn-cache/.global/node_modules/.bin/ ?

@kaihendry Weil Yarn von Homebrew installiert wurde

Gleiche Probleme unter macOS

Yarn scheint keine Binärdateien in $(yarn global bin) zu installieren, was, da ich nvm unter OSX verwende, /Users/username/.nvm/versions/node/v6.9.2/bin

Nachdem Sie yarn global add nodemon es nirgends zu finden, und nichts in einer ausführlichen Installation scheint zu zeigen, dass Dateien in ein bin-Verzeichnis gestellt werden.

AKTUALISIEREN

yarn global remove nodemon und yarn global add nodemon behoben und richtig in $(yarn global bin) . Immer noch nichts im ausführlichen Protokoll ...

genau das gleiche Problem wie bei @ c0bra angegeben.

Ich sehe einen Bericht, der in 0.20 RC behoben wurde. Kann jemand bitte überprüfen?

Ich bin gerade auf dieses Problem mit v0.20.0 gestoßen, habe es jedoch behoben, indem ich das Paket entfernt und erneut hinzugefügt habe, wie in @ c0bra erwähnt.

Arbeitet immer noch nicht für mich in v0.20.3:

$ cd $(yarn global bin)
$ ls 
tern@  yarn@  yarnpkg@
$ yarn global add ember-cli
yarn global v0.20.3
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - ember
warning No license field
Done in 3.81s.
$ cd $(yarn global bin)
$ ls
tern@  yarn@  yarnpkg@

Immer noch kaputt in 0.20.3 installiert über Homebrew unter MacOS.

Hatte heute das gleiche Problem (Homebrew-Installation, Garn v0.20.3). Es wurde festgestellt, dass ich vergessen habe, den Ordner bin in meinen PATH zu exportieren, bevor ich globale Pakete installiert habe. Ich habe es exportiert mit:
export PATH="$(yarn global bin):$PATH"
und dann Entfernen und erneutes Hinzufügen globaler Pakete, die die Binärdateien korrekt verknüpft haben. (Danke @ c0bra)

Für mich (macOS Sierra und Garn 0.21.3 über Homebrew) funktioniert dies jetzt für mich (wo es vorher nicht war). Musste yarn global remove ----- && yarn global add ---- .

Ich habe das gleiche Problem mit @erizocosmico mit Yarn v0.21.3 (ich verwende nvm) festgestellt. Es wurde durch die folgenden Schritte behoben:

  1. Fügen Sie Folgendes in meine .zshrc -Datei ein:
export PATH="$(yarn global bin):$PATH"
  1. yarn global remove [package-name] dann yarn global add [package-name]

Das einzige Problem kann sein, dass das Paket tatsächlich in /usr/local/Cellar/node/7.7.1/bin installiert ist, da bei der Installation von Yarn über Homebrew auch eine ausführbare Node-Datei unter dem Pfad von Homebrew installiert wird , was seltsam erscheint und möglicherweise mit nvm in Konflikt steht. Und da die .zshrc -Datei unter dem Pfad von HOME ausgeführt wurde, wurde das globale Paket immer im bin-Ordner von Homebrew's Node installiert.

  1. Die Korrekturen hier sind nur vorübergehend. Wenn ein neues Knotenupdate eintritt, funktionieren Ihre globalen Pakete nicht mehr und müssen erneut verknüpft werden. Vorerst für globale Pakete auf npm umgestellt.

  2. Auch wenn Sie globale Pakete über npm installiert haben, werden yarn diese nicht bemerken.

Wie ich das behoben habe:

  1. $ yarn global remove ___

  2. Stellen Sie sicher, dass NVM bezogen ist, bevor Sie Yarn zu Ihrem PATH hinzufügen

# First...
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

# Then...
export PATH="$(yarn global bin):$PATH"
  1. $ yarn global add ___

  2. Bestätigen Sie den globalen Paketinstallationspfad

$ which ___
# Should give you...
/path/to/nvm/versions/v7.6.0/bin/___

Ich habe die oben vorgeschlagenen Lösungen ausprobiert und es hat bei mir nicht funktioniert.
Ich habe gesehen, dass dies durch die verschiedenen Arten der Garninstallation und die Position der Garnbinärdateien verursacht werden kann (in meinem Fall wurde das Garn mit apt-get installiert und ist unter /usr/bin verfügbar).

Der Fehler bei der Installation von Ember war:

$ yarn global add ember-cli
yarn global v0.21.3
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - ember
error We don't have permissions to touch the file "/usr/bin/ember".

Achten Sie auf die letzte Zeile:
Garn hat versucht, den Glutbehälter in den Ordner (root) zu legen: /usr/bin

Zu diesem Zeitpunkt habe ich zwei Alternativen gefunden:

  • a) sudo yarn global add ember-cli
    Die Installation von Glut mit sudo funktioniert, da dann Garn in /usr/bin
  • b) den Ordner yarn/global/node_modules/.bin in den $ PATH legen; Fügen Sie beispielsweise am Ende Ihrer .(whatever)rc -Datei Folgendes hinzu:
    export PATH=$PATH:$GOBIN:~/.config/yarn/global/node_modules/.bin/
    Auf diese Weise sind die globalen Garn-Binärdateien zum $PATH verfügbar

Das hat bei mir funktioniert!

  1. Fügen Sie Folgendes in meine .zshrc-Datei ein:
    export PATH = "$ (Garn global bin): $ PATH"
  2. Garn global entfernen [Paketname] dann Garn global hinzufügen [Paketname]

Hier dasselbe:

yarn --version
0.21.3
yarn global add mocha
success Installed "[email protected]" with binaries: [..]
$ mocha
-bash: mocha: command not found

Habe es funktioniert mit:
npm install --global mocha

Ein Upgrade mit Homebrew verursacht ein weiteres Problem, da mit Garn installierte Behälter nicht verschoben werden. Das hatte ich:

$ yarn global bin
/usr/local/Cellar/node/7.4.0/bin
$ ls $(yarn global bin)
bower     ember     node      phantomjs

jetzt upgraden:

$ brew update && brew upgrade

und jetzt das:

$ yarn global bin
/usr/local/Cellar/node/7.8.0/bin
$ ls $(yarn global bin)
node

Glut rufen:

$ ember
-bash: ember: command not found

Binärdateien sind weg, müssen manuell verschoben werden 😦

Mac OS X

zsh --version
zsh 5.3.1 (x86_64-apple-darwin15.6.0)
nvm --version
0.33.1
node --version
v7.8.0
npm --version
4.2.0
yarn --version
0.22.0

Ich habe versucht zu setzen:
export PATH="$(yarn global bin):$PATH"
in meiner .zshrc-Datei wie oben vorgeschlagen ... mein Terminal neu gestartet, passiert nichts. Ich habe sogar meine Maschine neu gestartet. Nichts passiert.

Ich habe versucht, das folgende Code-Snippet in meine .zshrc-Datei einzugeben:
export PATH="$PATH: Garn global bin "
Das wird auf https://yarnpkg.com/de/docs/install#mac -tab vorgeschlagen, aber es passiert immer noch nichts.

Irgendwelche anderen Vorschläge? :) :)

Ich habe meine ausführbare Datei ember nach dem Upgrade auf Garn v0.22.0 verloren:

$ brew update && brew upgrade

Das Entfernen und erneute Hinzufügen löste jedoch das Problem für mich:

$ yarn global remove ember-cli
$ yarn global add ember-cli

Ja, das ist die Problemumgehung. Aber wir sollten einen Weg finden, um Dinge einfach zu aktualisieren und in ein neues Verzeichnis zu verschieben, wenn Knoten aktualisiert werden.

Warum gibt es keine Liste für globale Pakete? Gibt es einen Grund, warum wir nicht .yarnrc.json oder .package.json oder so haben und dort eine normale Paketdatei mit einer Liste von Abhängigkeiten haben, in der die globalen Pakete installiert werden?

Wenn ich yarn global bin ausführe, ist der Fehler aufgetreten: No such file or directory: 'global' , ich bin nicht sicher, was schief geht.
Garn - Version # 0.22

yarn global remove typescript && yarn global add typescript Problem für mich behoben.

OSX: El Capitan.
Knoten: 4.7.2 (bis n)

Derzeit tritt dies nach einem Upgrade von 0.17 auf 0.22 . Das hier vorgeschlagene

Mac OS X

zsh --version
zsh 5.3.1 (x86_64-apple-darwin15.6.0)
nvm --version
0.33.1
node --version
v7.9.0
npm --version
4.2.0
yarn --version
0.23.2

Ich habe versucht, diese Codefragmente in mein .zshrc-Profil einzufügen -> 1, 2 & 3.

  1. Gemäß den obigen Empfehlungen:
    export PATH="$(yarn global bin):$PATH"
  1. Laut https://yarnpkg.com/de/docs/install
    export PATH="$PATH: Garn global bin "

  2. Ich habe versucht, nichts von den Codesnippets in meiner .zshrc zu haben.

Ich habe mein Terminal neu gestartet, nichts passiert.
Ich habe sogar meine Maschine neu gestartet. Immer noch nichts.

Ich hatte das gleiche Problem und dies war meine Lösung:

Problem

  • Das Garn wurde mit brew installiert
  • Die Verwendung von yarn global add ... wird nicht auf dem von yarn global bin Pfad installiert, der in meinem Fall /usr/local/Cellar/node/7.9.0/bin
  • Der tatsächliche Pfad, unter dem yarn global add ... die Pakete installieren, ist ~/.config/yarn/global/node_modules/.bin

Lösung

  • Fügen Sie dies meiner Pfadkonfiguration hinzu:
export PATH="$PATH:$HOME/.config/yarn/global/node_modules/.bin"

Systemdetails

Mac OS 10.12.4 (16E195)
zsh --version
zsh 5.3.1 (x86_64-apple-darwin16.3.0)
node --version
v7.9.0
yarn --version
0.23.2
brew --version
Homebrew 1.1.12
Homebrew/homebrew-core (git revision a29be4; last commit 2017-04-14)

Ich habe ein ähnliches Problem. Die Ausgabe von yarn global bin ist /usr/local/bin . Die globale Installation von gulp-cli ohne sudo ( yarn global add gulp-cli ) ergibt error We don't have permissions to touch the file "/usr/local/bin/gulp" . Die globale Installation mit sudo ( sudo yarn global add gulp-cli ) ist erfolgreich, aber die Ausführung von gulp gibt bash: gulp: command not found .

Ebenfalls sehr eigenartig: Das Ausführen von sudo gulp erfolgreich (wenn Sie etwas falsch mit den Dauerwellen erraten, in /usr/local/bin und ./gulp ausführen, wird die Berechtigung verweigert, aber das Ausführen mit sudo funktioniert), das Ausführen von yarn global ls oder sudo yarn global ls Ausgaben

yarn global v0.22.0
warning No license field
Done in 0.26s.

Ich verwende Arch Linux mit npm 4.5.0, Garn 0.22.0 und Node v7.7.3.
Und ja, /usr/local/bin ist offensichtlich sowohl für meinen Benutzer als auch für den Root-Benutzer auf meinem Weg.

EDIT (Root- und Benutzerpfade):

[steventheevil@Steven-PC Downloads]$ su
Password: 
[root@Steven-PC Downloads]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/ruby/gems/2.4.0/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/steventheevil/.gem/ruby/2.4.0/bin
[root@Steven-PC Downloads]# exit
exit
[steventheevil@Steven-PC Downloads]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/ruby/gems/2.4.0/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/steventheevil/.gem/ruby/2.4.0/bin

Gleiches gilt für ArchLinux.

In meinem Fall wurde das Paket yo (und andere) auf /home/agilob/.config/yarn/global/node_modules/yo/lib installiert. Ich versuche, Jhipster zu verwenden, aber yanr behauptet, dass es /usr/bin , um Pakete zu installieren:

$ yarn global bin
/usr/bin

Es hat nicht einmal die Berechtigung, dort Dateien zu erstellen.

Befehl ausführen:
/home/agilob/.config/yarn/global/node_modules/yo/lib/cli.js jhipster hat richtig funktioniert.

Danke @bcessa , ich $HOME/.config/yarn/global/node_modules/.bin wie erwartet.

Ich sehe auch, dass der Pfad global bin nicht synchron ist:

  • macOS 10.12.4
  • node.js LTS installiert von nodejs.org pkg
  • Garn installiert durch Installationsskript
$ which node
/usr/local/bin/node

$ node --version
v6.10.2

$ which yarn
/Users/jdub/.yarn/bin/yarn

$ yarn --version
0.23.2

$ yarn global bin
/usr/local/bin

# But yarn global add installs to ~/.config/yarn/global, so I've added it to my path, e.g.

$ which testim
/Users/jdub/.config/yarn/global/node_modules/.bin/testim

@OmgImAlexis Ich

Alles gut, immer noch schön, einen Ref zwischen den Problemen zu haben, falls ein einziges Commit beide Probleme behebt. 👍

Erleben Sie dies auch mit Garn 0,22 auf Himbeere 😃

Die global installierten Pakete wie CRA, eslint usw. funktionieren nur für mich.

aber yarn global ls zeigt nichts als getan

Dieses Problem tritt auch auf, wenn der Knoten von nvm installiert wird. Ich glaube nicht, dass er Homebrew-spezifisch ist.

$(yarn global bin) ist bereits auf meinem Weg, aber zum Beispiel:

> nvm install 6.10.2
> npm install -g yarn
> which yarn
~/.nvm/versions/node/v6.10.2/bin/yarn
> yarn global bin
~/.nvm/versions/node/v6.10.2/bin
> yarn global add yo
> ls ~/.nvm/versions/node/v6.10.2/bin
node    npm     yarn    yarnpkg

In diesem Beispiel generiert yarn global add yo nicht die Binärdatei yo im Bin-Pfad.

Hier habe ich einige Tests hinzugefügt: https://github.com/yarnpkg/yarn/pull/3238 und für mich ist dies geschlossen. Es gibt einige Eckfälle, aber es gibt andere Probleme.

@bestander

Garn installiert von Garn-0.23.4.msi, Plattform: Windows 10, MinGW.
Mein globaler Befehl funktioniert nicht nach dem globalen Hinzufügen von Garn * .
Es scheint, dass Garn globale Pakete speichert in:

%USERPROFILE%\AppData\Local\Yarn\config\global\node_modules\.bin

Der globale Befehl funktioniert, nachdem er dem Systempfad hinzugefügt wurde.

Ich stoße auch auf dieses Problem mit nvm.

Gleiches Problem dort:

sharikovvlad:global svlad$ node -v
v7.10.0
sharikovvlad:global svlad$ yarn --version
0.24.4
sharikovvlad:global svlad$ sw_vers -productVersion 
10.12.4
# macOS Sierra 10.12.4

Ich habe Garn mit Brew Package Manager installiert.

Ich habe das Problem offensichtlich behoben, indem ich dies zu .bash_profile hinzugefügt habe:

export PATH="$(yarn global bin):$PATH"sharikovvlad:~ svlad$

Aber offensichtlich werden alle Pakete nach der Knotenaktualisierung beschädigt.

Ich habe versucht, global add ios-deploy zu fädeln. Die Binärdatei befindet sich in ~ / .config / yarn / global / node_modules / ios-deploy / build / Release /, jedoch nicht in / usr / local / bin oder einem anderen Speicherort im PATH.

Gleiches Problem in Node v7.8.0 und Yarn Version v24.6 ... Ich habe auch versucht, das Flag --prefix verwenden

yarn global add prettier --prefix /Users/newuser/.nvm/versions/node/v7.8.0/

Es funktioniert nicht.

Ich bin mir nicht sicher, warum dieses Problem geschlossen ist, wenn die Leute immer noch Probleme haben, herauszufinden, wo das verdammte Garn Binärdateien ablegt, sie scheinbar in einem oder mehreren Ordnern (.config und .npm) installieren, aber auf einen anderen (Keller) zeigen. & wenn die Garn-Website dieses Problem nicht klar mit Empfehlungen zur Klarheit dokumentiert hat.

Ich kann meinen Atom-Editor nicht dazu bringen, meinen von Garn installierten globalen Eslint zu finden und zu verwenden.

Ich habe es geschafft, das zu umgehen. Das Problem scheint zu sein, dass sich die Homebrew-Version von Node später als die NVM-Installation zum PATH hinzufügt. Nachdem ich das herausgefunden hatte, war alles, was ich tat, die Deinstallation des installierten Node Homebrew, und es funktionierte.

@volkanunsal Ich bin nicht sicher, ob ich verstehe, was du meinst

Entschuldigung, ich meinte in meinem Fall, dass das Problem war, dass ich auch einen anderen hatte
Installation von Node. Der Pfad dieser Installation wurde nach dem NVM hinzugefügt
Installation, und so hatte Vorrang. Dort wurde Garn gelegt
die globalen Pakete, aber es war nicht der Knoten, den ich benutzte, also meine Befehle dazu
Das Paket, das ich mit Garn Global installiert habe, ist fehlgeschlagen. Das kann nicht das sein
das gleiche Problem in Ihrem Fall, aber ich dachte, es wäre erwähnenswert. Wenn da
Bei mehreren Installationen von Node verwendet Yarn diejenige, deren Pfad lautet
Zuletzt zum PATH Ihres Computers hinzugefügt.

Für mich durch Festlegen des Garnpräfixes behoben und alle Module neu installiert

yarn config set prefix $(npm config get prefix)

Beim Wechseln der Knotenversionen über nvm wird mein yarn global bin nicht aktualisiert, was ebenfalls die Hauptursache für das Problem zu sein scheint.

AKTUALISIEREN:
Auch nach dem manuellen Beheben eines falschen yarn global bin durch Entfernen des Ordners ~/.yarn und erneutes Installieren.
yarn global add appium immer noch nichts im globalen Ordner bin. Diese Funktion scheint völlig kaputt zu sein ...

Die hier diskutierte Auflösung scheint das Problem zu beheben. Fügen Sie dies zu .bash_profile

export PATH="$PATH:$HOME/.config/yarn/global/node_modules/.bin"

Nein nicht wirklich. Dies funktioniert in Situationen, in denen Sie Zugriff auf Ihre .bash_profile . Die meisten Programme selbst haben dies nicht (führen Sie npm test und Ihre package.json verwendet eine Binärdatei, die global mit Garn installiert ist. Sie haben kein Glück). Wenn Sie etwas global installieren, sollte es sofort ohne weitere Konfiguration verfügbar sein. Es ist in Ordnung, wenn die Binärdateien irgendwo auf der Festplatte in einem garnspezifischen Ordner installiert sind, solange ein Symlink zu /usr/lobal/bin .

Meine Testfälle für diesen Befehl wären (Unix-ähnliche Systeme):

  • Nach der Paketinstallation werden Symlinks für Binärdateien zu /usr/local/bin .
  • Stellen Sie nach dem Upgrade globaler Pakete sicher, dass die Symlinks noch funktionieren
  • Stellen Sie nach dem Aktualisieren von Garn (und möglicherweise dem Speichern global installierter Pakete irgendwo in einem Ordner mit Garnversion, z. B. path/to/yarn/vX.Y.Z/packages/... ) sicher, dass die Symlinks weiterhin funktionieren

Ähnliches Verhalten wie bei Homebrew.

Dies ist ein großes Problem, wenn Sie versuchen, Garn in einem Docker-Container zu verwenden.

@gossi , dies ist kein Problem mit einer einfachen Lösung.
Unter vielen Betriebssystemen ist / usr / local / bin nicht verfügbar. Möglicherweise benötigen Sie Root-Zugriff. Ein einzelner Speicherort reicht möglicherweise nicht aus, wenn Sie mehrere Versionen von Node (nvm) verwenden.

Fühlen Sie sich frei, eine ideale Lösung vorzuschlagen.

@bestander ok, beschränken wir uns auf Plattformen, auf denen /usr/local/bin verfügbar ist;)
Nvm ist ein weiteres Problem, das diesem untergeordnet werden sollte, um Hand in Hand miteinander zu spielen.

@bestander Wie löst NPM dieses Problem? Ist ihre Lösung anwendbar?

Gibt es jemanden da draußen, der sich mit all diesen globalen Bin-Pfaden über das Betriebssystem hinweg beschäftigen möchte?
Fühlen Sie sich frei, eine neue Ausgabe zu starten und PRs zu senden.
Der Code, der globale Bins aktualisiert, ist hier https://github.com/yarnpkg/yarn/blob/master/src/cli/commands/global.js#L72 und sieht recht einfach aus.

Ich denke, wir können hier eine großartige Benutzererfahrung machen, aber wir brauchen Hilfe.

@bestander Ich denke, das Problem ist in der updateCwd

sende eine PR :)

Ich habe immer noch dieses Problem :(

@JikkuJose Ich yarn global add prettier . Prettier wird unter dem Pfad .config/yarn/global/node_modules installiert.

Ich habe yarn global bin zu meinem $PATH hinzugefügt (auf meinem System sind das /usr/local/bin ), aber das ist nicht hilfreich, wenn dort keine Dinge installiert werden.

Garnversion: 0.27.5
Knotenversion: v6.11.1

Ich verwende den folgenden Befehl, um Gulp zu installieren:

$ yarn global add gulp

Aber das zeigt mir nichts:

$ ls -lah `yarn global bin` | grep gulp

$ cat /etc/issue
Ubuntu 17.04 \n \l
$ uname -a
Linux intrepid 4.10.0-28-generic #32-Ubuntu SMP Fri Jun 30 05:32:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ node --version
v8.1.3
$ nvm --version
0.33.2

Wie ist das noch ein Problem? npm leidet nicht darunter.

nur sagen.

Ich habe nur deswegen aufgehört, Garn zu verwenden. : /: /

War gut bis Garn 1.1.0, jetzt sind meine Globals nicht gefunden

success Installed "[email protected]" with binaries:
      - bower
✨  Done in 10.40s.
 $ bower
fish: Unknown command 'bower'
$ uname -a
Darwin wpa-25-242.dyn.huji.ac.il 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 P
ST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64

@hookdump @Spongman @bennypowers Wie Sie sehen können, ist dieses Problem geschlossen. Es wäre großartig, wenn Sie ein neues Problem mit Reproduktionsschritten und einigen Details zu Ihrer Systemkonfiguration einreichen könnten (wie Sie dies als Root-Benutzer versuchen, welche Ordnergarne standardmäßig schreibgeschützt sind usw.), die jemand reproduzieren und starten kann arbeiten daran.

Dieser Jemand kann auch Sie sein, wenn Sie interessiert sind!

Und dann bitte hier verlinken, denn dort hat Google alle hingeschickt.

Vielleicht haben @hookdump , @Spongman oder @bennypowers das gleiche Problem wie ich? https://github.com/yarnpkg/yarn/issues/4702 ?

Warum ist das Problem nahe, wenn es immer noch auftritt?

@yordis benutzt du zsh ?

In diesem Fall hängt das Problem Nr. 4702 möglicherweise mit Ihrem Problem zusammen

Wenn Ihre PATH-Umgebung nicht richtig eingestellt ist, müssen Sie dies beheben. Führen Sie yarn global bin und echo $PATH , um das gelöste Problem zu untersuchen

sollte nicht geschlossen werden. habe noch das Problem.

@ lili21 bitte eine neue Ausgabe

Ich habe das gleiche Problem mit zsh. yarn global bin gibt /home/dandv/.yarn/bin , was nicht in $ PATH enthalten ist.

~ yarn global add polymer-cli
yarn global v1.3.2
[1/4] Resolving packages...
warning polymer-cli > [email protected]: ...psst! Your project can stop working at any moment because its dependencies can change. Prevent this by migrating to Yarn: https://bower.io/blog/2017/how-to-migrate-away-from-bower/
warning polymer-cli > [email protected]: 🙌  Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update! 
warning polymer-cli > polyserve > @types/[email protected]: See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/12826
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - polymer
Done in 25.08s.
➜  19:17 polymer
zsh: command not found: polymer
➜  19:17 polymer-cli init
zsh: command not found: polymer-cli
➜  19:17 yarn --version
1.3.2

Wie ist das noch ein Problem? npm leidet nicht darunter.

Dann herausfinden, wie npm damit umgeht, und eine Pull-Anfrage senden?

Der Besitzer der einzigen Antwort dieses Repos auf diesen riesigen Faden von Beschwerden über dieses Problem ist der uralte Schrei von OSS-Qualitätsfehlern überall: "Reparieren Sie es selbst"?

Open-Source-Projekte sind Community-Projekte. Yarn wird nicht nur von Entwicklern bei Facebook entwickelt, sondern auch von einer breiteren Open-Source-Community. Ich arbeite bei Facebook, aber das hängt nicht wirklich mit meinen Beiträgen zu Yarn zusammen, da ich im Allgemeinen außerhalb der Arbeitszeit daran gearbeitet habe.

Ich bin es einfach leid, dass Leute denken, dass sie etwas von der Community schulden, ohne etwas zurückzugeben. Einige Open-Source-Entwickler deaktivieren aus diesem Grund jetzt den Abschnitt "Probleme" ihrer GitHub-Repos. Insbesondere bei Projekten mit einem kleinen Entwicklerteam ist der Versuch, an jedem einzelnen Problem zu arbeiten, ein einfacher Weg, um auszubrennen. Die Lizenz, der Sie bei der Installation von Software zustimmen, die unter der BSD- oder MIT-Lizenz (einschließlich Yarn) lizenziert ist, legt ausdrücklich fest, dass die Software unverändert ohne Garantie und ohne Garantie für die Eignung für einen bestimmten Zweck bereitgestellt wird.

Wir haben ein Sprichwort bei Facebook: "Code gewinnt Argumente". Nehmen Sie sich Zeit, um das Problem zu beheben, anstatt sich über etwas zu beschweren. Es ist eine produktivere Nutzung der Zeit. Das ist der gesamte Geist von Open Source: Eine Gemeinschaft von Menschen, die zu einem gemeinsamen Ziel beitragen.

Was dieses Problem betrifft, scheint es mir nur so, als ob das ausführbare Verzeichnis von Yarn im $PATH Leute fehlt. Das Installationsprogramm teilt Ihnen ausdrücklich mit, wie Sie es Ihrem Pfad hinzufügen sollen, und das Windows-Installationsprogramm erledigt dies automatisch für Sie (wir sollten dies wahrscheinlich auch im Debian-Paket tun). Der Grund, warum ich vorgeschlagen habe, zu überprüfen, was npm tut, ist, dass sie möglicherweise $PATH automatisch bearbeiten. Jemand müsste diese Untersuchung durchführen und sehen, was sie tun. Jeder kann es tun.

Ich bin auch gerade auf dieses Problem gestoßen. Das erste Mal Garn + Paket ausprobiert und es hat aus diesem Grund nicht "nur funktioniert".

Warum ist dieses Problem geschlossen, wenn es noch passiert? Ich habe 2 Wochen Zeit für Garn und gerade heute bin ich auf globale Pakete gestoßen, und sie funktionieren nicht gut mit NVM. Außerdem habe ich Garn Config Set Prefix und --prefix gemacht und es hat nicht funktioniert, es wird weiterhin in das globale Standardpräfix installiert ...
Vielleicht werde ich versuchen, es in ein paar Tagen mehr zu beheben ...

Bin auf dieses Problem gestoßen, wie jeder über mir. Meine Erwartung war, dass _yarn_ Pakete am selben Speicherort wie _npm_ installieren würde, wenn das Flag -global verwendet wird.

Gibt es Gründe oder Szenarien, in denen dies nicht die beste oder Standardlösung wäre?

  • Die Leute können dies tatsächlich auf etwas anderes als die Standardeinstellung einstellen (das tue ich).
  • Dieser Pfad befindet sich höchstwahrscheinlich bereits in unseren Umgebungsvariablen. (Nachdem dies als allererster Schritt nach einer _npm_-Installation auf einem Windows-Computer behoben wurde.)
  • Ein einfaches npm root -g oder npm config get prefix zeigt den Speicherort global installierter Module an.

IMO Ich denke, wir sollten erwägen, das Standardverhalten von yarn global zu ändern, dass es am selben Speicherort wie das globale Präfix von _npm_ installiert wird .

Das ist in der Tat eine vernünftige Idee.

Vor kurzem hatte ich ein Problem mit globalen Pfaden unter Linux und es war schwierig
um den Pfad zu finden, den ich zu PATH hinzufügen musste.

Die Nachteile sind, dass dies eine bahnbrechende Veränderung für Menschen sein kann, die bereits haben
Richten Sie ihre Garnwege ein.
In einigen Fällen ist der globale Standard-npm-Bin / usr / local / bin oder so und so
wird impliziert, um es mit sudo zu verwenden, was nicht der Ansatz des Garns ist.

Ich frage mich, ob der Befehl 'yarn global add' nur prüfen könnte, ob der installierte Behälter vorhanden ist
Standort ist in PATH und drucken Sie eine Warnung, wenn dies nicht der Fall ist?
Würde es die Dinge glätten?

Am Freitag, 5. Januar 2018, um 05:12 Uhr schrieb Mark Drake [email protected] :

Bin auf dieses Problem gestoßen, wie jeder über mir. Meine Erwartung war das
Garn würde Pakete an derselben Stelle installieren wie npm .
bei Verwendung der globalen Flagge.

Gibt es Gründe oder Szenarien, in denen dies nicht die beste wäre oder
Standardlösung?

  • Die Leute können dies tatsächlich auf etwas anderes als die Standardeinstellung einstellen (I.
    tun).
  • Dieser Pfad befindet sich höchstwahrscheinlich bereits in unseren Umgebungsvariablen.
    (Nachdem dies als allererster Schritt nach jeder npm behoben wurde
    auf einem Windows-Computer installieren.)
  • Ein einfaches Präfix für npm root -g oder npm config get gibt den Speicherort an
    von global installierten Modulen.

IMO Ich denke, wir sollten erwägen, das Standardverhalten von Garn zu ändernglobal, um am selben Speicherort wie das globale Präfix von npm installiert zu werden .

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/yarnpkg/yarn/issues/648#issuecomment-355551314 oder stumm schalten
der Faden
https://github.com/notifications/unsubscribe-auth/ACBdWMvBOVNFKloPPFBzpar60Gu0Qpbrks5tHh-egaJpZM4KT3-H
.

Ich frage mich, ob der Befehl 'yarn global add' nur überprüfen könnte, ob sich der installierte Bin-Speicherort in PATH befindet, und eine Warnung drucken könnte, wenn dies nicht der Fall ist.

Ich liebe diese Idee. Alles andere wäre eine bahnbrechende Änderung, die wir in der Version 1.0 vorgenommen haben, und ich denke nicht, dass es eine gute Idee ist, dies wieder zu ändern, es sei denn, es gibt andere Gründe. Es gab eine sehr lange Diskussion darüber in https://github.com/yarnpkg/yarn/pull/3721 und verweist auf Probleme und PRs.

Ein einfaches Präfix für npm root -g oder npm config get zeigt den Speicherort global installierter Module an.

Garn hat yarn global dir als Äquivalent.

Wenn Sie feststellen, dass Binärdateien in Typoskript nicht installiert sind und @angular/cli installiert ist, entfernen Sie es einfach und versuchen Sie erneut, Typoskript zu installieren. Das hat bei mir funktioniert.

Seltsam? Absolut!

@Fahrradflucht, absolut wahr Es ist seltsam , warum die Dokumente nicht schlagen den Fadenweg die Umgebung des $ PATH hinzuzufügen.

Mit Ubuntu 17.10 löste folgendes das Problem für mich:

$ echo export PATH = \ $ PATH: $ (Garn global bin) >> ~ / .profile
$ source ~ / .profile

@DavidNorena Die Dokumente erwähnen dies tatsächlich, aber da dies ein Einrichtungsschritt ist, befindet es sich auf der Installationsseite. Selbst dann ist es noch nicht ganz klar, wie auf der Registerkarte "Linux" auf der Installationsseite https://yarnpkg.com/de/docs/install. Der Abschnitt " Path Setup " folgt den Anweisungen für jede Linux-Distribution. Ich kann mir vorstellen, dass die meisten Leute Ubuntu verwenden (das steht an erster Stelle in der Liste) und scrollen Sie daher niemals die Seite nach unten und sehen Sie niemals den zusätzlichen Einrichtungsschritt.

Aber es ist immer noch nicht klar, ich wusste nicht, dass es einen Abschnitt PATH SETUP gibt. Ich habe nur die Schritte für meine Linux Box-Version befolgt, aber es gab keinen Hinweis darauf, ob ich zum Seitenende gehen soll oder nicht.

Vielen Dank an @jthegedus und das nächste Mal werde ich alle Abschnitte in den Dokumenten durchsehen, niemand weiß es. : D.

Nachdem ich mich wiederholt mit diesem Problem befasst hatte, fand ich endlich eine Lösung für mein Szenario, die ich teilen wollte, falls es jemandem hilft.

Als Referenz bin ich unter MacOS (_Sierra_) und benutze zsh (und _oh-my-zsh_ installiert mit _Homebrew_), NVM (_0.33.8_ installiert über _Homebrew_ _-- ohne Knoten_)

Yarn des globalen bin wurde auf /users/MyUserName/usr/local/bin und zsh würde Garnspulen nicht erkennen installiert global , da dies in meinem PATH nicht. Während ich meine Benutzer Pfad hinzugefügt haben könnte, entschied ich mich stattdessen auf meine Yarn globale bin setzen Sie die verwenden /usr/local/bin , die bereits in PATH war , die gearbeitet und wird nicht brechen , wenn Versionen von Knoten mit NVM wechseln.

Ich habe ein ähnliches Problem speziell bei einer globalen Installation von typescript .

Beim Ausführen von yarn global bin Ausgaben /usr/local/bin und allen anderen globalen Paketen werden die Binärdateien wie erwartet zu /usr/local/bin hinzugefügt (symlinked).

Wenn ich yarn global add typescript ausführe, lautet die Ausgabe:

[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Installed "[email protected]" with binaries:
      - tsc
      - tsserver
✨  Done in 4.89s.

Der Versuch, tsc oder tsserver Befehle auszuführen, führt zu command not found: tsc .
Ein Blick unter /usr/local/bin zeigt weder tsc noch tsserver Binärdateien.

  • Dies funktioniert gut, wenn npm (getestet v5.6.0 )
  • Ich verwende yarn v1.5.1 , macOS 10.13.3

@Nexxado Ich habe Ihre Schritte wie beschrieben befolgt und die gleichen Nachrichten von Yarn erhalten. Die Pakete wurden jedoch wie erwartet installiert und erscheinen in /usr/local/bin . Wenn Sie tsc -v eingeben, wird Version 2.8.1 .
Ich verwende nvm und node version 9.6.1 mit npm 5.6.0 .

Hatten Sie zuvor versucht, dies zu installieren, und wenn ja, konnten Sie überprüfen, ob es entfernt wurde? Ich hatte Probleme mit bestimmten Paketen, die ich mit früheren Versionen von npm oder homebrew installiert hatte, die globale Installationen über Yarn störten.

@ SiriusBits

Hatten Sie zuvor versucht, dies zu installieren, und wenn ja, konnten Sie überprüfen, ob es entfernt wurde? Ich hatte Probleme mit bestimmten Paketen, die ich mit früheren Versionen von npm oder Homebrew installiert hatte und die globale Installationen über Yarn störten.

Das ist möglich, ich erinnere mich nicht, ob ich es getan habe.
Ich verwende nvm mit node v8.9.3 und npm 5.6.0 .

Konnten Sie die "bestimmten Pakete" reparieren, über die Sie gesprochen haben?

Danke im Voraus :)

@Nexxado habe ich getan. Ich hatte Gulp CLI, die mit npm installiert wurde, und konnte die globale Installation mit Yarn nicht zum Laufen bringen. Nachdem ich es entfernt und mit Yarn neu installiert hatte, funktionierte es.

Ich habe Node mit asdf-nodejs installiert und habe das gleiche Problem mit Garn 1.6.0 in macOS

Diese Zeile in der .zshrc-Datei hinzugefügt, löste das Problem.

export PATH=/Users/rods/.asdf/installs/nodejs/8.9.4/.npm/bin:$PATH

Warum ist dieses Problem geschlossen? Ich habe das gleiche Problem unter Linux

@jthegedus @DavidNorena Möchten Sie die Dokumente verbessern, damit andere davon profitieren können?

@BYK Ich werde dieses Problem in der PR verknüpfen, die ich diese Woche erstelle: +1:

Vor dem gleichen Problem in Fenster 10.

yarn global dir und yarn global bin befinden sich beide in% PATH%, es sind jedoch keine Binärdateien installiert.

Das Entfernen und erneute Hinzufügen eines Pakets hat nicht geholfen.

Garn 1.7.0
Node.js 10.3.0

Hier gilt das gleiche.

Immer noch kaputt in 1.10.1:

$ yarn global add typescript
yarn global v1.10.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 0.47s.

$ yarn global bin
C:\Users\mikem\AppData\Local\Yarn\bin

$ yarn global list
yarn global v1.10.1
Done in 0.14s.

Ich sehe ppl Pfad zu .bashrc hinzufügen

export PATH="$(yarn global bin):$PATH"

export PATH = "$ (Garn global bin): $ PATH"

NB, schön, 666

Gleicher Fehler. Installierter Aufschlag mit yarn global add serve . Danach schlägt der Startaufschlag fehl: "Aufschlag: Befehl nicht gefunden". Das manuelle Aktualisieren von PATH hat mir nicht geholfen. Ich habe Serve mit npm installiert und jetzt funktioniert es. Wirklich seltsam, dass dieses Problem älter als 2 Jahre ist und immer noch nicht behoben ist.

--Edit-- Gelöst. Ansicht # 648
Immer noch vor diesem Problem. Auf Fedora installiertes Garn, verwende nvm zum Verwalten von Knotenversionen. Mops global in Garn installiert. Laufender Mops zurückgegebener Befehl nicht gefunden. Bei der Installation von pug-cli mit npm wird der Befehl ausgeführt.

Hilft # 648 (Kommentar) nicht?

Mein Fehler. Das löst das Problem.

Ich habe das Problem mit NVM in einem Docker-Container, der ein CentOS-Image abruft. Es ist kein Problem, wenn der Pfad falsch ist. Ich habe das ganze Bild durchforstet. Meine globalen Installationen werden absolut nirgendwo installiert. Es scheint bei Schritt 1/4, dem Auflösen von Paketen, fehlzuschlagen.

export PATH="$(yarn global bin):$PATH"

Funktioniert für mich unter Ubuntu.

sudo yarn global add ignite-cli
Hat für mich gearbeitet

Ich kann nicht an /usr/local/bin schreiben, da sudo Berechtigungen fehlen:

$ yarn global add create-react-app
yarn global v1.21.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - create-react-app
error Cannot create "/usr/local/bin/create-react-app" due to insufficient permissions.
info Visit https://yarnpkg.com/en/docs/cli/global for documentation about this command.

/usr/local/bin ist in PATH , ~/.config/yarn/global/node_modules/.bin/ ist in PATH aber weder yarn global noch yarn create werden.

Bitte versuchen Sie, auf Garn 1.22.4 @hoefling zu aktualisieren. Dies kann auch ein Problem mit Ihrem Setup sein. Wie haben Sie Garn installiert?

@ DanielRuf danke für deine Antwort! Ich habe 1.22.4 vom Systemadministrator installiert:

$ dnf info yarn
Yarn Repository                                                                                                                                                                    346 kB/s | 363 kB     00:01    
Installed Packages
Name         : yarn
Version      : 1.22.4
Release      : 1
Architecture : noarch
Size         : 5.1 M
Source       : yarn-1.22.4-1.src.rpm
Repository   : <strong i="8">@System</strong>
From repo    : yarn
Summary      : Fast, reliable, and secure dependency management.
URL          : https://yarnpkg.com/
License      : BSD
Description  : Fast, reliable, and secure dependency management.
...

Es sieht so aus, als ob das Paket aus dem eigenen Repo von yarn stammt.

yarn global v1.21.1

In Ihrer letzten Antwort war es 1.21.1.
Passiert das noch? Ich schlage vor, ein neues Problem zu eröffnen und die anderen Probleme auf Lösungen zu prüfen.

@ DanielRuf Sie haben Recht, ich habe versucht, eine lokale Kopie von yarn einzurichten und ein Downgrade durchzuführen , um festzustellen, ob es sich um eine Regression handelt. Leider ist der Fehler auch mit 1.22.4 reproduzierbar. Öffnet ein neues Problem, wenn ich selbst keine Lösung finde.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen