VLC

Installing from Source (Linux)

Software name : VLC
Homepage : http://www.videolan.org/vlc/
Software version used for this installation : 0.84
Operating System use for this installation : Debian (this process will work on any version of Linux)
Recommended Hardware : 300MHz processor  

Downloading 

First, get the sources. To do this you should visit the VideoLan website (http://www.videolan.org) and download the sources from the website. At the time of writing the URL for downloading VLC source is this:

http://www.videolan.org/vlc/download-sources.html

Make sure you download the sources to somewhere you can access using a terminal ('shell'). If you do not know how to use a terminal then please also read up on this otherwise the following is going to be very difficult to follow. If you know how to use the terminal then copy the sources to the directory you are currently in or change your current working directory to the directory where the sources are.

The sources, once downloaded, will need to be 'unpacked'. This means that they source code has been compressed and needs to be uncompressed. Most Linux applications have their source code compressed in the tar and gzip formats. You can recognise this type of compression if the file you downloaded ends with the suffix:

.tar.gz

In this case the source code I have downloaded is named vlc-0.8.4a.tar.gz

Before I start the installation I need to check the sources are in the same working directory as my terminal. To do this I type ls and I shoudl see something like this in my termial:

ls.jpg

The above is just an example. The information will vary in your window, but it is critical that you see the sources you downloaded in the list of files.

Now we will decompress the files. To do this we need to use the tar application. If your version of Linux doesn't have this then you will need to first download and install it. The best way to find out if it is installed is just to type tar and press return. You should see somehting like this:

tar.jpg 

The above message is actually an error message, but if you see it ignore the message as we only executed the command to check if tar was installed. If tar is installed then type the following:

tar -zxvf vlc-0.8.4a.tar.gz

Make sure you replace vlc-0.8.4a.tar.gz with the name of your sources file. If all is well you will see a lot of information shoot through the terminal which is simply a list of all the uncompressed files. These files are the source code and you will now need to transform the source code into the VLC program. This process is called compiling. However before you compile VLC from the source code you need to configure VLC. This might seem strange, software should be configured after it has been installed right? Well, yes, but also in Linux you can enable or disable many options to be included into the program when you compile it. This process actually changes the software so that it includes or excludes different functional components. This process is also called configuring

Configure

The way you install software on Linux is dependanton the type of Linux you may have. There are many types of Linux and each has its own way of installing software using what is known as a Package Manager. A Package Manager is a system dedicated to downloading and installing software on your computer, usually in an semi-automatic way.

This can be really good if you don't care about the way a software is configured. However in Linux you can change the configuration of a software dramatically in the install process. It is possible, for example, to enable and disable many options in VLC when you prepare the software for installation. Generally speaking, automatic install processes don't always give you so much control over the install options. Notably the Gentoo version of Linux gives you a lot of control. However with Debian, Ubuntu and Redhat you will have a default install with default options turned on and off. Most of the time this will probably be ok. However if you need a 'special' function enabled in a software it is often only available if you enable it during installation, otherwise the functionality you require just simply won't exist.

VLC has a lot of options you can include or exclude when you go through the pre-compiling configure process. The configure process is triggered by the configure command. However this command can also give you feedback so you know what the options are before you actually configure the application. To check the configure options of (almost) any source type the following from within the uncompressed source directory:

./configure --help

This will give you an enormous amount of information in the terminal. Probably the information will flow by faster than you can read it and you will be left with the tail of the data. To control this better, try the following command :

./configure --help | less

This command is actually two commands combined. The less command allows you to control the information flowing past on the screen by the use of the page up and page down buttons on your keyboard. The character in between the two commands is called the pipe and it allows commands to be combined. It might be that you do not have less installed which means that the above is quite useless to you. In this case you can try the following:

./configure --help | more

The more command displays a page of text and then waits for you to press the space bar before showing you the next page. If you don't have any luck with the above two suggestions it might be that you don't have either installed, in which case it is a good idea to install them.

The options displayed, should look (it total) something like this:

Optional Features:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-maintainer-mode  enable make rules and dependencies not useful
                          (and sometimes confusing) to the casual installer
  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors
  --disable-rpath         do not hardcode runtime library paths
  --disable-nls           do not use Native Language Support
  --enable-pth            GNU Pth support (default disabled)
  --enable-st             State Threads (default disabled)
  --enable-hal            Linux HAL services discovery (default enabled)
  --enable-gprof          gprof profiling (default disabled)
  --enable-cprof          cprof profiling (default disabled)
  --enable-mostly-builtin most modules will be built-in (default disabled)
  --enable-optimize-memory      optimize memory usage over performance
  --disable-optimizations disable compiler optimizations (default enabled)
  --disable-altivec       disable AltiVec optimizations (default enabled on PPC)
  --enable-debug          debug mode (default disabled)
  --enable-release        activate extra optimizations (default disabled)
  --enable-sout           Stream output modules (default enabled)
  --enable-shout          libshout output plugin (default disabled)
  --enable-httpd          HTTP daemon (default enabled)
  --enable-vlm            VideoLAN manager (default enabled)
  --enable-gnutls         gnutls TLS/SSL support (default enabled)
  --enable-livedotcom     live.com RTSP input plugin (default disabled)
  --enable-dvdread        dvdread input module (default disabled)
  --enable-dvdnav         dvdnav input module (default enabled)
  --enable-dshow          Win32 DirectShow support (default enabled on Win32)
  --enable-smb            smb input module (default enabled)
  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)
  --enable-v4l            Video4Linux input support (default disabled)
  --enable-pvr            PVR cards access module (default disabled)
  --enable-gnomevfs      GnomeVFS access module (default enabled)
  --enable-libcdio        CD input and control library support (default enabled)
  --enable-cddax          audio CD plugin with CD Text and CD paranoia via libcd
  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)
  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)
  --enable-cdda           audio CD via built-in VCD (default enabled)
  --enable-vcd            built-in VCD (default enabled)
  --enable-dvb            DVB-S/T/C card support (default disabled)
  --enable-screen         Screen capture support (default enabled)
  --enable-ogg            Ogg demux support (default enabled)
  --enable-mkv            Matroska demux support (default enabled)
  --enable-mod            Mod demux support (default enabled)
  --enable-mpc            Mpc demux support (default enabled)
  --enable-mad            libmad module (default enabled)
  --enable-ffmpeg         ffmpeg codec (default enabled)
  --enable-ffmpegaltivec  ffmpegaltivec codec (DO NOT USE)
  --enable-faad           faad codec (default disabled)
  --enable-twolame        twolame codec (default disabled)
  --enable-quicktime      QuickTime module (default enabled on MacOS X)
  --enable-real           Real audio module (default disabled)
  --enable-realrtsp       Real RTSP module (default disabled)
  --enable-a52            A/52 support with liba52 (default enabled)
