Can't install basic packages on Debian EC2 with Aptitude/apt-get - amazon-ec2

I'm trying to install Tsung (based on erlang) on my EC2 instance (m1.large) with Debian squeeze.
My Tsung setup file is "tsung_1.4.2-1.1_amd64.deb". When I "dpkg -i" it, I got an error:
Preparing to replace tsung 1.4.2-1.1 (using tsung_1.4.2-1.1_amd64.deb) ...
Unpacking replacement tsung ...
dpkg: dependency problems prevent configuration of tsung:
tsung depends on gnuplot; however:
Package gnuplot is not installed.
tsung depends on libtemplate-perl; however:
Package libtemplate-perl is not installed.
tsung depends on python-matplotlib; however:
Package python-matplotlib is not installed.
tsung depends on erlang-abi-15.b; however:
Package erlang-abi-15.b is not installed.
Package erlang-base which provides erlang-abi-15.b is not configured yet.
tsung depends on erlang-asn1 (>= 1:15.b.1-dfsg); however:
Version of erlang-asn1 on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-base (>= 1:15.b.1-dfsg) | erlang-base-hipe (>= 1:15.b.1-dfsg); however:
Package erlang-base is not configured yet.
Package erlang-base-hipe is not installed.
tsung depends on erlang-crypto (>= 1:15.b.1-dfsg); however:
Version of erlang-crypto on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-inets (>= 1:15.b.1-dfsg); however:
Version of erlang-inets on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-os-mon (>= 1:15.b.1-dfsg); however:
Version of erlang-os-mon on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-snmp (>= 1:15.b.1-dfsg); however:
Version of erlang-snmp on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-ssl (>= 1:15.b.1-dfsg); however:
Version of erlang-ssl on system is 1:14.a-dfsg-3squeeze1.
tsung depends on erlang-xmerl (>= 1:15.b.1-dfsg); however:
Version of erlang-xmerl on system is 1:14.a-dfsg-3squeeze1.
dpkg: error processing tsung (--install):
dependency problems - leaving unconfigured
Processing triggers for man-db ...
Errors were encountered while processing:
tsung
When I'm trying to install all the missing package, there are another packages missing, and so on.
I tried to install erlang with all its additional packages through aptitude, but not all of the packages are available there.
I tried with apt-get one by one and again, they are depends on another package which depends on another...
Is there a way to install the basic required packages in one command? or the enable the aptitude? (most of the packages are signed as "v" and cannot be added to install list)
Thanks

If you install a package using dpkg that doesn't have all it's dependencies, you can fix it by running:
apt-get install -f
Note that it will only find packages in your current repositories. If some are still missing, try apt-get update. If that still doesn't work, you will need to find an apt repo which hosts those packages, or install the packages manually.

The version of Erlang/OTP in Debian squeeze seems to be R14A, while the Tsung package you're trying to install requires R15B01.
It seems like R15B01 is present in squeeze-backports. Follow the instructions for activating backports, and install the new Erlang packages.

Related

Pin or lock version of a dependency gem installed as part of bundle install

I'm trying to work around a bug in the ffi Gem on Windows. I need to run bundle install on some project that I pulled from the internet. The problem is that bundle install is trying to install version 1.9.9 of ffi, which will error out.
Is there some way I can tell bundle install to install version 1.9.8 of ffi? Perhaps a command line parameter, or an addition to the Gemfile or Gemfile.lock?
One possible complication is that the Gemfile I'm dealing with does not list ffi at all, so it must be pulled in by one of the dependencies' dependencies.
Explicitly list the version of ffi you want in your Gemfile. That's what it's for:
gem 'ffi', '1.9.8'
If your Gemfile.lock already has ffi locked to version 1.9.9 (which is probably the case for you), you may have to run bundle update ffi after adding that to your Gemfile before bundle install will work correctly.

Error in installing different version of rubygems through RPMs

