Da windows a ubuntu 9.04 64bit

Premetto che di linux conosco poco anzi diciamo solo il minimo per
sopravvivere; volevo provare a sviluppare qualcosa con questo sistema
operativo ed ho pensato di riepilogare quà i miei dubbi, mi sembra che
la maggior parte di voi ci lavora e lo conosce bene.

Ho installato le ultime jdk e netbeans 6.7.1, giusto per avere qualcosa
di familiare

Ruby 1.8.7 era già installato con rails 2.2.2 e qualche gemma, si trova
in /usr/lib/ruby

Ruby 1.9.1p243 l’ho installato compilando i sorgenti e si trova in
/usr/local/lib/ruby, non mi sembra di aver scelto la destinazione ma non
ricordo bene

JRuby 1.3.1 l’ho installato sempre dai sorgenti e messo in
/usr/local/lib/jruby131 seguendo questa ottima guida:

Non so la differenza tra local e non, però mi sarebbe piaciuto averli
sotto la stessa directory, vabbè …una cosa alla volta

ho inserito nel file /home/utente/.bashrc per la variabile JRUBY_HOME ed
aggiornare path con il riferimento alla /bin (per ruby 1.9.1 non l’ho
fatto e funziona lo stesso)

Stavo provando ad installare le gemme ma non riesce a piazzarle nella
corretta cartella e dunque le mette sotto /home/utente/.gem/jruby, c’è
modo per autorizzare la scrittura e già che ci sono mi piacerebbe
lavorarci anche con l’esplora risorse, se possibile.

Usando windows sono abituato ad avere tutto sotto la stessa directory,
mi sembra più pulito, sarei curioso di sapere come vi siete organizzati
l’am.biente.

Ho anche un problemino: quando cerco di installare ruby-debug-ide mi da
questo errore, qualcuno sa darmi qualche dritta?

WARNING: Installing to ~/.gem since
/usr/local/lib/jruby131/lib/ruby/gems/1.8 and
/usr/local/lib/jruby131/bin aren’t both writable.
Building native extensions. This could take a while…
rake aborted!
Don’t know how to build task ‘2>&1’

(See full trace by running task with --trace)
ERROR: Error installing ruby-debug-ide:
ERROR: Failed to build gem native extension.

Bhe la differenza è che windows è un falso sistema multi utente mentre
linux è un sistema multi utente, quindi se installi un software
dall’utente te lo installa sotto la home, se lo installi come root
(usando sudo ad esempio) lo installi per tutto il sistema e quindi nelle
directory di sistema quali usr e var.

Se poi compili puoi specificare nelle opzioni quando fai ./configure
anche il path in cui installare se non vuoi il default.

Considera anche che alcuni software possono essere installati solo da
root anche se usi i sorgenti (ruby-debug-ide è uno di questi
probabilmente) quindi devi usare il comando sudo

Marco M. ha scritto:

Non so la differenza tra local e non, però mi sarebbe piaciuto averli
sotto la stessa directory, vabbè …una cosa alla volta

diciamo che è buona norma utilizzare /usr/local/ (a volte c’è chi usa
/opt, ma è un altro discorso) quando si inseriscono
programmi/librerie/script definiti dall’utente (quindi senza usare il
sistema di gestione pacchetti generalmente offerto dalla distribuzione).
ti evita di sporcare il sistema, e ti permetterebbe, per esempio, di
cancellare /usr/local/ senza far danni. sui sistemi BSD questa filosofia
è molto più accentuata rispetto a linux :stuck_out_tongue:

Stavo provando ad installare le gemme ma non riesce a piazzarle nella
corretta cartella e dunque le mette sotto /home/utente/.gem/jruby, c’è
modo per autorizzare la scrittura e già che ci sono mi piacerebbe
lavorarci anche con l’esplora risorse, se possibile.

è una questione di permessi utente che non possono scrivere nelle
directory all’infuori della propria home. se da utente normale lanci
“gem install nokogiri”, non potendo scrivere su “/usr/lib/ruby/gems/”,
la mette nella tua home “/home/utente/.gem/” ed è disponibile solo per te.
se volessi invece lanciare un comando con privilegi di amministratore,
devi precedere i comandi con sudo (es: “sudo gem install nokogiri”),
ti verrà chiesta la tua password da utente, ma eseguirà il comando con
privilegi di root.

Usando windows sono abituato ad avere tutto sotto la stessa directory,
mi sembra più pulito, sarei curioso di sapere come vi siete organizzati
l’am.biente.