--enable-dts            DTS Coherent Acoustics support with libdts (default enabled)
  --enable-flac           flac decoder support (default disabled)
  --enable-libmpeg2       libmpeg2 decoder support (default enabled)
  --enable-vorbis         Vorbis decoder support (default enabled)
  --enable-tremor         Tremor decoder support (default disabled)
  --enable-speex          Speex decoder support (default enabled)
  --enable-tarkin         experimental tarkin codec (default disabled)
  --enable-theora         experimental theora codec (default disabled)
  --enable-dirac          experimental dirac codec (default disabled)
  --enable-png            PNG support (default enabled)
  --enable-x264           H264 encoding support with libx264 (default enabled)
  --enable-cmml           CMML support (default enabled)
  --enable-x11            X11 support (default enabled)
  --enable-xvideo         XVideo support (default enabled)
  --enable-glx            X11 OpenGL (GLX) support (default enabled)
  --enable-opengl         OpenGL support (default enabled)
  --enable-sdl            SDL support (default enabled)
  --enable-freetype       freetype support (default enabled)
  --enable-fribidi        fribidi support (default enabled)
  --enable-libxml2        libxml2 support (default enabled)
  --enable-svg            SVG support (default disabled)
  --enable-qte            QT Embedded support (default disabled)
  --enable-hd1000v        HD1000 Video Output module (default enabled on HD1000)
  --enable-directx        Win32 DirectX support (default enabled on Win32)
  --enable-fb             Linux framebuffer support (default enabled on Linux)
  --enable-mga            Linux kernel Matrox support (default disabled)
  --enable-svgalib        SVGAlib support (default disabled)
  --enable-ggi            GGI support (default disabled)
  --enable-glide          Glide (3dfx) support (default disabled)
  --enable-aa             aalib output (default disabled)
  --enable-caca           libcaca output (default disabled)
  --enable-wingdi         Win32 GDI module (default enabled on Win32)
  --enable-oss            Linux OSS /dev/dsp support (enabled on Linux)
  --enable-esd            Esound library support (default disabled)
  --enable-portaudio      Portaudio library support (default disabled)
  --enable-arts           aRts sound server (default disabled)
  --enable-alsa           ALSA sound support for Linux (default enabled)
  --enable-waveout        Win32 waveOut module (default enabled on Win32)
  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)
  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)
  --enable-cyberlink      CyberLink for C++ UPnP stack (default disabled)
  --enable-skins2         Skins2 interface module (experimental)
  --enable-pda            PDA interface needs Gtk2 support (default disabled)
  --enable-wxwidgets      wxWidgets support (default enabled)
  --enable-opie           Qt embedded interface support (default disabled)
  --enable-macosx         MacOS X support (default enabled on MacOS X)
  --enable-qnx            QNX RTOS support (default enabled on QNX RTOS)
  --enable-ncurses        ncurses interface support (default disabled)
  --enable-xosd           xosd interface support (default disabled)
  --enable-visual         visualisation plugin (default enabled)
  --enable-galaktos       OpenGL visualisation plugin (default disabled)
  --enable-goom           goom visualisation plugin (default disabled)
  --enable-slp            SLP service discovery support (default disabled)
  --enable-daap           DAAP shares services discovery support (default enabled)
  --enable-bonjour        Bonjour services discovery (default enabled)
  --enable-lirc           lirc support (default disabled)
  --enable-joystick       joystick control (default enabled)
  --enable-corba          corba interface support (default disabled)
  --enable-loader         build DLL loader for ELF i386 platforms (default disabled)
  --enable-activex        build a vlc-based ActiveX control (default enabled on Win32)
  --enable-mozilla        build a vlc-based Mozilla plugin (default disabled)
  --enable-testsuite      build test modules (default disabled)
  --disable-plugins       make all plugins built-in (default plugins enabled)
  --enable-shared-libvlc  shared libvlc (default disabled EXPERIMENTAL)