I have been trying to install rubygems through RPMs (because my target machine doesn't have an internet connection). Now I need to install both json-1.8.1 and json-1.6.8 gems. I have generated RPMs for both the versions though fpm. I installed both of them, but only one of them is visible in gem list.
# rpm -q rubygem-json
rubygem-json-1.8.1-1.x86_64
rubygem-json-1.6.8-1.x86_64
The gem list shows only one version installed.
# gem list
*** LOCAL GEMS ***
json (1.8.1)
Now, when I did yum check, the output is:
# yum check
Loaded plugins: langpacks, presto, refresh-packagekit
rubygem-json-1.8.1-1.x86_64 is a duplicate with rubygem-json-1.6.8-1.x86_64
Error: check all
I am able to install different versions of some of the gems like puma, mime-types. But I am having issues with json.
How can I install both the versions, so that the dependencies can be resolved?

Veewee Install Error

I'm trying to install veewee for vagrant, so that I may take advantage of the automation it employs to create base boxes. I could be doing something wrong, but I don't think so...
Here's what I'm running:
gem install veewee
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: vagrant requires json (~> 1.5.1)
I also tried the following:
sudo gem install veewee
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: cucumber requires json (>= 1.4.6); gherkin requires json (>= 1.7.6); vagrant requires json (~> 1.5.1)
This is due to vagrant requiring an old version of json (for compatibility with windows, say the developers) while gherkin recently started requiring some newer one. To solve it, you should:
Make sure you remove any previously installed json gem:
gem uninstall json
Install vagrant first, so that it downloads the old json:
gem install vagrant
Install an old gherkin gem:
gem install gherkin --version '2.11.5'
Now you can install veewee:
gem install veewee
I went through this issue today and this is the sequence that worked for me. Reference:
https://github.com/jedi4ever/veewee/issues/518
I hope it helps you.
Best regards,
Ricardo.

How to check system package dependency of a gem

Let's say, I have a gem:
curb
Now this requires:
libcurl-devel
system package installed on my machine (Fedora 17). How do I find out the dependency before attempting an install? This command:
gem dependency curb
only show the other gems which are required for this gem to install, not system packages:
$ gem dependency curb
Gem curb-0.8.1
You can't, per se. The dependency is on the libcurl headers, so you could try to find those headers in the available search paths, and then make a recommendation of which package to install based on the platform being installed on, but the libcurl headers could be installed by any number of packages, or even from source, so there's no one way to say "curb requires libcurl-devel" in a general case.

How do you precompile the native extensions for a ruby gem for linux?

We have a ruby application that depends on a gem with native extensions (in this specific case Nokogiri). However, for various reasons we cannot install the build prerequisites (such as build-essential, libxslt-dev, ruby-dev, etc) for that gem onto our production host.
Is there a (standard?) way to repackage the gem with the native extensions pre-built?
It should be possible (it seems to be fairly standard to do this for Windows), but I can't find any documentation on the subject.
Note that we only need to support a single platform, with known versions of all system libraries (Ubuntu 9.04 Server 64 bit, Ruby 1.8.7).
UPDATE:
We're using Bundler, so we want to still have a gem to install at the end of the day, not a debian package.
Finally found a way to do this for gems that use rake-compiler for building their C extensions (which is most of them).
You need to do the following on a machine that is identical to the one you want to deploy to, or it simply won't work:
Install the build prerequisites for building C extensions:
# apt-get install build-essentials ruby-dev # ... etc
# gem install rake-compiler
Unpack the gem you want to rebuild:
$ gem unpack nokogiri
Build your shiny new precompiled gem:
$ rake native gem
You can now install the native gem on a machine without any build tools installed:
$ gem install pkg/nokogiri-1.4.3.1-x86-linux.gem
Successfully installed nokogiri-1.4.3.1-x86-linux
1 gem installed
Build machine
To have the correctly platformed version for all of your gems already cached,
package all gems in vendor/cache on an identical machine:
$ bundle package --all
Prduction machine
Install all gem dependecies already cached that requires to have the correctly
platformed version using the gem cache:
$ bundle install --local --deployment

Resources