Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install audiowaveform program on AWS Elastic Beanstalk

Just FYI ... context here is AWS Elastic Beanstalk. I'm trying to the install audiowaveform program on 64bit Amazon Linux 2015.03 v1.4.3 (the customer AMI ID is ami-6b50291c). Running this ... ๐Ÿ‘‡

$ sudo yum install git cmake libmad-devel libsndfile-devel gd-devel boost-devel

... successfully installs all packages except libmad-devel and libsndfile-devel. Below is the relevant output ...

Failed to set locale, defaulting to C
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/2015.03                                                        | 2.1 kB     00:00     
amzn-updates/2015.03                                                     | 2.3 kB     00:00     
Package git-2.1.0-1.38.amzn1.x86_64 already installed and latest version
Package cmake-2.8.12-2.20.amzn1.x86_64 already installed and latest version
No package libmad-devel available.
No package libsndfile-devel available.
Package gd-devel-2.0.35-11.10.amzn1.x86_64 already installed and latest version
Package boost-devel-1.53.0-14.21.amzn1.x86_64 already installed and latest version
Nothing to do

That said, this is not a problem with audiowaveform ... all this means is that the repositories enabled for Amazon Linux AMIs do not have libmad-devel and libsndfile-devel by default. I probably have to simply add my own sources I guess.

Also to note is that no yum packages exist for audio waveform so I have to build this manually.

Obtain the source ... ๐Ÿ‘‡

$ git clone https://github.com/bbcrd/audiowaveform.git
$ cd audio waveform

Then build and install ... ๐Ÿ‘‡

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

Question 1

On AWS EB ... the EC2 instances are configured to use Amazon sources which don't have the above packages i.e. libmad-devel and libsndfile-devel. What would be the recommended approach to adding these packages so that they are available to yum?

I stress recommended because I feel that changing the sources from Amazon's could not be the best approach. Nor is adding another source that could conflict with Amazon's packages ... etc etc etc ...

Question 2

Assuming I'm able to install libmad-devel and libsndfile-devel. I still have to build this manually since there are no packages of audiowaveform. On AWS EB I could write a script to do this as each instance is being instantiated ... but I feel this isn't ideal, slow and kinda error-prone. Anyone have advice on how I can do this better?

Probably prepare an AMI with this already built that's based off ami-6b50291c. Thoughts?

Core Objective

I don't have to use audiowaveform ... my objective really is to extract the peak points of some audio (MP3). I will set this up as a separate question.

like image 306
King'ori Maina Avatar asked Jul 08 '15 08:07

King'ori Maina


People also ask

How do you deploy web app on AWS Elastic Beanstalk?

Upload the app to S3 automatically For deploying your web app, you need to package it and upload it to Amazon Simple Storage Service (S3) in order for Elastic Beanstalk to deploy that application in the environment.

What format can source files be in for Amazon Elastic Beanstalk?

You can add AWS Elastic Beanstalk configuration files ( . ebextensions ) to your web application's source code to configure your environment and customize the AWS resources that it contains. Configuration files are YAML- or JSON-formatted documents with a . config file extension that you place in a folder named .


2 Answers

Amazon Elastic Beanstalk tends to be very restricted in terms of what software you can install on it. I solved it by dockerizing my application environment. This is possible now even on Elastic Beanstalk.

Learn more about Elastic Beanstalk's support for Docker ...

AWS Elastic Beanstalk makes it easy for you to deploy and manage applications in the AWS cloud. After you upload your application, Elastic Beanstalk will provision, monitor, and scale capacity (Amazon EC2 instances), while also load balancing incoming requests across all of the healthy instances.

Docker automates the deployment of applications in the form of lightweight, portable, self-sufficient containers that can run in a variety of environments. Containers can be populated from pre-built Docker images or from a simple recipe known as a Dockerfile.

Dockerโ€™s container-based model is very flexible. You can, for example, build and test a container locally and then upload it to the AWS Cloud for deployment and scalability. Dockerโ€™s automated deployment model ensures that the runtime environment for your application is always properly installed and configured, regardless of where you decide to host the application.

This way ... you can do whatever you want in the container and that container will run on the kernel provided by the Amazon Linux AMI instance (obviously completely isolated).

like image 132
King'ori Maina Avatar answered Nov 15 '22 05:11

King'ori Maina


I'm also somehow having hard time getting yum to find libsndfile on Amazon Linux AMI (RedHat 7.4). Repositories I've added to yum never seem to contain it. (How to add new repos is described here )

Finally I just downloaded and installed the rpms directly:

wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//libsndfile-1.0.28-alt1.x86_64.rpm
wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//libsndfile-devel-1.0.28-alt1.x86_64.rpm

sudo yum localinstall libsndfile-devel-1.0.28-alt1.x86_64.rpm

This way I got PySoundfile working finally.

like image 36
variable Avatar answered Nov 15 '22 03:11

variable