These options are very many and very confusing. You will see that many are enabled by default. The main ones to know about are:

--enable-theora         experimental theora codec (default disabled)
--enable-ncurses        ncurses interface support (default disabled)
--enable-mozilla        build a vlc-based Mozilla plugin (default disabled
--enable-v4l            Video4Linux input support (default disabled)
--enable-shout          libshout output plugin (default disabled)

The process of installing from source can be a little experimental. You may find that certain libraries are required that you don't have installed on your computer. For example, the following command will disable ffmpeg, libmpeg2, and skins2.

 ./configure --disable-ffmpeg --disable-libmpeg2 --disable-skins2

The above command should then return alot of information in the terminal and finish with some lines looking like this:

  conf.jpg

Make 

If all is ok then you will need to run the make command and make install. You can do this on one command line in conjunction with the sudo command. sudo gives you the permissions to install software. If you don't have the rights to do this (you get an error or message when using sudo) then you will need to contact your system adminsitrator. If you the system administrator and don't know how to do this then you may need to read up on how to set up sudo or su commands. The following command will compile and install your newly configured VLC:

sudo make;makeinstall;

If, however when you get some errors when installing VLC it is probably due to missing libraries. For example, if the ./configure command gives an error like this: 
configure: error: Missing header file ffmpeg/avcodec.h

This means that a header file is missing. Usually this means you need to install the header files, each version of Linux deals with these seperately and you will need to search online to find the right solution. The best method I have found is to copy the error message into a web search and see what postings exist online which discuss the same error.