windows ha una multiutenza un po’ fasulla, dove un utente normale può
avere privilegi di amministratore, o lanciare un programma con privilegi
di sistema. nei sistemi *nix qualsiasi cosa faccia un utente normale, è
confinata ai suoi permessi: lanciare il comando gem da utente normale,
è diverso dal lanciarlo da root: nel primo caso può scrivere solo nella
propria home, nel secondo ha il controllo dell’intero sistema :wink:

Ho anche un problemino: quando cerco di installare ruby-debug-ide mi da
questo errore, qualcuno sa darmi qualche dritta?

WARNING: Installing to ~/.gem since
/usr/local/lib/jruby131/lib/ruby/gems/1.8 and
/usr/local/lib/jruby131/bin aren’t both writable.
Building native extensions. This could take a while…

fin qui ti avvisa che non puoi scrivere in /usr/local/lib/jruby131/

rake aborted!
Don’t know how to build task ‘2>&1’

(See full trace by running task with --trace)
ERROR: Error installing ruby-debug-ide:
ERROR: Failed to build gem native extension.

qui potrebbe essere un errore dovuto al discorso sui permessi, oppure
c’è un problema nel task…

se proprio ci tieni, potresti fare una mossa un po’ sporca che
potrebbe farti lavorare in modo più spensierato come se ti trovassi su
windows: dare i privilegi di lettura/scrittura a
/usr/local/lib/jruby131/ (e/o alle altre directory purchè si trovino in
/usr/local/). io te lo sconsiglierei per questioni didattiche: una volta
che prendi confidenza con linux ed il suo approccio, non credo
rimpiangerai troppo windows :stuck_out_tongue:

se hai altri dubbi, chiedi pure :slight_smile:
A.

Marco M. ha scritto:

Quindi la differenza tra le cartelle /usr/lib e /usr/local/lib è come si
installano le applicazioni, se a mano o col gestore di pacchetti? E sono
in comune a tutti gli utenti o no?

diciamo che si parla di convenzioni, l’unica differenza è che per
default il sistema usa /usr/lib per installare i programmi, ma nel suo
PATH di ricerca inserisce anche /usr/local/lib proprio per le evenienze.
puoi personalizzare i path di ricerca per librerie e binari, ma il
metodo può variare dalla distribuzione usata.

per quanto riguarda i PATH dei binari, puoi tranquillamente aggiungerne
altri personalizzati (per esempio $HOME/.my_bin/) con questa riga:

export PATH=TUO_PATH_CUSTOM:$PATH

se vuoi renderla valida solo per il tuo utente, la appendi (cioè la
metti come ultima riga) in

/home/tuoutente/.bashrc

se invece volessi renderla disponibile a tutti, appendila a questo file
(in questo caso devi avere privilegi root):

/etc/bash.bashrc

dopo aver effettuato le modifiche, per aggiornare il tuo PATH ed evitare
di dover uscire-e-rientrare dal sistema, basta lanciare questo comando
da ciascuna shell aperta:

$ source ~/.profile

da login successivo non ce ne sarà più bisogno :wink:

Sto cercando di familiarizzare, non ho il controllo di dove si trovano
le applicazioni, es. se scrivo java -version, mi trovo la 1.6 update 0
…ma io ho installato la 16 e stavo impazzendo per capirne il motivo.

come hai installato? se lo hai fatto a mano, dove l’hai installato?
te lo chiedo perchè anche io ho la u16 installata tramite pacchetto deb
su una ubuntu 9.04

ti sconsiglio l’installazione di pacchetti a mano o da sorgente
tranne nel caso in cui tu sappia cosa stai facendo :stuck_out_tongue:
fortunatamente, ubuntu ha un parco software abbastanza fornito ed
aggiornato, e spesso esistono repository non ufficiali che
distribuiscono pacchetti particolari. quindi puoi evitare di trovarti
con un sistema fuori controllo :wink:

Probabilmente quello che era già installato ha la priorità? In windows
c’è la variabile d’am.biente globale “path”, guardo cosa c’è dentro e so
cosa sto lanciando. Sotto linux cosa devo guardare?

anche sotto linux c’è PATH =)

echo $PATH

se vuoi vedere tutte le variabili di ambiente, lancia “env”

tornando a java, almeno su ubuntu, puoi selezionare la versione da usare
con:

sudo update-alternatives --config java

