Come impostare Ruby GEM_HOME e GEM_PATH


10

Sono un utente NOVICE di Linux e utilizzo Linux mint 17.1

Ho reinstallato Linux Mint 20 volte negli ultimi 3 giorni per quel problema ma non sono riuscito a risolverlo

Sto cercando di installare ruby ​​su rotaie usando rvm quello che è successo è se avviare una nuova installazione di Linux e provare a installare gemme e ruby ​​e roba in una sessione terminale che si è installato correttamente non appena chiudo la sessione terminale non riesco a ottenere quelle gemme .

Installandolo più di 20 volte negli ultimi 3 giorni ho cercato anche sul web. Mi è stato detto di inserire la variabile di ambiente nel /etc/environmentpercorso che ho ripetuto in quella sessione e di incollarlo nel /etc/environmentfile.

anche ora non ricevo le mie gemme installate

quando ho digitato rvm -vottengo i seguenti errori

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Sono una persona alle prime armi quando si tratta di lavorare con il terminale, posso eseguire alcuni comandi di base per lavorare con Ruby.

Mi piacerebbe sapere

  1. Come impostare PATH
  2. Come impostare GEM_HOME
  3. Come impostare GEM_PATH

Di seguito è riportato il mio percorso completo

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

signor @mohsen pahlevanzades, posso chiederti qual è il punto di eliminare quelle due righe, se non ti dispiace dirmi, saluti
Amjad

Se ricordo bene, hai scritto saluti o grazie,
PersianGulf

Risposte:


18

Sembra che tu voglia il comando exportper impostare le variabili d'ambiente:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Tuttavia, ciò avrà effetto solo per la sessione corrente. Per renderli più permanenti, aggiungi quelle righe al tuo ~/.bashrc.


3

Di solito questo significa che rvm non è configurato correttamente. Il solito errore è che non hai modificato .bashrccorrettamente (o simile) o non hai ricaricato il tuo terminale.

Non devi impostare GEM_HOME o GEM_PATH manualmente quando usi rvm.

Puoi provare a source ~/.rvm/scripts/rvmvedere se funziona.

Potrebbe anche essere che non hai ancora creato un gemset. Non usare rvm e sudo. Rvm funziona meglio se installato nel tuo account e non a livello di sistema.


È inoltre possibile aggiungere source ~/.rvm/scripts/rvmal proprio ~/.bashrcper assicurarsi che sia caricato ogni volta che si avvia una nuova shell.
Niel de Wet,

2

Ecco cosa ho imparato e come ho risolto questo problema apparentemente comune delle variabili di ambiente GEM_HOME e GEM_PATH che non hanno dato errori.


sfondo

Si suppone che l'installazione di RVM crei le variabili GEM_HOME e GEM_PATH per ciascun RVM che è stato impostato e lo fa. Ma a quanto pare c'è un bug tale che in alcuni casi le variabili ambientali vengono impostate solo temporaneamente e per reimpostarle è necessario impostarle con la riga di comando. Ho trovato una soluzione alternativa per rendere persistenti gli ambienti per un camper.

Soluzione

  1. Trova la tua versione Ruby attiva (nella RVM): sul server di produzione vai alla directory dell'app e digita $rvm list. Ciò comporterà un elenco delle versioni di Ruby installate e quale è attiva per RVM. Esempio di risposta:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Quindi, so che RVM sta attualmente utilizzando la versione ruby-1.9.3-p551. Hai bisogno di queste informazioni per il prossimo passaggio.

  1. Ottieni i percorsi per GEM_PATH e GEM_HOME : lo fai eseguendo dalla riga di comando $rvm use ruby-1.9.3-p551. Quindi ancora dalla riga di comando mostra tutte le impostazioni dell'ambiente usando il comando env. Cerca GEM_PATH e GEM_HOME e copia quelli nella loro interezza in un'area di lavoro.

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. Imposta le variabili di ambiente GEM_HOME e GEM_PATH: ora imposta queste variabili di ambiente in uno dei molti file di profilo. Volevo mantenere la struttura di isolamento della versione RVM, quindi ho aggiornato /profile.d/appspecific.sh con queste due righe:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


apparentemente GEM_HOME e GEM_PATH non sono specifici di RVM?
barlop

2

Ho scoperto che .profile viene caricato per ultimo e che mette ~ / .local / bin e ~ / bin nella parte anteriore del percorso. Ho spostato /etc/profile.d/rvm.sh in ~ / .rvm e alla fine di .profile ho aggiunto "source ~ / .rvm / rvm.sh" e l'errore scompare. Sono su Linux Mint 18.3. Ho installato pyenv, rvm e sdkman e tutti vogliono essere gli ultimi. Ora funzionano tutti bene. :)

Se è un sistema condiviso, sposta rvm.sh da qualche parte fuori dal percorso e qualsiasi altro utente può procurarlo, come ad esempio da /opt/rvm/rvm.sh.


1

Come menzionato @coteyr, non dovresti impostare manualmente GEM_HOME e GEM_PATH durante l'utilizzo rvm. Se controlli la tua variabile d'ambiente PATH, eseguendo $ echo $PATHe $ HOME / .rvm / bin ne fa parte, allora devi assicurarti che il tuo terminale esegua i comandi come shell di login. Ad esempio, se sei su una macchina Ubuntu, apri il tuo terminale quindi vai a: menu> Modifica> Preferenze profilo> Comando quindi seleziona "Esegui comando come shell di accesso"

Questo sembra essere un vecchio problema con il rvmquale presumo non sia banale da risolvere poiché esiste da un po 'di tempo.


1

Per popolare $GEM_PATHcon il mio sistema (Manjaro / Arch) gemsho aggiunto al mio .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.