Showing posts with label install. Show all posts
Showing posts with label install. Show all posts

Wednesday, December 30, 2009

Resolved: "failed to build gem native extension" on Windows

Running:
- Windows XP SP3
- Ruby 1.8.6 (patchlevel 383, i386-minw32)

Problem:
When trying to do "gem install" on certain gems, I got a message "failed to build gem native extension" and the installation would fail. Some common gems that this happens to include ruby-debug, ruby-debug-ide, hpricot, sqlite3-ruby, and ruby-oci8.

Resolution:
Install the Ruby Development Kit from RubyForge. It's currently only available as a .7z file, so you'll need 7Zip to open it. Follow the instructions in the included INSTALL.txt file, but make sure when you copy the bin folder to your Ruby installation that you copy just the files inside it. Don't overwrite your Ruby installation's bin folder. That would be very bad.

Notes:
So what is a native extension and why is trying to install this?
Your Ruby interpreter (the ruby.exe program) is written C (or Java if it's jruby). Certain gems need to actually add C libraries to your Ruby installation in order to function properly, not just ruby-language files. They're usually downloaded as source (not binaries) and compiled on your machine to match your system's architecture. The problem is when, for instance, your machine doesn't have a C compiler available or not the same one as the gem is expecting (you may see something about "MSC version unmatch" if the version is different). The Ruby Dev Kit comes with a C compiler (gcc) that runs on Windows and is (probably) compatible with the gems. This resolved my issue.

The fact that you have to download the Dev Kit for building native extensions is apparently a recent change (Nov. '09), and it probably only applies to Windows Ruby installations. This change is currently not well documented, which is why I'm posting my findings.

This can also manifest itself in NetBeans IDE if you opt to install the FastDebugger and get similar error messages about native extensions failing to build.

Related Links:

Wednesday, July 8, 2009

Oracle Installation error: ORA-12560

I'm setting up a development environment on my machine for a new web app in Ruby on Rails with an Oracle back-end. This was my first time installing an Oracle database. It's quite an archaic and un-user-friendly process. The good news is, I've spent a lot more time praying than I usually do while at work. I'll try to keep this short.

OS: Windows XP, SP3
Installing: Oracle 10g Standard Edition
Steps:
  1. Download the zipped 10gR2 installer package from Oracle's website (~625MB).
  2. Extract the zip file somewhere on my hard drive.
  3. Run the setup file in the extracted folder.
  4. Follow the wizard, selecting not to create the sample database at the beginning. Use the defaults for everything else. Yay, now we've got an empty Oracle installation.
  5. Now to create a database. Click Start > All Programs > Oracle - OraDb10g_home1 > Configuration and Migration Tools > Database Configuration Assistant.
  6. Follow the wizard, keeping the defaults (except I changed the character encoding to Unicode).
The Problem: I got a whole ton of error dialog boxes popping up. I chose "ignore" on all of them, allowed the database to finish being created, and then took a look at the log file (myOracleFolder\product\10.2.0\db_1\cfgtoollogs\dbca\myDatabaseName\emConfig.log). The log file mentions:

CONFIG: ORA-12560: TNS:protocol adapter error

oracle.sysman.assistants.util.sqlEngine.SQLFatalErrorException: ORA-12560: TNS:protocol adapter error

at oracle.sysman.assistants.util.sqlEngine.SQLEngine.executeImpl(SQLEngine.java:1467)
at oracle.sysman.assistants.util.sqlEngine.SQLEngine.connect(SQLEngine.java:814)
at oracle.sysman.emcp.util.GeneralUtil.initSQLEngine(GeneralUtil.java:363)
at oracle.sysman.emcp.DatabaseChecks.validateUserCredentials(DatabaseChecks.java:986)
at oracle.sysman.emcp.ParamsManager.validatePassword(ParamsManager.java:2694)
at oracle.sysman.emcp.EMDBPreConfig.checkConfigParams(EMDBPreConfig.java:1268)
at oracle.sysman.emcp.EMDBPreConfig.checkParameters(EMDBPreConfig.java:1060)
at oracle.sysman.emcp.EMDBPreConfig.invoke(EMDBPreConfig.java:174)
at oracle.sysman.emcp.EMDBPreConfig.invoke(EMDBPreConfig.java:160)
at oracle.sysman.emcp.EMConfig.perform(EMConfig.java:141)
at oracle.sysman.assistants.util.em.EMConfiguration.run(EMConfiguration.java:430)
at java.lang.Thread.run(Thread.java:534)
Jul 8, 2009 9:50:33 AM oracle.sysman.emcp.EMConfig perform
SEVERE: Invalid username/password.
Refer to the log file at C:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca\orcl\emConfig.log for more details.
Jul 8, 2009 9:50:33 AM oracle.sysman.emcp.EMConfig perform
CONFIG: Stack Trace:
oracle.sysman.emcp.exception.EMConfigException: Invalid username/password.
at oracle.sysman.emcp.EMDBPreConfig.checkConfigParams(EMDBPreConfig.java:1272)
at oracle.sysman.emcp.EMDBPreConfig.checkParameters(EMDBPreConfig.java:1060)
at oracle.sysman.emcp.EMDBPreConfig.invoke(EMDBPreConfig.java:174)
at oracle.sysman.emcp.EMDBPreConfig.invoke(EMDBPreConfig.java:160)
at oracle.sysman.emcp.EMConfig.perform(EMConfig.java:141)
at oracle.sysman.assistants.util.em.EMConfiguration.run(EMConfiguration.java:430)
at java.lang.Thread.run(Thread.java:534)


The solution:
Uninstall the half-created database I just made, restart my machine, and then recreate the database. Now it works. *smacks forehead*