ovviamente nel caso in cui tu abbia installato java da pacchetti ubuntu.

se lo hai fatto da installer java, la questione cambia. individua dove
lo hai installato, poi decidi se aggiungere il percorso a PATH, oppure
devi linkare i binari ad un percorso già esistente (guarda caso
potrebbe esser /usr/local/bin/), per esempio:

ln -s /tuo/percorso/java-xyz/bin/java /usr/local/bin/

infine, ti consiglio di consultare a2 --- «a2» quando hai
dubbi sui concetti base di linux, per le questioni riguardanti ubuntu,
basta googlare :wink:

ciao,
A.

Grazie intanto per le risposte, stasera spero di riuscire a continuare.
Credevo di aver usato “sudo” per l’installazione delle gemme ma mi sta
venendo un dubbio, posso comunque ripartire da capo.
Quindi la differenza tra le cartelle /usr/lib e /usr/local/lib è come si
installano le applicazioni, se a mano o col gestore di pacchetti? E sono
in comune a tutti gli utenti o no?
Sto cercando di familiarizzare, non ho il controllo di dove si trovano
le applicazioni, es. se scrivo java -version, mi trovo la 1.6 update 0
…ma io ho installato la 16 e stavo impazzendo per capirne il motivo.
Probabilmente quello che era già installato ha la priorità ? In windows
c’è la variabile d’am.biente globale “path”, guardo cosa c’è dentro e so
cosa sto lanciando. Sotto linux cosa devo guardare?

Grazie Andrea per le tante delucidazioni!! Purtroppo, tra lavoro e
famiglia, riesco a procedere molto lentamente. Nel frattempo sono
passato a ubuntu 9.10 e mi sono letto qualcosa delle basi che mi hai
linkato. Diciamo che fatico più con le regole di ubuntu che sul
passaggio da dos a unix.

diciamo che si parla di convenzioni, l’unica differenza � che per
default il sistema usa /usr/lib per installare i programmi, ma nel suo
PATH di ricerca inserisce anche /usr/local/lib proprio per le evenienze.
puoi personalizzare i path di ricerca per librerie e binari, ma il
metodo pu� variare dalla distribuzione usata.

quindi dovrei usare /usr/local/lib per le cose che installo io ed ho
sempre cercato di fare così ma il nuovo java l’ho messo in /usr/lib/jvm
perchè mi sembrava meglio piazzarlo accanto le altre versioni giÃ
presenti

Poi nel file .bashrc ho aggiunto:

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16
PATH=$PATH:$JAVA_HOME/bin

e jruby l’ho messo quà :

JRUBY_HOME=/usr/local/lib/jruby131 # or where ever you put it.
PATH=$PATH:$JRUBY_HOME/bin

poi ho dovuto aggiungere anche questo path perchè ho notato che le
gemme, per problemi di autorizzazioni in scrittura, me le posizionava
quà :

PATH=$PATH:/home/marco/.gem/jruby/1.8/bin

Avrei preferito avere tutto sotto /usr/local/lib/#versione_di_ruby#
…sinceramente non ho ancora googlato

come hai installato? se lo hai fatto a mano, dove l’hai installato?
te lo chiedo perch� anche io ho la u16 installata tramite pacchetto deb
su una ubuntu 9.04

ti sconsiglio l’installazione di pacchetti a mano o da sorgente
tranne nel caso in cui tu sappia cosa stai facendo :stuck_out_tongue:
fortunatamente, ubuntu ha un parco software abbastanza fornito ed
aggiornato, e spesso esistono repository non ufficiali che
distribuiscono pacchetti particolari. quindi puoi evitare di trovarti
con un sistema fuori controllo :wink:

L’ho installato a mano perchè i pacchetti che suggerisci tu non erano
aggiornati.

tornando a java, almeno su ubuntu, puoi selezionare la versione da usare
con:

sudo update-alternatives --config java

ovviamente nel caso in cui tu abbia installato java da pacchetti ubuntu.

se lo hai fatto da installer java, la questione cambia. individua dove
lo hai installato, poi decidi se aggiungere il percorso a PATH, oppure
devi linkare i binari ad un percorso gi� esistente (guarda caso
potrebbe esser /usr/local/bin/), per esempio:

ln -s /tuo/percorso/java-xyz/bin/java /usr/local/bin/

Intanto ti ringrazio per la dritta: sudo update-alternatives --config
java
purtroppo non c’è la mia versione perchè, come ho scritto, l’ho
installata a mano.

