Time to write about the Debian packaging system and how to make your Linux experience a lot easier to manage.
For those of you who don’t already know, whenever you use a Linux distribution like Debian/Ubuntu/Red Hat/Fedora/et al., you utilize that version’s package manager to download and install applications. All of the packages stored in their remote repositories are free. I don’t think I’ve ever encountered a “paid package”, and I think the community would deem that an oxymoron.
When you first installed a flavor of Linux onto your computer, there should have been a prompt which asked you to set your sources. These sources concern which remote repository to target for downloading and installing future software packages. Since I’m using a Vanilla version of Debian “Jessie”, I personally use “ftp.debian.org”, and in my experience this has been the most stable. You can browse the list of available sources during installation and choose another if you’d like, or you can perform a quick web search to see what the community recommends.
(Note: You can also perform a system-defined sources optimization with netselect-apt, if you’re using Debian.)
So, how do we actually get these so-called “packages” onto our computer? Well, I’ll tell you:
Open up the Terminal (different window managers have different names for it) and you’ll be presented with a very simple command-line interface. Inside you should see your user name on the upper left followed by a blinking cursor. Type in the words:
“sudo apt-get install <package_name>”
To install the proper package. Substitute the “<package_name>” for the name of the actual package. Since I mentioned installing applications to assist with game development, here are some I’d recommend downloading.
-“blender” (An open-source 3D modeling/animation program. As of version 2.5, has a much-improved user interface.)
-“gimp” (An open-source 2D graphical drawing tool. This is your free version of Photoshop.)
-“inkscape” (An open-source 2D vector-graphic drawing tool. This is your free version of Illustrator.)
-“audacity” (An open-source Audio Recording/Editing utility. Useful for careful editing of new/recorded tracks.)
-“hydrogen” (A very comprehensive drum machine. Allows users to create their own beats using a series of different built-in instruments in tandem with different tempos and time signatures.)
-“qtractor” (A full-fledged Digital Audio Workstation. Works with JACK to record and produce different types of audio.)
-“jackd” (A low-latency audio server. Useful for managing multiple audio sources and/or connecting external peripherals to your machine.)
-“qjackctl” (A GUI frontend for the JACK audio toolkit.)
-“fluidsynth” (A SoundFont processor that enables the user to utilize “.SF2” files in order to create music using virtual instruments. I’ll talk about composing with soundfonts in another article.)
-“zynaddsubfx” (A collection of different software synthesizers with built-in audio effects to compose a wide-range of music.)
-“calf-plugins” (A collection of useful plugins for creating music or adding effects to already existing audio.)
-“ecasound” (A hardware disk recorder. Combined with a virtual or physical keyboard, this software will allow you to record directly to your machine.)
-“seq24” (A loop-based MIDI sequencer. Good for people who like to create series of small loops and blend them together into a much larger composition.)
-“g++” (The GNU C++ Compiler.)
-“CMake” (The CMake build/configuration tool. This will be necessary for compiling/building software source.)
-“eclipse-cdt” (An open-source C++ Integrated Development Environment that is innately extensible. The version of the JAVA runtime it uses is completely open-source as well.)
-“libsdl-dev” (Version 1.2 of the Simple DirectMedia Layer, an abstraction of lower-level multimedia APIs.)
-“libsdl2-dev” (Version 2.0+ of the Simple DirectMedia Layer, which has a more permissive open-source license.)
-“mesa-utils” (Mesa is the Linux implementation of OpenGL. It should already be installed, but, better safe than sorry.)
I may need to update this list later, but these software packages should give you a solid foundation for creating 2D/3D graphics, producing audio/music, and building a game engine to house all of your components/assets. You may notice that some of these packages may have already been installed by default, either during the operating-system’s installation process, or though the installation of other packages. In any case, if you’re curious about how updated your software is, you can always look at the Debian package-repository website and browse.
Note that, more often than not, the Advanced Packaging Tool (the “apt” in “apt-get”) may install additional packages as dependencies for the software you’re using. This is normal. Don’t hesitate to look up those packages on the Debian package website I linked above to understand what they are and their purpose.
(Note that, since I recommended that you install Debian “Jessie”, you’ll want to browse for packages in the “testing” sub-section of the website. “Jessie” is the name of Debian’s testing environment.)
Okay, here’s another use-case for you:
What if… you have a perfectly good Debian installation running, have some stable packages installed, and, suddenly… the developers release a new, better version of that software?
It may take a while for a member of the Debian community to get that new version inside the Debian repositories. So, what’s an eager developer to do?
This is where compiling your applications from source comes in, which is another benefit of being part of the open-source community!
Chances are, you won’t have a pre-compiled binary available to download and immediately use… but! Most of the time, the developers of that software will release the source for your own personal use.
Let’s take Linux MultiMedia Studio (package name “lmms”) as an example.
Linux MultiMedia Studio is a full-featured Digital Audio Workstation on-par with the likes of Apple’s Logic Pro, but with the simple interface of their Garageband audio software. As of the writing of this article, version 1.0.0 has been released (it was previously in beta-testing). Since I’m using the Jessie environment for my Debian installation, I am unable to download it directly to my machine via the “apt-get” utility. However, I can download the 1.0.0 source code and compile it on my own. So, let’s do it!
First, download the source here. (Look for the link that says “Latest Stable Release”, and then download the “tar.gz” file.)
Next, we need to open our file manager and navigate to the “Downloads” folder where we can open and unzip the tarball archive.
Next, checkout this link and make sure you have the following software packages installed. More often than not, they are dependencies for the application, with only a few being optional.
The link also contains a compilation tutorial which is pretty thorough, however, I would recommend making a change during step 4.
Instead of setting your DC_MAKE_INSTALL_PREFIX to “../target”, I would recommend setting it instead to: “/usr/”.
The reason for this is because making that change will force the installer to follow the standard installation path of the majority of software already installed on your system. The benefit from this is that it will make file-system navigation much more intuitive (in case you ever need to make any edits to folders or files).
Once you have compiled and successfully installed LMMS, you can access it through your desktop’s application menu, or by typing “lmms” inside the terminal.
Well, that’s a lot of writing for one post. I hope all of this was helpful. In future articles, I’ll make sure to go over the different parts of the pipeline (graphics, audio, programming) in more detail. As for now, explore the packages you’ve already downloaded and start poking around. Don’t hesitate to drop me a line if you have any questions!
See you next time!