I'm trying to install RMagick 2.15.4 on RHEL 6.7 using Ruby 2.0.0 and ImageMagick 7.0.2.
I've installed ImageMagick7, ImageMagick7-c++, ImageMagick7-c++-devel, ImageMagick7-devel, ImageMagick7-libs packages, made a symlinks:
ln -s /usr/include/ImageMagick-7/MagickCore/ /usr/include/ImageMagick-7/magick
ln -s /usr/include/ImageMagick-7/MagickWand/ /usr/include/ImageMagick-7/wand
And launched install:
C_INCLUDE_PATH=/usr/include/ImageMagick-7/ gem install rmagick
But got this errors:
======================================================================
Thu 16Jun16 05:08:41
This installation of RMagick 2.15.4 is configured for
Ruby 2.0.0 (x86_64-linux) and ImageMagick 7.0.2
======================================================================
Configured compile options: {:magick_config=>false, :pkg_config=>true, :magick_version=>"7.0.2", :local_libs=>" -lMagickCore-7.Q16HDRI ", :cflags=>" -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/ImageMagick-7 ", :cppflags=>" -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/ImageMagick-7 ", :ldflags=>" -lMagickCore-7.Q16HDRI ", :defs=>[], :config_h=>"Makefile rmagick.h"}
make "DESTDIR="
compiling rmmontage.c
In file included from rmmontage.c:14:
rmagick.h:1210: error: expected declaration specifiers or ‘...’ before ‘MagickPixelPacket’
rmagick.h:1219: warning: parameter names (without types) in function declaration
rmagick.h:1224: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token
rmagick.h:1240: warning: parameter names (without types) in function declaration
rmagick.h:1253: warning: parameter names (without types) in function declaration
rmagick.h:1289: error: expected declaration specifiers or ‘...’ before ‘MagickPixelPacket’
rmmontage.c: In function ‘Montage_background_color_eq’:
rmmontage.c:110: warning: passing argument 1 of ‘Color_to_PixelPacket’ from incompatible pointer type
rmagick.h:1209: note: expected ‘struct PixelPacket *’ but argument is of type ‘struct PixelInfo *’
rmmontage.c: In function ‘Montage_border_color_eq’:
rmmontage.c:131: warning: passing argument 1 of ‘Color_to_PixelPacket’ from incompatible pointer type
rmagick.h:1209: note: expected ‘struct PixelPacket *’ but argument is of type ‘struct PixelInfo *’
rmmontage.c: In function ‘Montage_fill_eq’:
rmmontage.c:215: warning: passing argument 1 of ‘Color_to_PixelPacket’ from incompatible pointer type
rmagick.h:1209: note: expected ‘struct PixelPacket *’ but argument is of type ‘struct PixelInfo *’
rmmontage.c: In function ‘Montage_matte_color_eq’:
rmmontage.c:353: error: ‘MontageInfo’ has no member named ‘matte_color’
rmmontage.c: In function ‘Montage_stroke_eq’:
rmmontage.c:416: warning: passing argument 1 of ‘Color_to_PixelPacket’ from incompatible pointer type
rmagick.h:1209: note: expected ‘struct PixelPacket *’ but argument is of type ‘struct PixelInfo *’
make: *** [rmmontage.o] Error 1
I checked all developer dependencies on https://rubygems.org/gems/rmagick/versions/2.15.4, and they was satisfied.
How to fix this?
Thanks.
Related
since some weeks, I'm working with a new Mac which works with OS X Yosemite (Version 10.10.3). I figured out a lot of trouble installing programs from source, why I already changed the compiler to, e.g., gcc 4.2, 4.7, and 4.9. Furthermore, I "removed" the connection to clang, but also this produces still errors during compiling. However, doing the same on a Mac OS X machine version 10.7.5 works fine. There, gcc version 4.2.1 is running.
Here's an example error message, I get typing make in the command line:
cc -O2 -c -o swat.o swat.c
In file included from swat.c:25:
./swat.h:85:35: warning: '/*' within block comment [-Wcomment]
/* int *maxstu_vec; NOT NEEDED /* array of length length + 1, used to hold row of scores,
^
swat.c:29:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
compare_scores(entry1, entry2)
^
swat.c:35:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
compare_z_scores(entry1, entry2)
^
swat.c:42:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
compare_E_values(entry1, entry2)
^
swat.c:49:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main(argc,argv)
^
swat.c:75:3: warning: implicit declaration of function 'get_parameters' is invalid in C99 [-Wimplicit-function-declaration]
get_parameters(argc, argv, "swat");
^
swat.c:85:3: warning: implicit declaration of function 'alloc_hist' is invalid in C99 [-Wimplicit-function-declaration]
alloc_hist();
^
swat.c:86:10: warning: implicit declaration of function 'get_next_file_entry' is invalid in C99 [-Wimplicit-function-declaration]
while (get_next_file_entry(qdb)) {
^
swat.c:95:5: warning: implicit declaration of function 'notify' is invalid in C99 [-Wimplicit-function-declaration]
notify("Searching: ");
^
swat.c:98:12: warning: implicit declaration of function 'append_seq_entry' is invalid in C99 [-Wimplicit-function-declaration]
s_entry = append_seq_entry(sdb);
^
swat.c:110:2: warning: implicit declaration of function 'set_score' is invalid in C99 [-Wimplicit-function-declaration]
set_score(s_entry, score);
^
swat.c:127:57: warning: implicit declaration of function 'get_seq_length' is invalid in C99 [-Wimplicit-function-declaration]
score = parameters->align(q_profile, get_seq(s_entry), get_seq_length(s_entry), 1, 0, 0, 0, 0, 0);
^
swat.c:146:5: warning: implicit declaration of function 'initialize_hist' is invalid in C99 [-Wimplicit-function-declaration]
initialize_hist();
^
swat.c:155:7: warning: implicit declaration of function 'update_hist' is invalid in C99 [-Wimplicit-function-declaration]
update_hist(score_entry, 0);
^
swat.c:158:5: warning: implicit declaration of function 'process_hist' is invalid in C99 [-Wimplicit-function-declaration]
process_hist();
^
swat.c:172:2: warning: implicit declaration of function 'fit_log_n' is invalid in C99 [-Wimplicit-function-declaration]
fit_log_n(q_length);
^
swat.c:175:4: warning: implicit declaration of function 'find_z' is invalid in C99 [-Wimplicit-function-declaration]
find_z(score_entry);
^
swat.c:195:9: warning: implicit declaration of function 'reject_entry' is invalid in C99 [-Wimplicit-function-declaration]
if (!reject_entry(score_entry)) nz++; /* assumes Smith-Waterman */
^
swat.c:202:7: warning: implicit declaration of function 'new_est_lambda_K' is invalid in C99 [-Wimplicit-function-declaration]
new_est_lambda_K(q_length, score_entries, last_score_entry);
^
swat.c:242:24: warning: '&&' within '||' [-Wlogical-op-parentheses]
if (parameters->use_n && score_entry >= score_entries + parameters->max_num_alignments
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
swat.c:242:24: note: place parentheses around the '&&' expression to silence this warning
if (parameters->use_n && score_entry >= score_entries + parameters->max_num_alignments
^
( )
swat.c:243:24: warning: '&&' within '||' [-Wlogical-op-parentheses]
|| parameters->use_z && score_entry->z < parameters->z_cutoff || !score_entry->score)
~~ ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
swat.c:243:24: note: place parentheses around the '&&' expression to silence this warning
|| parameters->use_z && score_entry->z < parameters->z_cutoff || !score_entry->score)
^
( )
swat.c:256:29: warning: data argument not used by format string [-Wformat-extra-args]
score_entry->score, score_entry->z, e_value, score_entry->E);
^
swat.c:261:2: warning: implicit declaration of function 'print_alignment' is invalid in C99 [-Wimplicit-function-declaration]
print_alignment(q_profile);
^
swat.c:266:65: warning: data argument not used by format string [-Wformat-extra-args]
get_id(seq_num), get_seq_length(seq_num), score_entry->score, score_entry->z);
^
swat.c:272:5: warning: implicit declaration of function 'free_profile' is invalid in C99 [-Wimplicit-function-declaration]
free_profile(q_profile);
^
25 warnings generated.
cc -O2 -c -o weibull.o weibull.c
In file included from weibull.c:25:
./swat.h:85:35: warning: '/*' within block comment [-Wcomment]
/* int *maxstu_vec; NOT NEEDED /* array of length length + 1, used to hold row of scores,
^
weibull.c:47:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
reject_entry(score_entry)
^
weibull.c:50:32: warning: '&&' within '||' [-Wlogical-op-parentheses]
return (!parameters->nw_flag && !score_entry->score || score_entry->length < LENGTH_CUTOFF);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ~~
weibull.c:50:32: note: place parentheses around the '&&' expression to silence this warning
return (!parameters->nw_flag && !score_entry->score || score_entry->length < LENGTH_CUTOFF);
^
( )
weibull.c:53:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
alloc_hist()
^
weibull.c:65:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
weibull.c:67:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
initialize_hist()
^
weibull.c:78:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
weibull.c:80:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
update_hist(score_entry, z_flag)
^
weibull.c:88:5: error: non-void function 'update_hist' should return a value [-Wreturn-type]
return;
^
weibull.c:92:5: error: non-void function 'update_hist' should return a value [-Wreturn-type]
return;
^
weibull.c:106:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
prune_hist(score_entry)
^
weibull.c:111:34: error: non-void function 'prune_hist' should return a value [-Wreturn-type]
if (reject_entry(score_entry)) return;
^
weibull.c:127:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
process_hist()
^
weibull.c:155:5: warning: implicit declaration of function 'fatalError' is invalid in C99 [-Wimplicit-function-declaration]
fatalError("No entries have scores exceeding -gap_init");
^
weibull.c:168:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
fit_log_n(q_length)
^
weibull.c:300:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
est_lambda_K(q_length)
^
weibull.c:399:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
new_est_lambda_K(q_length, score_entries, last_score_entry) /* using non-extreme-value dist'n */
^
weibull.c:644:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
find_z(entry)
^
weibull.c:652:21: warning: implicit declaration of function 'make_log_table' is invalid in C99 [-Wimplicit-function-declaration]
if (!log_table) make_log_table();
^
weibull.c:665:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
make_log_table()
^
17 warnings and 3 errors generated.
make: *** [weibull.o] Error 1
Maybe someone of you has any idea, what the problem could be???
I would be very glad for every answer :)
weibull.c:88:5: error: non-void function 'update_hist' should return a value [-Wreturn-type]
return;
^
weibull.c:92:5: error: non-void function 'update_hist' should return a value [-Wreturn-type]
return;
^
and
weibull.c:111:34: error: non-void function 'prune_hist' should return a value [-Wreturn-type]
if (reject_entry(score_entry)) return;
^
must return a vaule of type in given function's header.
I found a solution. The problem was, as I already feared, the compiler.
I installed a relatively new version (gcc 4.9), set this version as active and added the path in ~/.bash_profile (that was the most important step). Furthermore, I adopted the makefile. Opening a new terminal and typing "make" runs without errors.
My compass had broken
>compass compile
LoadError on line ["36"] of C: cannot load such file -- zurb-foundation
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/lib/compass/configuration/data.rb:161:in `requi
re'
C:/www/project/config.rb:2:in `get_binding'
[...]
so I decided it was time to reinstall Ruby. Downloaded and installed rubyinstaller-1.9.3-p385.exe. It told me to also install the DevKit.
But gem install rdiscount --platform=ruby didn't go so well:
C:/Ruby193/bin/ruby.exe extconf.rb
checking for random()... no
checking for srandom()... no
checking for rand()... yes
checking for srand()... yes
checking size of unsigned long... 4
checking size of unsigned int... 4
creating Makefile
make
generating rdiscount-i386-mingw32.def
compiling basename.c
compiling Csio.c
Csio.c: In function 'Csputc':
Csio.c:14:5: warning: operation on 'iot->size' may be undefined
compiling css.c
css.c: In function 'mkd_css':
css.c:57:6: warning: operation on 'f.size' may be undefined
compiling docheader.c
compiling dumptree.c
dumptree.c: In function 'Pptype':
dumptree.c:23:22: warning: return discards qualifiers from pointer target type
[...]
dumptree.c:37:22: warning: return discards qualifiers from pointer target type
dumptree.c: In function 'pushpfx':
dumptree.c:44:24: warning: operation on 'sp->size' may be undefined
dumptree.c: In function 'dumptree':
dumptree.c:104:5: warning: initialization discards qualifiers from pointer target type
dumptree.c:104:5: warning: initialization discards qualifiers from pointer target type
compiling emmatch.c
emmatch.c: In function 'emfill':
emmatch.c:79:4: warning: operation on 'p->b_text.size' may be undefined
compiling generate.c
generate.c: In function 'push':
generate.c:37:2: warning: operation on 'f->in.size' may be undefined
generate.c: In function 'Qchar':
generate.c:120:9: warning: operation on 'f->Q.size' may be undefined
generate.c:127:5: warning: operation on 'cur->b_text.size' may be undefined
generate.c: In function 'Qem':
generate.c:172:17: warning: operation on 'f->Q.size' may be undefined
generate.c:179:13: warning: operation on 'f->Q.size' may be undefined
generate.c: In function '___mkd_reparse':
generate.c:197:5: warning: operation on 'sub.in.size' may be undefined
generate.c: In function 'puturl':
generate.c:228:6: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:230:6: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:232:6: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:236:6: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:238:6: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: At top level:
generate.c:458:5: warning: initialization discards qualifiers from pointer target type
generate.c:459:5: warning: initialization discards qualifiers from pointer target type
generate.c:460:5: warning: initialization discards qualifiers from pointer target type
generate.c:461:5: warning: initialization discards qualifiers from pointer target type
generate.c: In function 'isautoprefix':
generate.c:473:29: warning: comparison between signed and unsigned integer expressions
generate.c: At top level:
generate.c:497:1: warning: initialization discards qualifiers from pointer target type
[...]
generate.c:514:5: warning: initialization discards qualifiers from pointer target type
generate.c: In function 'pseudo':
generate.c:527:30: warning: comparison between signed and unsigned integer expressions
generate.c: In function 'p_or_nothing':
generate.c:575:5: warning: return discards qualifiers from pointer target type
generate.c: In function 'extra_linky':
generate.c:594:3: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'linkyformat':
generate.c:632:6: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:633:6: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:637:6: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'cputc':
generate.c:733:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:734:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:735:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'mangle':
generate.c:748:2: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
[...]
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: At top level:
generate.c:1085:5: warning: initialization discards qualifiers from pointer target type
[...]
generate.c: In function 'smartypants':
generate.c:1119:18: warning: comparison between signed and unsigned integer expressions
generate.c:1122:3: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1144:8: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1146:8: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'text':
generate.c:1208:2: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1212:4: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
[...]
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: At top level:
generate.c:1372:1: warning: initialization discards qualifiers from pointer target type
generate.c:1372:1: warning: initialization discards qualifiers from pointer target type
generate.c:1372:1: warning: initialization discards qualifiers from pointer target type
generate.c:1373:7: warning: initialization discards qualifiers from pointer target type
generate.c: In function 'splat':
generate.c:1384:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1395:6: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
[...]
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'printblock':
generate.c:1475:5: warning: initialization discards qualifiers from pointer target type
generate.c:1475:5: warning: initialization discards qualifiers from pointer target type
generate.c:1475:5: warning: initialization discards qualifiers from pointer target type
generate.c:1476:5: warning: initialization discards qualifiers from pointer target type
generate.c:1476:5: warning: initialization discards qualifiers from pointer target type
generate.c:1476:5: warning: initialization discards qualifiers from pointer target type
generate.c:1484:3: warning: passing argument 1 of 'push' discards qualifiers from pointer target type
generate.c:34:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1490:7: warning: passing argument 1 of 'push' discards qualifiers from pointer target type
generate.c:34:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'printcode':
generate.c:1507:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1519:5: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'htmlify':
generate.c:1546:2: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1551:2: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1555:3: warning: passing argument 2 of 'Qprintf' discards qualifiers from pointer target type
generate.c:155:1: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'definitionlist':
generate.c:1566:2: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1570:3: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1572:3: warning: passing argument 1 of 'Qstring' discards qualifiers from pointer target type
generate.c:135:1: note: expected 'char *' but argument is of type 'const char *'
generate.c:1575:6: warning: passing argument 2 of 'htmlify' discards qualifiers from pointer target type
[...]
cstring.h:73:12: note: expected 'char *' but argument is of type 'const char *'
generate.c: In function 'mkd_document':
generate.c:1710:6: warning: operation on 'p->ctx->out.size' may be undefined
compiling html5.c
html5.c: In function 'mkd_with_html5_tags':
html5.c:15:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:16:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:17:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:18:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:19:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:20:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
html5.c:21:5: warning: passing argument 1 of 'mkd_define_tag' discards qualifiers from pointer target type
tags.h:17:6: note: expected 'char *' but argument is of type 'const char *'
compiling markdown.c
markdown.c:104:15: warning: initialization discards qualifiers from pointer target type
markdown.c: In function 'quoteblock':
markdown.c:743:17: warning: initialization discards qualifiers from pointer target type
markdown.c:751:12: warning: assignment discards qualifiers from pointer target type
markdown.c: In function 'addfootnote':
markdown.c:955:23: warning: operation on 'f->footnotes->size' may be undefined
markdown.c:963:2: warning: operation on 'foot->tag.size' may be undefined
markdown.c:965:5: warning: operation on 'foot->tag.size' may be undefined
markdown.c:971:6: warning: operation on 'foot->title.size' may be undefined
markdown.c:976:2: warning: operation on 'foot->link.size' may be undefined
markdown.c:977:5: warning: operation on 'foot->link.size' may be undefined
markdown.c:1004:6: warning: operation on 'foot->title.size' may be undefined
markdown.c:1010:2: warning: operation on 'foot->title.size' may be undefined
compiling mkdio.c
mkdio.c: In function 'queue':
mkdio.c:59:3: warning: operation on 'p->text.size' may be undefined
mkdio.c:63:6: warning: operation on 'p->text.size' may be undefined
mkdio.c:67:5: warning: operation on 'p->text.size' may be undefined
mkdio.c: In function 'populate':
mkdio.c:113:6: warning: operation on 'line.size' may be undefined
mkdio.c: In function 'mkd_line':
mkdio.c:275:2: warning: operation on 'f.out.size' may be undefined
compiling rdiscount.c
In file included from c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windows.h:48:0,
from c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:22,
from c:/Ruby193/include/ruby-1.9.1/ruby/win32.h:40,
from c:/Ruby193/include/ruby-1.9.1/ruby/defines.h:223,
from c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:67,
from c:/Ruby193/include/ruby-1.9.1/ruby.h:32,
from rdiscount.c:2:
c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:229:23: error: duplicate 'unsigned'
c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:238:23: error: duplicate 'unsigned'
c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:238:23: error: two or more data types in declaration specifiers
c:\ruby193\devkit\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:241:24: error: duplicate 'unsigned'
rdiscount.c: In function 'rb_rdiscount_to_html':
rdiscount.c:18:5: warning: implicit declaration of function 'rb_rdiscount__get_flags'
rdiscount.c:18:5: warning: ISO C90 forbids mixed declarations and code
rdiscount.c: In function 'rb_rdiscount_toc_content':
rdiscount.c:55:5: warning: ISO C90 forbids mixed declarations and code
make: *** [rdiscount.o] Error 1
I've tried uninstalling Ruby and removing the C:/Ruby193 directory, but the same errors still occurs.
I was hoping that I could just gem install compass and be on my way, but I still get the same error when I run compass compile.
Do you know how to fix this?
Looks like there is an issue with the latest version of rdiscount: https://github.com/rtomayko/rdiscount/issues/74
Try installing the previously tagged version:
gem install rdiscount -v=1.6.8 --platform=ruby
I am trying to go through each .xls file in a directory and save a .csv for each file. I am working with the 'roo' gem and am seeing some errors. Totally open to other approaches, I just need to keep this in Ruby without moving to Ruby on Rails. I am running Ruby 1.9.2 and executing in terminal on a Mac.
Code so far:
#! /usr/bin/ruby
require 'roo'
# change excel files to csv
begin
Dir["/tmp/*.xls"].each do |file|
file_path = "#{file}"
file_basename = File.basename(file, ".xls")
xls = Excel.new(file_path)
xls.to_csv = ("/tmp/#{file_basename}.csv")
end
end
And here is the error I get: (line numbers are not the same as example, line 27 is begin statement)
/Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:284:in `platform_specific_iconv': uninitialized constant Excel::Iconv (NameError)
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:277:in `normalize_string'
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:139:in `block in sheets'
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:139:in `collect'
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:139:in `sheets'
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/roo-1.10.1/lib/roo/excel.rb:123:in `initialize'
from excel_conversion_test.rb:32:in `new'
from excel_conversion_test.rb:32:in `block in <main>'
from excel_conversion_test.rb:28:in `each'
from excel_conversion_test.rb:28:in `<main>'
As suggested I tried to install inconv and got the following errors:
ERROR: Error installing iconv:
ERROR: Failed to build gem native extension.
/Users/pierce/.rbenv/versions/1.9.2-p290/bin/ruby extconf.rb
checking for iconv() in iconv.h... no
checking for iconv() in -liconv... yes
checking for const of iconv() 2nd argument... no
creating Makefile
make
/usr/bin/gcc-4.2 -I. -I/Users/pierce/.rbenv/versions/1.9.2-p290/include/ruby-1.9.1/x86_64-darwin11.2.0 -I/Users/pierce/.rbenv/versions/1.9.2-p290/include/ruby-1.9.1/ruby/backward -I/Users/pierce/.rbenv/versions/1.9.2-p290/include/ruby-1.9.1 -I. -I'/Users/pierce/.rbenv/versions/1.9.2-p290/include' -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -pipe -o iconv.o -c iconv.c
In file included from iconv.c:21:
/Users/pierce/.rbenv/versions/1.9.2-p290/include/ruby-1.9.1/ruby/backward/st.h:2:2: warning: #warning use "ruby/st.h" instead of bare "st.h"
iconv.c:22:20: error: intern.h: No such file or directory
iconv.c: In function ‘map_charset’:
iconv.c:139: error: ‘struct RHash’ has no member named ‘tbl’
iconv.c:139: error: ‘struct RHash’ has no member named ‘tbl’
iconv.c:142: error: ‘struct RHash’ has no member named ‘tbl’
iconv.c: In function ‘iconv_create’:
iconv.c:187: error: ‘struct RString’ has no member named ‘len’
iconv.c:188: error: ‘struct RString’ has no member named ‘len’
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:192: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:193: error: ‘struct RString’ has no member named ‘len’
iconv.c: In function ‘iconv_fail’:
iconv.c:328: error: ‘struct RString’ has no member named ‘len’
iconv.c: In function ‘iconv_fail_retry’:
iconv.c:352: error: ‘ruby_errinfo’ undeclared (first use in this function)
iconv.c:352: error: (Each undeclared identifier is reported only once
iconv.c:352: error: for each function it appears in.)
iconv.c: In function ‘rb_str_derive’:
iconv.c:371: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:371: error: ‘struct RString’ has no member named ‘len’
iconv.c:373: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:373: error: ‘struct RString’ has no member named ‘len’
iconv.c:374: error: ‘struct RString’ has no member named ‘ptr’
iconv.c: In function ‘iconv_convert’:
iconv.c:418: error: ‘struct RArray’ has no member named ‘len’
iconv.c:418: error: ‘struct RArray’ has no member named ‘ptr’
iconv.c:436: error: ‘struct RString’ has no member named ‘len’
iconv.c:437: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:455: warning: comparison of unsigned expression >= 0 is always true
iconv.c:458: warning: comparison between signed and unsigned
iconv.c:459: warning: comparison between signed and unsigned
iconv.c:491: warning: implicit conversion shortens 64-bit value into a 32-bit value
iconv.c:494: warning: implicit conversion shortens 64-bit value into a 32-bit value
iconv.c:497: error: ‘struct RArray’ has no member named ‘len’
iconv.c:498: error: ‘struct RArray’ has no member named ‘ptr’
iconv.c:499: error: ‘struct RArray’ has no member named ‘ptr’
iconv.c:501: error: ‘struct RString’ has no member named ‘len’
iconv.c:502: error: ‘struct RString’ has no member named ‘ptr’
iconv.c:514: warning: implicit conversion shortens 64-bit value into a 32-bit value
iconv.c: In function ‘iconv_s_convert’:
iconv.c:615: error: ‘struct RString’ has no member named ‘len’
make: *** [iconv.o] Error 1
Gem files will remain installed in /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/iconv-0.1 for inspection.
Add this: require 'iconv' before require 'roo'. I found this solution here, and i got there using this query on google: roo/excel.rb:284. An example here! Notice about the = in this line: xls.to_csv = ("/tmp/#{file_basename}.csv") that should not be there.
I decided to post an answer to try and explain this situation for anyone else that arrives here from Google.
As David points out, to fix this error...
uninitialized constant Excel::Iconv
...you'll have to require "iconv":
require "iconv"
require "roo"
This is because the Roo gem calls Iconv.new in its internal Excel class but Roo forgot to require "iconv" itself, so you're forced to do it. It's a bug. It's no different than calling Set.new without require "set"
Iconv is part of Ruby 1.8 and 1.9's standard library. You don't install it. It's already there.
However, it's worth pointing out that Iconv is deprecated in Ruby 1.9 and removed in Ruby 2.0.
I tried to install Sphinx on MacOSX snow leopard 10.6.4. The steps I followed are:
./configure --prefix=/usr/local --with-mysql=/usr/local/mysql
make
sudo make install
While 'make', I get the following errors:
Making all in src
if test -d ../.svn; then svn info .. --xml | perl svnxrev.pl; fi;
make all-am
g++ -DHAVE_CONFIG_H -I. -I../config -DSYSCONFDIR="\"/usr/local/etc\"" -I/usr/local/include -I/usr/local/mysql/include -Os -g -fno-common -fno-strict-aliasing -arch i386 -Wall -g -D_FILE_OFFSET_BITS=64 -O3 -DNDEBUG -MT sphinx.o -MD -MP -MF .deps/sphinx.Tpo -c -o sphinx.o sphinx.cpp
In file included from /usr/include/sql.h:92,
from /usr/include/sqlext.h:82,
from sphinx.h:69,
from sphinx.cpp:14:
/usr/include/iodbcunix.h:128: error: conflicting declaration ‘typedef unsigned int DWORD’
sphinxstd.h:90: error: ‘DWORD’ has a previous declaration as ‘typedef long unsigned int DWORD’
sphinx.cpp: In function ‘char* sphStrMacro(const char*, const char*, SphDocID_t)’:
sphinx.cpp:1912: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘SphDocID_t’
sphinx.cpp: In function ‘CSphString sphDumpAttr(const CSphColumnInfo&)’:
sphinx.cpp:4784: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long unsigned int’
sphinx.cpp: In member function ‘virtual void CSphIndex_VLN::DebugDumpHeader(FILE*, const char*)’:
sphinx.cpp:14563: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘DWORD’
sphinx.cpp:14592: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long unsigned int’
sphinx.cpp:14631: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘DWORD’
sphinx.cpp: In member function ‘virtual void CSphIndex_VLN::DebugDumpDocids(FILE*)’:
sphinx.cpp:14647: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long unsigned int’
sphinx.cpp:14648: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘DWORD’
sphinx.cpp:14655: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
sphinx.cpp:14655: warning: format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘SphDocID_t’
sphinx.cpp: In member function ‘virtual void CSphIndex_VLN::DebugDumpHitlist(FILE*, const char*)’:
sphinx.cpp:14710: warning: format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘SphDocID_t’
sphinx.cpp:14710: warning: format ‘%08x’ expects type ‘unsigned int’, but argument 4 has type ‘DWORD’
sphinx.cpp: In member function ‘bool CSphSource_SQL::RunQueryStep(const char*, CSphString&)’:
sphinx.cpp:18346: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘SphDocID_t’
sphinx.cpp:18347: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘SphDocID_t’
sphinx.cpp: In member function ‘const char* CSphSource_XMLPipe2::DecorateMessageVA(const char*, char*)’:
sphinx.cpp:20238: warning: format ‘%u’ expects type ‘unsigned int’, but argument 6 has type ‘SphDocID_t’
sphinx.cpp: In member function ‘virtual bool CSphSource_ODBC::SqlQuery(const char*)’:
sphinx.cpp:21288: warning: comparison between signed and unsigned integer expressions
sphinx.cpp: At global scope:
sphinx.cpp:1741: warning: ‘g_tmInitTimer’ defined but not used
make[2]: *** [sphinx.o] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1
I checked the directory of MySQL is correct.
I found the following suggestions helpful:
1. add the following parameter to configure:
--with-unixodbc=no
if you still get errors, try setting LDFLAGS to '-arch i386'
Mac OS X binaries are available for 2.0.1b from http://sphinxsearch.com/downloads/
I'm trying to learn Ruby on Rails and wanted to follow Apple's example:
http://developer.apple.com/tools/developonrailsleopard.html
It requires Ruby 1.8.6 and Rails 2.0.2
My machines is already updated to 1.9.1. I wanted to use rvm to install 1.8.6 but it failed during make with the following log:
[2010-10-20 10:43:31] make
eval.c: In function ‘rb_eval_string_wrap’:
eval.c:1743: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_eval_cmd’:
eval.c:1884: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘call_trace_func’:
eval.c:2735: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_raise_jump’:
eval.c:4760: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘method_missing’:
eval.c:5684: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_call0’:
eval.c:5847: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_f_eval’:
eval.c:6634: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘exec_under’:
eval.c:6658: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_load’:
eval.c:6894: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘call_end_proc’:
eval.c:7924: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘rb_f_END’:
eval.c:7937: warning: assignment discards qualifiers from pointer target type
eval.c: In function ‘mproc’:
eval.c:9557: warning: assignment discards qualifiers from pointer target type
file.c: In function ‘lchmod_internal’:
file.c:1787: warning: cast from pointer to integer of different size
gc.c: In function ‘obj_free’:
gc.c:1287: warning: initialization from incompatible pointer type
regex.c: In function ‘ruby_re_compile_pattern’:
regex.c:1362: warning: format ‘%d’ expects type ‘int’, but argument 7 has type ‘long int’
regex.c:2026: warning: format ‘%d’ expects type ‘int’, but argument 6 has type ‘long int’
ptr.c: In function ‘rb_dlptr_inspect’:
ptr.c:461: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 7 has type ‘struct ptr_data *’
ptr.c:461: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 8 has type ‘void *’
void
char
short
int
long
float
double
sym.c: In function ‘rb_dlsym_inspect’:
sym.c:270: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 6 has type ‘struct sym_data *’
sym.c:270: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 7 has type ‘void *’
ossl_asn1.c: In function ‘decode_bool’:
ossl_asn1.c:313: warning: passing argument 2 of ‘d2i_ASN1_BOOLEAN’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_int’:
ossl_asn1.c:328: warning: passing argument 2 of ‘d2i_ASN1_INTEGER’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_bstr’:
ossl_asn1.c:347: warning: passing argument 2 of ‘d2i_ASN1_BIT_STRING’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_enum’:
ossl_asn1.c:373: warning: passing argument 2 of ‘d2i_ASN1_ENUMERATED’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_null’:
ossl_asn1.c:390: warning: passing argument 2 of ‘d2i_ASN1_NULL’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_obj’:
ossl_asn1.c:407: warning: passing argument 2 of ‘d2i_ASN1_OBJECT’ from incompatible pointer type
ossl_asn1.c: In function ‘decode_time’:
ossl_asn1.c:435: warning: passing argument 2 of ‘d2i_ASN1_TIME’ from incompatible pointer type
ossl_asn1.c: In function ‘ossl_asn1_get_asn1type’:
ossl_asn1.c:503: warning: cast to pointer from integer of different size
ossl_asn1.c: In function ‘ossl_asn1_decode0’:
ossl_asn1.c:727: warning: passing argument 1 of ‘ASN1_get_object’ from incompatible pointer type
ossl_ns_spki.c: In function ‘ossl_spki_initialize’:
ossl_ns_spki.c:67: warning: passing argument 2 of ‘d2i_NETSCAPE_SPKI’ from incompatible pointer type
ossl_ocsp.c: In function ‘ossl_ocspreq_initialize’:
ossl_ocsp.c:114: warning: passing argument 2 of ‘d2i_OCSP_REQUEST’ from incompatible pointer type
ossl_ocsp.c: In function ‘ossl_ocspres_initialize’:
ossl_ocsp.c:321: warning: passing argument 2 of ‘d2i_OCSP_RESPONSE’ from incompatible pointer type
ossl_pkcs7.c: In function ‘ossl_pkcs7si_new’:
ossl_pkcs7.c:90: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_pkcs7.c: In function ‘DupPKCS7SignerPtr’:
ossl_pkcs7.c:103: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_pkcs7.c: In function ‘ossl_pkcs7ri_new’:
ossl_pkcs7.c:116: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_pkcs7.c: In function ‘DupPKCS7RecipientPtr’:
ossl_pkcs7.c:129: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_pkey_dsa.c: In function ‘ossl_dsa_initialize’:
ossl_pkey_dsa.c:141: warning: passing argument 1 of ‘PEM_ASN1_read_bio’ from incompatible pointer type
ossl_pkey_dsa.c:141: warning: passing argument 4 of ‘PEM_ASN1_read_bio’ from incompatible pointer type
ossl_pkey_dsa.c: In function ‘ossl_dsa_to_public_key’:
ossl_pkey_dsa.c:313: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_x509attr.c: In function ‘ossl_x509attr_initialize’:
ossl_x509attr.c:100: warning: passing argument 2 of ‘d2i_X509_ATTRIBUTE’ from incompatible pointer type
ossl_x509ext.c: In function ‘ossl_x509ext_initialize’:
ossl_x509ext.c:285: warning: passing argument 2 of ‘d2i_X509_EXTENSION’ from incompatible pointer type
ossl_x509name.c: In function ‘ossl_x509name_initialize’:
ossl_x509name.c:135: warning: passing argument 2 of ‘d2i_X509_NAME’ from incompatible pointer type
ossl_x509revoked.c: In function ‘ossl_x509revoked_new’:
ossl_x509revoked.c:48: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
ossl_x509revoked.c: In function ‘DupX509RevokedPtr’:
ossl_x509revoked.c:64: warning: passing argument 2 of ‘ASN1_dup’ from incompatible pointer type
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1
[2010-10-20 10:50:17] make
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1
[2010-10-20 11:48:12] make
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1
[2010-10-20 15:30:53] make
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1
[2010-10-20 17:19:27] make
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1
Can anyone help? I'm totally lost here…
That article i 2.5 years old. I wouldn't recommend following it. If you still wants to then you could try to rvm install Ruby 1.8.7. I've never heard of any compability issues between 1.8.6 and 1.8.7.
I would instead recommend that you follow Setting up a Rails Development System on Mac OSX Snow Leopard and from there the regular Getting Started with Rails.