Nella variabile $PATH ci sono prima i percorsi predefiniti per cui
essendoci una versione java installata di default non riuscivo ad
utilizzare la mia. Basterebbe quindi spostare prima il nuovo percorso,
credo sia l’unico sistema per poter usare software non “pacchettizzato”
…corretto?

Qualche passo avanti lo sto facendo anche se non ho la stessa padronanza
che ho su windows. Diciamo che i progettini “sciocchini” li potrei anche
sviluppare su linux (ma solo perchè fa tutto netbeans)

Marco M. wrote:

Se volessi ricominciare da capo con l’installazione di ruby, uso la
versione del gestore pacchetti e installo la 1.8.7, testo il risultato e
l’interprete c’è ma non trova il gem che però era selezionato tra i
pacchetti

marco@d9400:~$ ruby1.8 -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
marco@d9400:~$ ruby1.8 -S gem list
ruby1.8: No such file or directory – gem (LoadError)

Cosa manca?
L’eseguibile è sotto /usr/bin ed il resto sotto /usr/lib

Alcune osservazioni:

  1. Probabilmente non hai gem ma gem1.8

Per evitare di impazzire a scrivere gli 1.8 ogni volta mi sono fatto un
paio di symbolic link (gli shortcut di windows). Nel mio caso:

sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Così tra l’altro posso usare ruby come nome di interprete di comando
negli script (#!/usr/bin/ruby vedi
Shebang (Unix) - Wikipedia dato che sei nuovo a
Unix) e mi garantisco una miglior portabilità per quando vado ad
installarli altrove.

  1. Se installi le gemme con

sudo gem install gemma

te le troverai in /usr/lib/ruby/gems (o in /usr/local/… se il tuo
interprete è lì) disponibili per tutti gli utenti del sistema.
Altrimenti vanno nella .gem della tua home, disponibili solo per te.
Preferisco la prima soluzione.

  1. scopro oggi dopo anni l’opzione -S di ruby. Finora gem l’avevo sempre
    lanciato come

gem list

senza bisogno di farlo eseguire dall’interprete con ruby -S gem list.
Immagino che fosse una necessità sotto Windows perché gem è uno script.
Su Unix gli script sono direttamente eseguibili purché nella prima riga
contengano l’indicazione dell’interprete con la notazione #! e nei
permessi ci sia l’esecuzione (questo anche per i programmi compilati).

Paolo

Paolo M. wrote:

  1. Probabilmente non hai gem ma gem1.8

Non ci avevo pensato!!! Grazie

Per evitare di impazzire a scrivere gli 1.8 ogni volta mi sono fatto un
paio di symbolic link (gli shortcut di windows). Nel mio caso:

sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Così tra l’altro posso usare ruby come nome di interprete di comando
negli script (#!/usr/bin/ruby vedi
Shebang (Unix) - Wikipedia dato che sei nuovo a
Unix) e mi garantisco una miglior portabilità per quando vado ad
installarli altrove.

Grazie anche per questa dritta! Era un esigenza che prima o poi avrei
chiesto. Su win io mi faccio la variabile RUBY_HOME ed ogni volta che
voglio cambiare interprete modifico questa. Su linux forse potrei anche
fare qualcosa del genere ma lo shortcut mi sembra più semplice.

  1. Se installi le gemme con

sudo gem install gemma

te le troverai in /usr/lib/ruby/gems (o in /usr/local/… se il tuo
interprete è lì) disponibili per tutti gli utenti del sistema.
Altrimenti vanno nella .gem della tua home, disponibili solo per te.
Preferisco la prima soluzione.

Ok

  1. scopro oggi dopo anni l’opzione -S di ruby. Finora gem l’avevo sempre
    lanciato come

gem list

senza bisogno di farlo eseguire dall’interprete con ruby -S gem list.
Immagino che fosse una necessità sotto Windows perché gem è uno script.
Su Unix gli script sono direttamente eseguibili purché nella prima riga
contengano l’indicazione dell’interprete con la notazione #! e nei
permessi ci sia l’esecuzione (questo anche per i programmi compilati).

Su win, gem si trova all’interno della cartella bin dell’interprete
quindi è comodo poterlo specificare.

Paolo M. wrote:

  1. Se installi le gemme con

sudo gem install gemma

