Sponsored Content
Top Forums UNIX for Dummies Questions & Answers What Makes an App the System Default? Post 302770437 by bakunin on Friday 15th of February 2013 09:51:55 PM
Old 02-15-2013
I notice with satisfaction you still tenaciously learn UNIX despite my efforts to let the subject look boring and hard to grasp - good!
Quote:
Originally Posted by sudon't
Code:
$ sudo gem install scrabble-solver
ERROR:  Error installing scrabble-solver:
	scrabble-solver requires Ruby version >= 1.9.2

$ which ruby
/usr/bin/ruby

$ ls -l /opt/local/bin/ |grep ruby
-rwxr-xr-x   1 root  admin     9024 Feb  6 11:21 ruby1.9
$

Why didn't ruby 1.9 become the default? How does the system determine which app is the default? I used to think it simply accepted the first one it came across in my PATH, but clearly that is not the case.
Code:
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/opt/local/bin:/opt/local/sbin:/sw/bin:/sw/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/MacGPG2/bin:/usr/X11/bin

To me it looks like the problem is the name: the new ruby in "/opt/local/bin" is not named "ruby", but "ruby1.9". If you issue which ruby1.9 you would probably see this one, but if you search for "ruby", you get the one in "/usr/bin" simply because it is the only "ruby" you have.

Now, why ruby decided to install as "ruby1.9" and not as "ruby" i don' know. I don't know Macs version of UNIX at all, so i can only tell you what is the possible reason for the problem, not how to solve it.

You can, of course, try to solve the problem brute-force:

Rename "/usr/bin/ruby" to something else, say, "/usr/bin/ruby1.8". Then create a softlink:

Code:
ln -s /opt/local/bin/ruby1.9 /usr/bin/ruby

Whenever "ruby" is used, this link is followed and your new executable is used. If this works, i don't know. (There might be libraries or whatever necessary for ruby to work and it will probably not find them in any arbitrary place.) If this is not working, just delete the softlink and move the original ruby back into place:

Code:
rm /usr/bin/ruby
mv /usr/bin/ruby1.8 /usr/bin/ruby

I hope this helps.

bakunin
 

3 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Loading App as the System starts

Hi Folks! I am a Mac OS X user, and have written an Applescript application that I would like it to be run before the user logs in. I have tryed leaving the Mac on the "Login Screen", that screen just before you log in typing name and password, and logging using ssh from another Mac on the... (0 Replies)
Discussion started by: fundidor
0 Replies

2. UNIX for Dummies Questions & Answers

chmod ug-s /System/Library/CoreServices/RemoteManagement/ARDAgent.app/.... NOT PERMITTED

After much reflecting I decided that I don't want to have a remote managemente in my computer and I digited in Terminal from the Administrator Account: chmod ug-s /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent But the answer is: NOT PERMITTED Why? Is it not... (6 Replies)
Discussion started by: Vera
6 Replies

3. Programming

Wuhan Coronavirus Status App for China - Rapid Prototype using MQTT and the IoT OnOff IOS App

With a little bit of work, was able to build a nice "Wuhan Coronavirus Status" app using MQTT and the IoT-OnOff app. More on this technique here: ESP32 (ESP-WROOM-32) as an MQTT Client Subscribed to Linux Server Load Average Messages The result turned out nice, I think. I like the look and... (10 Replies)
Discussion started by: Neo
10 Replies
Package::Pkg(3pm)					User Contributed Perl Documentation					 Package::Pkg(3pm)

