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:
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:
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:
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.