te le troverai in /usr/lib/ruby/gems (o in /usr/local/… se il tuo
interprete è lì) disponibili per tutti gli utenti del sistema.
Altrimenti vanno nella .gem della tua home, disponibili solo per te.
Preferisco la prima soluzione.

Proprio mentre pensavo di esserne venuto a capo…
dopo aver installato l’ultimo rails 2.3.5 ho sbirciato in
/usr/lib/ruby/gems ed ho trovato la 2.2.2, con gem list mi da la 2.3.5
(tutte a me capitano?)
allora ho cercato la gemma rails-2.3.5 e le ho trovate in /var/lib/gems
!!!

…perchè le piazza in var?

Marco M. wrote:

Paolo M. wrote:

  1. Se installi le gemme con

sudo gem install gemma

te le troverai in /usr/lib/ruby/gems (o in /usr/local/… se il tuo
interprete è lì) disponibili per tutti gli utenti del sistema.
Altrimenti vanno nella .gem della tua home, disponibili solo per te.
Preferisco la prima soluzione.

Proprio mentre pensavo di esserne venuto a capo…
dopo aver installato l’ultimo rails 2.3.5 ho sbirciato in
/usr/lib/ruby/gems ed ho trovato la 2.2.2, con gem list mi da la 2.3.5
(tutte a me capitano?)
allora ho cercato la gemma rails-2.3.5 e le ho trovate in /var/lib/gems
!!!

…perchè le piazza in var?

stano, io in var non ho lib/gems.
Sicuro che tra una installazione e l’altra hai pulito il sistema? Io ho
ubuntu 9.10 64 bit e nei repository c’è la 2.2.3 (che non ho
installato). Forse in ubuntu 9.04 cera la 2.2.2 ed è quella che hai
installato.
Fai una cosa rimuovi, tramite il gestore pacchetti ruby e tutto quello
che lo riguarda, facendo attenzione ad eliminare anche i file di
configurazione.
Fatto questo elimina tutte le installazioni manuali cercando in tutte le
cartelle (sia di ruby che di gem che di irb e rdoc ci metterei anche la
ricerca di rails)
Fatto questo segui i consigli:
sudo apt-get install ruby build-essential libopenssl-ruby ruby1.8-dev
irb rdoc
Scarica rubygems dal sito e installalo.
Se ti serve sqlite3 installalo tramite il gestore dei pacchetti.
Installa sia sqlite3 che sqlite3-dev.
Successivamente, sempre se ti serve sqlite installa la gemma
sudo gem install sqlite3-ruby

e non dimenticarti
sudo gem install rails.

P.S. se hai installato la 64 bit cerca in /usr/lib64 piuttosto che in
/usr/lib, anche se si tratta di un symlink.
P.S2. “sudo apt-get install” equivale a installare tramite il gestore
grafico.

Ciao Michele.

Marco M. wrote:

Paolo M. wrote:

  1. Se installi le gemme con

sudo gem install gemma

te le troverai in /usr/lib/ruby/gems (o in /usr/local/… se il tuo
interprete è lì) disponibili per tutti gli utenti del sistema.
Altrimenti vanno nella .gem della tua home, disponibili solo per te.
Preferisco la prima soluzione.

Proprio mentre pensavo di esserne venuto a capo…
dopo aver installato l’ultimo rails 2.3.5 ho sbirciato in
/usr/lib/ruby/gems ed ho trovato la 2.2.2, con gem list mi da la 2.3.5
(tutte a me capitano?)
allora ho cercato la gemma rails-2.3.5 e le ho trovate in /var/lib/gems
!!!

…perchè le piazza in var?

Forse hai installato rubygems con il package manager. Da quel che googlo
pare che quello usi /var/lib/gems. Ho sempre installato rubygems
manualmente come spiegato a http://rubyonrails.org/download e così le
gemme mi vanno in /usr/lib/ruby/gems

Non dovrebbe cambiare nulla, purché tutte le gemme siano nella stessa
directory e non sparse un po’ in /var e un po’ in /usr

Paolo

Se volessi ricominciare da capo con l’installazione di ruby, uso la
versione del gestore pacchetti e installo la 1.8.7, testo il risultato e
l’interprete c’è ma non trova il gem che però era selezionato tra i
pacchetti

marco@d9400:~$ ruby1.8 -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
marco@d9400:~$ ruby1.8 -S gem list
ruby1.8: No such file or directory – gem (LoadError)

Cosa manca?
L’eseguibile è sotto /usr/bin ed il resto sotto /usr/lib