NAME
Package::Pkg - Handy package munging utilities VERSION
version 0.0020 SYNOPSIS
First, import a new keyword: "pkg" use Package::Pkg; Package name formation: pkg->name( 'Xy', 'A' ) # Xy::A pkg->name( $object, qw/ Cfg / ); # (ref $object)::Cfg Subroutine installation: pkg->install( sub { ... } => 'MyPackage::myfunction' ); # myfunction in MyPackage is now useable MyPackage->myfunction( ... ); Subroutine exporting: package MyPackage; use Package::Pkg; sub this { ... } # Setup an exporter (literally sub import { ... }) for # MyPackage, exporting 'this' and 'that' pkg->export( that => sub { ... }, 'this' ); package main; use MyPackage; this( ... ); that( ... ); DESCRIPTION
Package::Pkg is a collection of useful, miscellaneous package-munging utilities. Functionality is accessed via the imported "pkg" keyword, although you can also invoke functions directly from the package ("Package::Pkg") USAGE
pkg->install( ... ) Install a subroutine, similar to Sub::Install This method takes a number of parameters and also has a two- and three-argument form (see below) # Install an anonymous subroutine as Banana::magic pkg->install( code => sub { ... } , as => 'Banana::magic' ) pkg->install( code => sub { ... } , into => 'Banana::magic' ) # Bzzzt! Throws an error! # Install the subroutine Apple::xyzzy as Banana::magic pkg->install( code => 'Apple::xyzzy', as => 'Banana::magic' ) pkg->install( code => 'Apple::xyzzy', into => 'Banana', as => 'magic' ) pkg->install( from => 'Apple', code => 'xyzzy', as => 'Banana::magic' ) pkg->install( from => 'Apple', code => 'xyzzy', into => 'Banana', as => 'magic' ) # Install the subroutine Apple::xyzzy as Banana::xyzzy pkg->install( code => 'Apple::xyzzy', as => 'Banana::xyzzy' ) pkg->install( code => 'Apple::xyzzy', into => 'Banana' ) pkg->install( from => 'Apple', code => 'xyzzy', as => 'Banana::xyzzy' ) pkg->install( from => 'Apple', code => 'xyzzy', into => 'Banana' ) With implicit "from" (via "caller()") package Apple; sub xyzzy { ... } # Install the subroutine Apple::xyzzy as Banana::xyzzy pkg->install( code => 'xyzzy', as => 'Banana::xyzzy' ) # 'from' is implicitly 'Apple' pkg->install( code => &xyzzy, as => 'Banana::xyzzy' ) Acceptable parameters are: code A subroutine reference, A package-with-name identifier, or The name of a subroutine in the calling package from (optional) A package identifier If :code is an identifier, then :from is the package where the subroutine can be found If :code is an identifier and :from is not given, then :from is assumed to be the calling package (via caller()) as The name of the subroutine to install as. Can be a simple name (when paired with :into) or a full package-with-name into (optional) A package identifier If :as is given, then the full name of the installed subroutine is (:into)::(:as) If :as is not given and we can derive a simple name from :code (It is a package-with-name identifier), then :as will be the name identifier part of :code pkg->install( $code => $as ) This is the two-argument form of subroutine installation Install $code subroutine as $as pkg->install( sub { ... } => 'Banana::xyzzy' ) pkg->install( 'Scalar::Util::blessed' => 'Banana::xyzzy' ) pkg->install( 'Scalar::Util::blessed' => 'Banana::' ) pkg->install( sub { ... } => 'Banana::' ) # Bzzzt! Throws an error! $code should be: o A CODE reference sub { ... } o A package-with-name identifier Scalar::Util::blessed o The name of a subroutine in the calling package sub xyzzy { ... } pkg->install( 'xyzzy' => ... ) $as should be: o A package-with-name identifier Acme::Xyzzy::magic o A package identifier (with a trailing ::) Acme::Xyzzy:: pkg->install( $code => $into, $as ) This is the three-argument form of subroutine installation pkg->install( sub { ... } => 'Banana', 'xyzzy' ) pkg->install( sub { ... } => 'Banana::', 'xyzzy' ) pkg->install( 'Scalar::Util::blessed' => 'Banana', 'xyzzy' ) pkg->install( 'Scalar::Util::blessed' => 'Banana::', 'xyzzy' ) $code can be the same as the two argument form $into should be: o A package identifier (trailing :: is optional) Acme::Xyzzy:: Acme::Xyzzy $as should be: o A name (the name of the subroutine) xyzzy magic $package = pkg->name( $part, [ $part, ..., $part ] ) Return a namespace composed by joining each $part with "::" Superfluous/redundant "::" are automatically cleaned up and stripped from the resulting $package If the first part leads with a "::", the the calling package will be prepended to $package pkg->name( 'Xy', 'A::', '::B' ) # Xy::A::B pkg->name( 'Xy', 'A::' ) # Xy::A:: { package Zy; pkg->name( '::', 'A::', '::B' ) # Zy::A::B pkg->name( '::Xy::A::B' ) # Zy::Xy::A::B } In addition, if any part is blessed, "name" will resolve that part to the package that the part makes reference to: my $object = bless {}, 'Xyzzy'; pkg->name( $object, qw/ Cfg / ); # Xyzzy::Cfg SEE ALSO
Sub::Install Sub::Exporter AUTHOR
Robert Krimen <robertkrimen@gmail.com> COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Robert Krimen. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. perl v5.14.2 2012-06-15 Package::Pkg(3pm)
All times are GMT -4. The time now is 02:28 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy