Differences

This shows you the differences between two versions of the page.

Link to this comparison view

app [2015/05/17 11:56]
slackermedia
app [2021/06/03 19:48]
Line 1: Line 1:
-[[{arrowp.png|border:​0;​background:​none;​width:​0;​display:​inline-block;​position:​absolute;​top:​0;​left:​0;​}workflow|]] 
- 
-[[{arrown.png|border:​0;​background:​none;​width:​0;​display:​inline-block;​position:​absolute;​top:​0;​margin-left:​2.5em;​}apps:​audacity|]] 
- 
- 
- 
-====== Application Catalogue ====== 
- 
-One of the most powerful aspects of using open source software is the 
-proliferation of software. There is no comparison in the closed source world 
-because making lots of small, couture, personal applications just doesn'​t pay 
-like big monolithic flagships do. So there can be no practical catalogue of all 
-the useful open source applications;​ there are too many. 
- 
-Your job as an artist new to Linux is to find out which application(s) you like 
-for what task. You need not limit yourself to just one or two per task. It's 
-acceptable to use one application for some task under certain conditions, and 
-another for the same task under a different set of conditions. Conversely, it's 
-also acceptable to use just one or two applications for everything you do. 
-There is no right or wrong way of doing this; the point is not to unravel the 
-puzzle into an intended result, but to use the puzzle pieces to create whatever 
-result suits you best. 
- 
-This is possibly the greatest point of confusion to new Linux users: Linux is 
-whatever you make it. At this point, most computerists have been trained to 
-conform strictly to prescribed workflows using only name-brand tools. Linux is 
-not a social club that you join or a company that you work for, it's an 
-operating system that bends to your will. Explore the tools available to you, 
-try them out until you feel comfortable with them, and then decide which one is 
-for you. 
- 
-===== Evaluating Software Like a Pro ===== 
- 
- 
-If a user has been trained on, for instance, Final Cut Pro and gets a job as, 
-for instance, an Avid editor, the user is as good as a beginner. If a user is a 
-certified genius on Windows, that same user is at primary school level when 
-placed in front of an Apple Mac. A user who can produce amazing animation in 
-Adobe Flash is useless with Toon Boom, and a musician that knows Pro Tools 
-flails helplessly in Cakewalk. 
- 
-Switching to open source solutions is no different. 
- 
-Do not assume that just because you know one closed-source application,​ you can 
-pick up an open source "​equivalent"​ and keep going from where you left off. You 
-will need to go back to the beginning, you'll need to learn about what the 
-application is capable of doing, how it works, what file formats it agrees with 
-and what file formats cause it problems, and so on. 
- 
-It is painful to experience such setbacks. The good news is that while there is 
-a ceiling in closed software, there is none in open source, meaning that even 
-though you are destined to start out a beginner all over again with open source 
-software. Once you have learnt to use it well, then you can continue learning, 
-refining, perfecting, customising,​ and building upon that open foundation that 
-you have established. 
- 
-Open Source has no upper limit. 
- 
-The appropriate steps in evaluating a software for production use are entirely 
-up to you, but you should have a methodology to it. There is no excuse for 
-launching an open source application,​ poking around at it for an hour, and then 
-closing it in frustration with the declaration that it is unfit. Almost no new 
-application (open source or otherwise) is going to fit your current workflow, 
-because your current workflow is designed around specific applications. 
- 
-This is a sample evaluation process: 
- 
- 1. Make a generic, software-independent list of your actual workflow. Ask 
-    yourself what steps actually need to occur with a set of assets, and break 
-    this into several steps. 
- 
- 2. From this generic list, locate potential software that appear to perform 
-    each step. It may be that one monolithic software claims to do everything 
-    you need, or it might be that several applications cover a few items on 
-    your list, creating a pipeline. 
- 
-      + Read the application'​s documentation. This is the key to the 
-        application'​s intended use. The application may, on a superficial 
-        level, resemble something familiar to you, but that does not mean that 
-        the application works the same as the one that is resembles. In fact, 
-        chances are good that it does not. 
- 
-        If you are serious about finding an alternative,​ then the burden is on 
-        you to understand how the software works. You cannot insist upon using 
-        software the wrong way, because that is how you have been trained to 
-        achieve a result, and then close the software and call it confusing, 
-        unintuitive,​ or insufficient. You are not using the software as 
-        intended. Do the research and make sure this is not how you are 
-        evaluating software. 
- 
- 3. Armed with a few potential pipelines, you can now begin to evaluate the 
-    software that claims to solve your problem. 
- 
-      + Read online documentation and tutorials of the software you intend to 
-        use. Get a feel for not just what the software claims to do, but how it 
-        achieves the results. 
- 
- 4. Practise using each application in test environments. 
- 
-    In other words, create a test project with realistic assets typical of what 
-    you would use in your production environment. Use the application that you 
-    are evaluating to create something out of those assets. Remember that you 
-    are a beginner in this environment,​ so the end result probably will not be 
-    as technically complex as something you would create in the environment you 
-    usually use. 
- 
-    This will be frustrating to you. Count on that. It's difficult, as a 
-    skilled craftsperson,​ to do something familiar to you, but with one hand 
-    metaphorically tied behind your back. However, you can also use this as an 
-    artistic exercise; take this opportunity to stop relying on the tools of 
-    your trade, and get back to experimentation and raw creativity. You might 
-    find it surprisingly refreshing. 
- 
-      + When you encounter problems, post questions online for the software'​s 
-        author or support team. Usually, a software will have a forum or bug 
-        report link on its homepage; use it. For commercial software, you 
-        probably either had or still have resources for support; find the same 
-        resource for your open source tools. 
- 
-        You will have to look in different places than the sites you are 
-        already familiar with; you will not be able to get help with open 
-        source software on sites that cater exclusively to restricted software, 
-        and you won't find quality help on open source software on sites that 
-        cater primarily to restricted software. Go straight to the source, or 
-        email Slackermedia. 
- 
-      + Don't be afraid to customise. As you learn, you may well find shortcuts 
-        or preference tweaks that make an application more comfortable for you. 
-        That's part of the power of open source, so use them! Customise 
-        applications,​ tweak the interface, change the keymaps. Do whatever you 
-        please. As long as you save the configuration files (written as 
-        invisible files in your home directory), you can carry your changes 
-        around with you from computer to computer (many applications can 
-        dynamically change where they look for config files, but if not then 
-        you can just install your config files and the applications will 
-        adapt). 
- 
-        Sometimes, new users are hesitant to do this for fear of learning an 
-        application "​wrong"​. In practise, if you find yourself using an 
-        un-customised version of some application,​ the brain tends to switch 
-        over to its lowest-common usability settings; your work might be slower 
-        without your own configuration,​ but you will be far from helpless. 
-        Unless you have no standard operating environment,​ it's best to 
-        customise an application for efficiency. 
- 
-      + Adapt, or do not adapt. In a perfect world, you would not have to adapt 
-        to anything new. The reality of computing is that you do adapt. You 
-        adapted, whether you knew it or not, to closed source software when you 
-        chose to do everything in the way it makes you do things (in other 
-        words, you used its file formats, ingested media, dealt with licensing, 
-        exported to finals, and so on, in the way that closed source software 
-        told you). Since many people learnt well-promoted and -marketed closed 
-        source software first, it does not feel like you are adapting to 
-        something, because you are instantiating habits and workflows that 
-        simply did not exist previously. 
- 
-        If an open source application is not working, try adapting a little. If 
-        you need to change file formats, or ingest media in a different way 
-        than what you think is obvious, or do different steps of your workflow 
-        in a different order, be willing to mix things up. Don't sacrifice 
-        quality, but do recognise that most of your habits have been built 
-        entirely upon one specific set of tools. Don't be too stubbort to 
-        recognise that there are more than one way of accomplishing something. 
- 
- 5. Once you have learned a software sufficiently to be critical of its 
-    results, decide whether or not it will work for you. If not, move to the 
-    next candidate. 
- 
- 6. If the software will work for you, then the next perpetual task is to 
-    practise. You did not learn all that you know about closed source software 
-    in a day or even a year. Switching to something entirely new and different 
-    is going to take practise. 
- 
-Installing the Applications 
- 
-As you have learned from 
- 
-Chapter 2.  Understanding How Applications are Managed 
- 
-Table of Contents 
- 
-Slackware Packages 
-The pkgtool, installpkg, and removepkg Utilities 
-Slackware Packages and slackpkg 
-Finding Additional Slackware Packages 
-sport 
- 
-Before you begin to build your multimedia system, it's important to understand 
-how software is installed, uninstalled,​ and upgraded on a Slackware system. 
-Generically,​ this is referred to as "​package management"​. 
- 
-GNU Linux systems have become known for having a progressive and unique method 
-of installing software, referred usually as the "​repository"​ or "​package 
-management"​ systems. Red Hat Linux introduced this idea when they created, 
-essentially,​ a database to keep track of all software installed on the 
-computer. This database could then be automatically checked to see if newer 
-versions of the software existed on a remote server, and in the event that a 
-newer version was released then the user's local computer could be updated. 
-Other distributions have since either re-invented this methodology or adapted 
-it, or they use it directly. There are a few notable exceptions, one of which 
-is Slackware. 
- 
-Slackware, for all practical purposes, has four primary methods of managing the 
-software installed on a system: 
- 
- 1. pkgtool and related tools like installpkg and removepkg, slackpkg, and  
-    rpm2tgz 
- 
- 2. Slackbuilds 
- 
- 3. Source code and makepkg (technically a part of the pkgtool set, but most 
-    useful for compiling source code) 
- 
- 4. Statically linked binaries or custom packages 
- 
-Each of these offers a variety of choices for how a user manages the software 
-on a computer; none of them impose update schedules, automatic dependency 
-installation and removal, or demand a complex system of database calls be 
-learned. 
- 
-Slackware Packages 
- 
-The basic pkgtool suite is designed to help the user install, upgrade, and 
-remove pre-built Slackware packages. 
- 
-Slackware packages are ordinary compressed tar files. They contain, quite 
-simply, a collection of pre-built files that have been archived; they generally 
-have the file extension .tgz, .tbz, or .txz, although not all .tgz, .tbz, or 
-.txz are necessarily Slackware packages. 
- 
-Those that are Slackware packages contain, generally speaking, these files: 
- 
-  * slack-desc 
- 
-    A description of the application this package will install. 
- 
-  * doinst.sh 
- 
-    A shell script doing post-install tasks, like adding support in one program 
-    for the application just installed. 
- 
-  * /usr, /usr/share, and similar 
- 
-    The folders into which the executable application itself exists and from 
-    which it will be copied out into the rest of the system. 
- 
-A traditional package, therefore, is a mimicry of your Linux system; it 
-contains a few descriptive files or scripts to do a few specialized tasks, but 
-mainly it is simply an isolated /usr, /etc, and whatever else is required for 
-the application to run, with all the compiled files in place. 
- 
-The install process is to take all of these files and to superimpose them over 
-your existing Linux system. In other words, you could literally go through each 
-file in the package and copy it over to the corresponding folder on your 
-computer; ie, cp package/​usr/​bin/​foo /​usr/​bin/​foo and so on. Once the files are 
-copied from the package to your larger system, the application can be run on 
-your computer. 
- 
-This would be tedious and impossible to track and therefore difficult to 
-reverse, so it would be smarter to have a shell script do it for you. The 
-scripts included on Slackware for these and related tasks are: 
- 
-  * installpkg 
- 
-  * removepkg 
- 
-  * pkgtool 
- 
-The pkgtool, installpkg, and removepkg Utilities 
- 
-installpkg is a simple front-end to the process of decompressing,​ copying files 
-from, and keeping a record of a Slackware package. 
- 
-    $ su -c '​installpkg 
-        /​media/​cdrom/​extra/​foo/​foo-*.txz'​ 
-  ​ 
- 
-Once a package is installed, all of the files that have been placed on your 
-system are recorded in /​var/​log/​packages. Using this information,​ two other 
-scripts can upgrade packages, or remove packages. 
- 
-  $ su -c '​upgradepkg 
-  /​var/​log/​packages/​foo-version.txz foo-newVersion.txz'​ 
-  $ su -c '​removepkg 
-  /​var/​log/​packages/​foo-version.txz'​ 
- 
-Tip 
- 
-To see exactly what is going to be installed before installing it, you can use 
-the pkgtool command, which provides a menu, including the option to view a list 
-of all the files in the Slackware package. 
- 
-Most of these commands can be done with pkgtool. pkgtool is an empty shell that 
-looks for Slackware packages in any directory defined by the user. Pkgtool is 
-able to install a package, remove a package that has once been installed, and 
-even upgrade packages. It is a graphical tool that runs in the terminal, so its 
-use is fairly self-explanatory;​ simply choose whether you want to install 
-packages from a directory, remove packages, or view a list of installed files 
-associated with a package. Since Slackware itself uses Slackware packages to 
-install itself in the first place, you can also run the initial install scripts 
-again, including the font cache, lilo config, choose a default window manager, 
-and more. 
- 
-Slackware Packages and slackpkg 
- 
-The first Slackware packages you'll deal with are the ones installed onto your 
-system during the normal installation process. You probably won't interact with 
-these directly, but they are always available for reinstallation,​ either from 
-your install media or via the internet. 
- 
-Aside from the default packages installed with a full install, there is an / 
-extra directory containing additional packages. To install them from the 
-install DVD, use installpkg: 
- 
-  # installpkg /​dev/​cdrom/​extra/​foo-0.1.tgz 
- 
- 
-If you don't have the install media, then of course all of this is possible 
-from the internet. 
- 
-To install a package from the internet, you could download the .tgz file from a 
-Slackware mirror and then use installpkg or pkgtool, but there is a simple 
-shell script that can make the process easier, called slackpkg. 
- 
-To configure slackpkg so that it knows where online to look for packages, open 
-/​etc/​slackpkg/​mirrors (a text file) as root and find the mirror that is 
-associated with your Slackware version and that is geographically close to you, 
-and uncomment it. This list of mirrors offers ftp and http access, but you must 
-uncomment only one. 
- 
-Note 
- 
-In terms of slackpkg, there is no functional difference between ftp and http. 
-If you use a network that restricts, for instance, ftp traffic, then http would 
-have the obvious advantage for you. 
- 
-Using slackpkg is simple and much like using tools like yum or aptitude. You 
-should update your list of available packages by issuing the initial command ​ 
-slackpkg update and from that point on, the repository can be searched by using 
-the command slackpkg search foobar as root, and an application can be installed 
-with slackpkg install foo. As usual, reading the manual page for slackpkg will 
-reveal a full listing of associated commands. 
- 
-Once a package has been installed with slackpkg, it can be removed or upgraded 
-using pkgtool and the other package management commands. 
- 
-Since a full install of Slackware contains nearly everything that slackpkg has 
-access to anyway, the most common use for slackpkg in Slackermedia will be for 
-security updates. You should perform a periodic update of slackpkg followed by 
- 
-  $ slackpkg upgrade-all 
- 
-Look through the list of available updates, and update as you see fit. Only 
-essential security updates are distributed via slackpkg, so even in-production 
-machines are safe to patch. 
- 
-Finding Additional Slackware Packages 
- 
-If you installed the full Slackware install base, then the only additional 
-packages that slackpkg provides are applications found in the /extra and / 
-testing directories (also available on your install disc). Aside from these 
-directories,​ everything else on the server or disc has been installed on your 
-system. 
- 
-Distributors of Slack Packages 
- 
-Slackware packages can be found elsewhere online, but you should make sure you 
-trust the source of those packages, just as you would when considering 
-installing applications on any other operating system. 
- 
-A few reliable places with good reputations:​ 
- 
-Recommended Slack Package Distributors 
- 
-AlienBob 
- 
-    slackware.com/​~alien/​slackbuilds is a repository of useful applications,​ 
-    including Scribus, the OpenJDK Java dev kit and runtime, the Chromium web 
-    browser, and the Opus audio codec. Not all of the applications he offers 
-    are always terribly up-to-date, and some are, so take that into 
-    consideration before deciding what you want to install from this server. 
- 
-    slackware.org.uk/​people/​alien/​restricted_slackbuilds is a repository of 
-    useful applications that include codecs or code that cannot be distributed 
-    on USA-based servers. Most notably this includes VLC and HandBrake. Not all 
-    of the applications he offers are up-to-date, and some are, so take that 
-    into consideration before deciding what you want to install from this 
-    server. 
- 
-Slacky.eu 
- 
-    slacky.eu is a long-standing and vibrant community of Slackware users in 
-    Italy. The site has both 32-bit and 64-bit repositories with useful 
-    software spanning all categories. 
- 
-    Not all of the applications offered here are up-to-date, and some are, so 
-    take that into consideration before deciding what you want to install from 
-    this server. 
- 
-Slackermedia 
- 
-    slackermedia.info/​slackbuilds offers useful (and some not-so-useful) 
-    packages, including JSampler, butt audio streamer, and most importantly the 
-    Slackermedia-approved,​ everything-plus-the-kitchen-sink compile of ffmpeg. 
- 
-    Not everything is always up-to-date, but they are the versions of software 
-    that the author of Slackermedia is using. 
- 
-Studioware 
- 
-    studioware.org/​packages is full of current builds of all kinds of 
-    multimedia tools. There are a wealth of new production toys to be 
-    discovered here, so it will probably take you a few days to explore and 
-    test what you find. 
- 
-    Not all of the applications offered here are up-to-date, and some are, so 
-    take that into consideration before deciding what you want to install from 
-    this server. 
- 
-rpm2tgz 
- 
-A useful command that can be used in conjunction with pkgtool is rpm2tgz, which 
-converts a pre-built package for Red Hat or Fedora Linux into a slackpkg (ie, a 
-.tgz file) that can then be installed via pkgtool. This is similar to finding a 
-pre-built .tgz on any given software'​s download page, except that rpm files are 
-ubiquitous to Linux package formats and the likelihood of finding a .rpm file 
-often exceeds the likelihood of happening across a Slackware package. 
- 
-Once you've downloaded the .rpm file, use rpm2tgz to convert it: 
- 
-  # rpm2tgz foobar-x.x.xx.rpm 
- 
-The result is a .tgz file, so after the conversion is finished the original 
-.rpm can be discarded and pkgtool can be used to install the .tgz file. You 
-will need to ensure that the computer contains the dependency code for the 
-application to function; this means that you might need to install other 
-software before installing the application you really want to install. For 
-instance, the Red Hat documentation tool publican offers an .rpm, but in order 
-to install it there are about twenty perl modules that must be installed first. 
- 
-Warning 
- 
-The user should also trust the source of the package such that they can be sure 
-there is no broken, disabled, or malicious code present. 
- 
-Source Code 
- 
-Slackware users often prefer to compile the software they install themselves; 
-that is, they take the raw text files containing the application'​s raw code and 
-process it through the GNU gcc compiler, and then move the executable result of 
-this process into their system. This has a wide variety of advantages: 
- 
-  * It allows the user to control where the executable binary (the application) 
-    is installed. 
- 
-  * It allows the user to enable or disable features of the application before 
-    the application is built. 
- 
-  * It allows the user to optimize the application for a specific processor. 
- 
-  * It allows the user to review the code that goes into the building of an 
-    application should the user wish to do so. 
- 
-  * It allows the user to change the code that goes into the building of an 
-    application should the user wish to do so. 
- 
-  * It ensures the availability of applications to all users on any GNU, Linux, 
-    or unix-like system; source code is universal in that if an application was 
-    written for a GNU Linux system then it will compile and run on any GNU 
-    Linux system regardless of distribution. 
- 
-The general process of compiling is in theory simple. Obtaining it is much like 
-obtaining any downloadable software; you go to a website or a code management 
-site (like Sourceforge or Github) and download the source code of an 
-application. Typically, free software is available in both a work-in-progress 
-("​current"​ or "​nightly"​) form as well as a packaged "​stable"​ release version. 
-Slackermedia reccommends,​ with few exceptions, downloading the stable version, 
-which indicates that the code has been tested to some degree and that the 
-programmers of the application feel confident enough in the code to package it 
-into a .zip or .tar.gz or .tar.bz2 archive, give it an official number and 
-sometimes a release name, and offer it for download to the general 
-non-programmer public. 
- 
-Once the code has been downloaded, it is uncompressed,​ and a series of two or 
-three commands are issued which starts GNU gcc, which compiles the code and 
-then sends the binaries into the system (viz. it is "​installed"​). 
- 
-How to Compile Software from Source 
- 
-Before you compile from source code, you should ask yourself why you are 
-compiling from source code. The acceptable reasons are: 
- 
-  * You cannot find an existing Slack package or Slackbuild script for the 
-    application you are about to compile. There are also no .rpm versions 
-    available, or if there are, they do not install or work as required. 
- 
-  * You need new features found only in a fresh release. You have tried to 
-    modify an existing Slackbuild script but it fails to compile the software 
-    for you, so you want to give it a go yourself. 
- 
-    This can be difficult, because usually if an existing buildscript has been 
-    broken by a new release, then the code has either changed so drastically or 
-    else it (or its build system) are broken, and serious hacking will be 
-    required. Still, it's free to try. 
- 
-  * You just want to build from source code. 
- 
-There is not just one way to compile software. There is the "​usual"​ way 
-(meaning the one that you see most often), but any programmer may choose a 
-different method to manage how their software is compiled. The compilation 
-itself is usually performed by the GNU C Compiler (gcc). The way that gcc knows 
-what steps to take during the compile is with a Makefile, or some configuration 
-list; that is, a document written in a syntax specific to the compiler, which 
-informs the compiler what procedures and where to find supportive code to use 
-while building the application. It may contain pointers to other code that is 
-expected to already exists on the user's system, or to other parts of code 
-within that application'​s project, and it may contain special instructions for 
-installing the software after it has been built as well as instructions on how 
-to uninstall that application should the user decide it is no longer needed. 
- 
-Note 
- 
-The source code downloaded may or may not include all of the code it actually 
-requires to compile and run. If, for example, Developer Foo has developed code 
-for a graphics application that requires heavily on Developer Bar's opus codec, 
-a set of code that enables the computer to handle a particular audio format, 
-then Developer Foo is obviously not going to distribute libopus along with the 
-application'​s code, because libopus is maintained by Developer Bar. It is up 
-the user, therefore, to read the README file (or similar) packaged along with 
-Developer Foo's application and find out what other code is required to be 
-present on the computer for Application Foo to work (this is called "​dependency 
-resolution"​) and what build system the project uses, and what steps must be 
-followed for the code to compile as expected. 
- 
-The general steps in compiling code, abstracted away from any specific build 
-system, are: 
- 
- 1. Prepare the build scripts for the exact configuration of your system. 
- 
- 2. Start the compiler to build the code, and then link that code to libraries 
-    it needs in order to run. 
- 
- 3. Copy the new files to places that your operating system expects to find 
-    them. Icons are moved to the system icon directory, documentation to the 
-    system doc location, libraries to the system library path, executables to 
-    one of the system'​s application directories,​ and launchers to the system 
-    launcher location. 
- 
-Things can go wrong, of course, so here are common problems that arise in even 
-a simple build. 
- 
-Common Compilation Problems 
- 
-configure, cmake, etc. 
- 
-    By far the most common problem during the configuration step are missing 
-    libraries. If an application requires libfoo to compile (because the 
-    developer has borrowed some code from libfoo, so counts on that library 
-    being on your computer), and it cannot find it, then it is the job of the 
-    configuration script to alert you. 
- 
-    The solution is to install the missing libraries, and then run the make 
-    command again. If there is a make clean command, run it first to clear out 
-    any progress prior to the error. 
- 
-    Another potential solution is to look at configuration options (usually 
-    done by adding a --help flag to the configure command) to see if the 
-    missing library is indeed absolutely necessary. Sometimes it is possible to 
-    build without a library by using a flag like --without-libfoo or similar. 
-    Of course, you would not want to do this arbitrarily;​ usually the correct 
-    solution is to install the missing library. 
- 
-make, build 
- 
-    A problem during the actual compiling of code can mean that either the 
-    configuration step made an error, or that there is an error in the code 
-    itself. 
- 
-    If the configuration step made an error, then the compiler is likely 
-    looking in the wrong location for libraries that it needs. This can usually 
-    be solved by either manually correcting configuration files, or by 
-    overriding configuration files with environment variables. Unless the 
-    compiler error tells you what to look for, or you can debug the code 
-    yourself, your best chance of fixing such a problem would be to do an 
-    internet search on the error. 
- 
-    If there is a bug in the code that is preventing it from compiling, you can 
-    either fix it (if you are a skilled programmer) or you can do an internet 
-    search on the error to see if anyone else has encountered and fixed the 
-    problem. 
- 
-make install, install 
- 
-    This step rarely fails, since all it should be doing is copying files to 
-    your system. If it does fail, it is probably because you do not have 
-    permission to write files to system folders. Re-try the command with root 
-    privileges. 
- 
-The problem with compiling and installing source code in this traditional way 
-is that tracking what you have installed is nearly impossible. Any given 
-application might install several libraries, icons, sets of documentation,​ and 
-binary executables. This makes it extremely difficult to accurately and safely 
-update components of your system when, for instance, an application requires 
-you to update multiple libraries which in turn are being used by other 
-applications which may be effected by the update, and so on. 
- 
-For this reason, Slackware has a built-in method of wrapping up a compiled 
-application as a custom-made Slack package: makepkg. 
- 
-Makepkg 
- 
-To use makepkg, you do need to understand what build system the developer is 
-using so that you can redirect the install process (usually the final step, 
-after the code has been compiled) to a directory of your choosing, rather than 
-to the root of your system. Run makepkg on that directory, and you have a Slack 
-package. 
- 
-Here is an overview of common ways of defining a new installation directory: 
- 
-Makepkg Interceptors 
- 
-Autotools 
- 
-    Autotools is a collection of tools within the GNU build tools. Being the 
-    original freely-available build system in the world, it is by far the most 
-    common. 
- 
-    To redirect an install, you run the usual commands, with one small addition 
-    to the install command. Therefore the first two steps are the same as 
-    always: 
- 
-                $ ./configure 
-                $ make 
- 
- 
-    The final step intercepts the default install path and forces automake to 
-    treat a DESTDIR of your choosing as if it were the root of your filesystem: 
- 
-                $ mkdir /​tmp/​pkg-foo 
-                ; make install DESTDIR=/​tmp/​pkg-foo 
- 
- 
-    Move into the DESTDIR and use makepkg to create your Slack package: 
- 
-                $ cd 
-                /​tmp/​pkg-foo 
-                $ makepkg -l y -c n 
-                /​tmp//​foo-version-$(uname -m)_SMi.tgz 
- 
- 
-    You can store this Slack package somewhere for later use or for 
-    re-distribution,​ and of course you can install it with installpkg. 
- 
-Cmake 
- 
-    Cmake is a build system that features a rich interactive GUI and a highly 
-    customisable build environment. In practise, the difference between Cmake 
-    and Automake is in the configuration step, so in practise using makepkg 
-    with it is the essentially the same as with Autotools. 
- 
-    The first two steps are the usual cmake commands: 
- 
-                $ mkdir build ; cd build 
-              ; cmake .. 
-                $ make 
- 
- 
-    The final step intercepts the default install path and forces automake to 
-    treat a DESTDIR of your choosing as if it were the root of your filesystem: 
- 
-                $ mkdir /​tmp/​pkg-foo 
-                ; make install DESTDIR=/​tmp/​pkg-foo 
- 
- 
-    Move into the DESTDIR and use makepkg to create your Slack package: 
- 
-                $ cd 
-                /​tmp/​pkg-foo 
-                $ makepkg -l y -c n 
-                /​tmp//​foo-version-$(uname -m)_SMi.tgz 
- 
- 
-    You can store this Slack package somewhere for later use or for 
-    re-distribution,​ and of course you can install it with installpkg. 
- 
-Python Distutils 
- 
-    Distutils is the default method for installing Python applications,​ since 
-    it is the distribution tool that ships with Python itself. Generally, it 
-    places all configuration and installation actions in a setup.py file. It 
-    is, however, highly customisable,​ so be sure to read any docutmentation 
-    about installation that the developer of the code provides. 
- 
-    To re-direct the destination of the installable files, use the --root flag 
-    when launching the setup script. 
- 
-                $ python setup.py install 
-                --root=/​tmp/​pkg-foo 
- 
- 
-    Move into the DESTDIR and use makepkg to create your Slack package: 
- 
-                $ cd 
-                /​tmp/​pkg-foo 
-                $ makepkg -l y -c n 
-                /​tmp//​foo-version-$(uname -m)_SMi.tgz 
- 
- 
-    You can store this Slack package somewhere for later use or for 
-    re-distribution,​ and of course you can install it with installpkg. 
- 
-There are many more build systems out there, and there is even the remote 
-possibility that entirely custom install commands or no install commands could 
-turn up. In the event of non-standard build systems, you have several options. 
-You can read the documentation included with the code and attempt a build. If 
-you can't figure out how to redirect the install process, you can choose to 
-install without creating a Slack package; theoretically,​ that will be harder to 
-uninstall or update, but it might be a trade-off worth making, depending on the 
-application and how badly you want it. Finally, you can contact Slackermedia 
-for assistance; we may be able to build a package for you (generally, this can 
-be done for free, although if it is critical that a package is created 
-promptly, or if the package proves difficult to build even for us, then we 
-might have to provide you with a price quote in order to get the job done to 
-your specifications). 
- 
-The good news is that many applications already have scripts that configure, 
-compile, and create a Slack package for you. These are called Slackbuilds 
-(because they are simply scripts that you run in order to automate the steps of 
-compiling). The SlackBuild system allows you to get the best of both of worlds: 
-the ability to compile from raw source code and transparently take the 
-intermediate step of creating a Slackware Package that will be logged in /var/ 
-log/​packages along with everything else installed on your system, but without 
-doing any of the leg work. Slackbuild scripts are published in many places, but 
-the largest repository of them is slackbuilds.org. 
- 
-SlackBuilds 
- 
-One of the hallmarks of Slackware is its SlackBuild system, a powerful yet 
-easy-to-understand and easy-to-learn method of scripting how an application is 
-built. The SlackBuild system enables the user to script exactly how 
-applications are compiled so that the same SlackBuild can be used on a variety 
-of computers (useful in a production studio) or from computer to computer after 
-a major system upgrade has been performed. SlackBuilds result in .tgz files as 
-well, so managing the applications after they have been compiled is as easy as 
-using pkgtool. 
- 
-This essentially combines the best of both worlds: it allows the user to 
-compile from source code and to enable all the options required for the 
-application to work best for the user, but also feels like a pre-built package 
-since it requires very little interaction from the user in order to be 
-installed. 
- 
-Note 
- 
-There is a unixy beauty to this system in that there is really nothing 
-distribution-specific to it, and nothing redundant about it. It consists simply 
-of a shell script which can be easily hosted on minimal storage, quickly 
-downloaded, and used by anyone. Consider for a moment .deb or .rpm files, which 
-in their most popular and common forms literally contain compiled code of the 
-software it intends to install. This means that the source code itself is 
-hosted on the appliction'​s homepage, it is possibly then modified by the .deb 
-or .rpm maintainer, so that the application is now stored in at least two 
-separate locations (its source homepage and the repository containing its .deb 
-or .rpm), it can be a hefty download, compiled without any involvement from the 
-user, and installed without any involvment from the user. Such complexity is 
-un-unix-like,​ but fortunately Slackware doesn'​t use this method, using instead 
-build scripts that are clean and efficient. 
- 
-This system was so powerful that, for Slackware 11.0, a group of Slackware 
-users decided to establish a community around it, which can be found at 
-SlackBuilds.org. An advantage to slackbuilds.org is that hundreds of 
-applications have had scripts built for them, which are all fully editable by 
-the individual user so that the compiling options are exactly the way the user 
-wants them. Each user can then either maintain their private repository of 
-customized SlackBuilds or simply continue to use the Slackbuilds.org versions. 
-All of the scripts are reviewed and tested by the Slackbuilds.org 
-administrators but can also be reviewed in advance by the user for security and 
-functionality. 
- 
-To use a Slackbuild: 
- 
- 1. Open a web browser 
- 
- 2. Search for, or navigate to, the tarball of the SlackBuild files and 
-    download it. 
- 
- 3. On your local machine, navigate to the downloaded file and untar it. 
- 
-          tar -xzvf foo-sbo.tar.gz 
- 
- 
- 4. Read the README and .info files to confirm that you have all the 
-    dependencies installed. If you do not, repeat these steps for each 
-    dependency, and install each in the order they are required. 
- 
- 5. Download the source code. A Slackbuild script is just that: a script. It 
-    does not contain the source code for the application. The source code must 
-    be downloaded from the source code's website. 
- 
-    If there is a stable version of the source code that is more recent than 
-    what the Slackbuild was written for, you may change the $VERSION setting in 
-    the Slackbuild script to match the new version number. 
- 
- 6. Move the source code tarball into the SlackBuild directory 
- 
-          mv foo-src.tar.gz foo-sbo/ 
- 
- 
- 7. Change directory into the SlackBuild directory. 
- 
- 8. Make the SlackBuild script to be executable. 
- 
-          chmod +x foo.SlackBuild 
- 
- 
- 9. Run the SlackBuild, as root. 
- 
-          su -c '​./​foo.SlackBuild'​ 
- 
- 
-10. Install the resulting package. 
- 
-          su -c '​installpkg /​tmp/​foo_sbo.tgz'​ 
- 
- 
-Introduction to sbopkg 
- 
-Prior to the release of Slackware 12.1, a frontend to Slackbuilds.org called ​ 
-sbopkg was released. Sbopkg is a command-line and dialog-based tool to mirror 
-the SlackBuilds.org repository and to operate on the local copy or to operate 
-on a user's own repository of SlackBuild scripts. Sbopkg allows the user to 
-browse the local copy, read associated ChangeLogs, view pertinent README files, 
-read and modify the SlackBuild script itself, the .info file, and the 
-slack-desc files. Sbopkg also allows the user to select packages to build and 
-it will download the source code for the user, check the md5sum, and build a 
-Slackware package. It will also optionally install the package onto the system. 
- 
-Sbopkg does not check or resolve dependencies. It does not automatically 
-install packages. It does not track what has been installed. In other words, 
-this is in no way apt-get or rpm for Slackware; it is a local front-end for 
-Slackbuilds.org and does not duplicate or overlap the function of pkgtool or 
-the responsibilities of the user as the primary manager of the system. 
- 
-To obtain sbopkg, visit sbopkg.org and download the Slackware package. Then, 
-open a terminal and use either pkgtool or installpkg: 
- 
-$ su -c '​installpkg sbopkg-VERSION-noarch_1-cng.tgz'​ 
- 
-Among the files installed along with sbopkg, there is /​etc/​sbopkg/​sbopkg.conf,​ 
-which contains all pertinent configuration options for sbopkg. It is safe to 
-use the default settings. To start sbopkg, launch it as root by typing su -lc 
-sbopkg (The -l is to obtain the root environment some packages require). 
- 
-Upon first launch, sbopkg creates, as defined in the sbopkg.conf file, a local 
-copy of the scripts available from slackbuilds.org in /​var/​lib/​sbopkg/​SBo/​x 
-(where x is the latest stable release of Slackware), a log in /​var/​log/​sbopkg,​ 
-a queue directory in /​var/​sbopkg/​queues,​ a cache in /​var/​cache/​sbopkg,​ and a 
-local tmp directory called /​tmp/​sbopkg. 
- 
-After sbopkg has launched, the user is delivered to an ncurses interface; use 
-the Up and Down arrow keys to navigate through the main menu, Return to make a 
-selection, and the Right and Left arrow keys to select which button on the 
-bottom of the menu (OK, Cancel, Back, etc) the Return key activates. 
- 
-The first step with sbopkg is to sync with the remote server; this is the top 
-selection in the sbopkg main menu. This copies all available scripts from 
-SlackBuilds.org and saves them into directories corresponding with the 
-categories defined by SlackBuilds.org (academic, accessibility,​ audio, etc). 
-This allows the user to browse the mirrored repository in sbopkg whether or not 
-the user is online, and also modify the scripts before using them to install 
-software. 
- 
-After the initial rsync, the user can view the SlackBuilds.org ChangeLog, which 
-documents the most recent updates applied to the SlackBuild repository, whether 
-these are bug fixes in the scripts or updated packages. A user may also 
-subscribe to the SlackBuild user mailing list at http://​lists.slackbuilds.org/​ 
-mailman/​listinfo/​slackbuilds-users. 
- 
-A list of all SlackBuild packages installed on the user's system may be viewed 
-via the Packages menu selection, which looks at /​var/​log/​sbopkg and displays 
-the packages installed whose tags match the currently active repo's tags (by 
-default, _SBo). Similarly, selecting the Update menu item will compare 
-installed packages to those available in the local mirror and identify any 
-packages that have updates available. 
- 
-Finding a package to install is done with the Browse menu selection, or the  
-Search selection. Browse takes the user to a list of top-level categories as 
-defined by SlackBuilds.org;​ use the Return key to select a category and browse 
-through the packages. Hitting Return again will display the details about a 
-package, such as the README file, the SlackBuild script itself, and more. To go 
-back in the list of packages or to the list of categories, use the Right arrow 
-to select the Back button on the bottom row of sbopkg'​s interface, and press  
-Return or type Alt+B. The convention of using the Up and Down arrow keys (or 
-accelerators) for the top menu of sbopkg and the Right and Left arrows (or Alt+ 
-accelerator) for the bottom row is used throughout sbopkg, except in textbox 
-dialogs where the arrows scroll the text. 
- 
-The search function in sbopkg works as would be expected: hit Return on Search 
-to be taken to a pop-up search field, type in the term you are searching for 
-(it is case-insensitive) and hit Return again. Sbopkg returns all packages 
-matching the search term; i.e., if a search is performed for the term "​ink"​ 
-then sbopkg will return "​link-grammar",​ "​inkscape",​ "​libnfnetlink",​ "​elinks",​ 
-"​wink",​ etc. Common bash wildcard characters are also supported, such that a 
-search for "?​ink*"​ returns the same list minus "​inkscape"​ which has no 
-character prior to "​ink"​. 
- 
-Building and Installing Software with Sbopkg 
- 
-Sbopkg can build and install software. These are two separate processes. If you 
-elect to only build software, the resulting Slackware package (.tgz file) is 
-left in /tmp by default. This location is controlled by the OUTPUT variable in 
-the config file. It can then be installed via pkgtool or installpkg, or taken 
-to other machines of the same architecture and installed on those, or simply 
-stored for later use. Alternatively,​ sbopkg can be set to install the software 
-after it has been compiled. 
- 
-Building and/or installing can be done from different places; the Build item is 
-the final menu item on each individual package menu of unbuilt packages, and it 
-is invoked with the Process Queue item in the Queue sub-menus. Sbopkg will 
-prompt the user to perform only a build of the software or a build-and-install. 
-Slackermedia recommends build-and-install for single or small groups of users 
-in which compile time is not an issue; for building larger install bases, it 
-may be more efficient to build once and install the resulting binary rather 
-than having each computer compile it individually. 
- 
-To build or install a package via sbopkg, the first step should always be to 
-view the README file. This displays a brief description of the application 
-about to be installed, any options that may be passed to the SlackBuild, and 
-any applications upon which the application depends (required dependencies can 
-always be found on SlackBuilds.org). Sbopkg does not automatically resolve 
-dependencies so it is up to the user to ensure that all listed dependencies are 
-installed on the system before proceeding. READMEs can be viewed from various 
-places, including selecting Queue ? Process ? View READMEs when using the 
-dialog interface or using the -R flag from the command line. 
- 
-Assuming, for the purpose of this example, that there are no dependencies,​ the 
-next step might be to view the .info file, which is a SlackBuilds.org-specific 
-file of metadata which lists the canonical program name, the version for which 
-the SlackBuild script was written, the project'​s homepage, the exact link where 
-the source code for the program can be downloaded, the md5sum of that 
-downloadable package, the SlackBuild script'​s maintainer'​s name and email, and 
-the SlackBuilds.org administrator who approved the script. 
- 
-Next, the SlackBuild script itself can be reviewed. Although all SlackBuild 
-scripts have been reviewed and tested by SlackBuild maintainers,​ it is a good 
-idea to review the script, both for security purposes as well as to ensure that 
-the application is going to be installed the way the user thinks it's going to 
-be installed. There are some scripts that feature options that the user can 
-take advantage of (like turning off or on codec or plugin support), while other 
-scripts simply help elucidate optional components that the application will use 
-if available but that are not dependencies themselves. Other applications 
-feature an unusual build process such that a SlackBuild script may be more 
-convenient for most users but a disadvantage to a user who relies on that 
-program and would be better off installing directly from the project'​s code 
-repository. 
- 
-If additional options are available in the SlackBuild script, the user's local 
-copy of the script and/or .info file can be edited from within sbopkg by 
-selecting the Custom menu item. This will open the SlackBuild script in the 
-user's text editor of choice (defined by the EDITOR environmental variable). 
-For example, if the SlackBuild script for LiVES was written for version 1.1.8 
-but a new version of LiVES has been released and a user wishes to install the 
-newer version, all that is required of the user is that the version number be 
-changed from 1.1.8 to, for instance, 1.2.0 (making the corresponding changes to 
-the .info file's VERSION and DOWNLOAD fields). The script can be saved and run 
-in sbopkg and the correct version of LiVES would be downloaded, compiled, and 
-optionally installed. 
- 
-Any change can be made to a SlackBuild script in this way, whether the user 
-wishes to hard code a unique feature into the script, or define a variable that 
-is described in the README file, update the version number, modify build paths, 
-and so on. If the only thing that is desired is to set a build option, however, 
-this can be done by selecting the Options item and typing OPTION=value ? in the 
-entry field. While editing the SlackBuild is a persistent change, the edited 
-version would have to be kept in sync with version changes which happen often. 
-Using custom options also persists but only needs to be kept in sync with 
-option changes which happen rarely. Changing a SlackBuild script, of course, 
-requires at least some very basic knowledge of bash scripting and the 
-installation process. It may be that a software package has changed 
-substantially from one version to the next and so a simple update of the 
-version number may not be all that is required, so if a user is opening a 
-SlackBuild script for modification then the user should truly understand what 
-is being done in the script, or be prepared for the build to potentially fail. 
- 
-The Sbopkg Queue 
- 
-One of the most powerful features of sbopkg is its queue, which makes it 
-possible for a user to create a list of packages to have installed in a 
-particular order and use the list on other computers. Slackermedia makes 
-extensive use of queue files to co-ordinate which packages should be installed 
-as a basis for a good multimedia system. From the main sbopkg menu, select ​ 
-Queue and press Return. The Queue menu contains items to view the current 
-queue, to modify the queue, load an existing queue, save a queue, rename or 
-delete existing queues, add all installed packages to the queue (for creating 
-package templates to enable restoration of the current package list or to 
-transfer to another machine), and to process the current queue. 
- 
-A queue is created from the sbopkg GUI by finding a package via either Browse 
-or Search and selecting Add to Queue. This adds the package to a temporary 
-session-only queue file. 
- 
-A typical use for this would be, for instance, when installing Inkscape. Doing 
-a search for Inkscape reveals that there is a SlackBuild available, but that it 
-depends on a number of other packages such as pangomm, cairomm, and others. 
-Adding Inkscape to the queue allows the user to then go seek out SlackBuild 
-packages for Inkscape'​s dependencies and either install them one by one, or add 
-them to the queue as well. If they are added to the queue, then obviously the 
-queue will attempt to install Inkscape before it installs the dependencies,​ so 
-there are special functions in the Sort Queue submenu of sbopkg'​s Queue menu to 
-either manually rearrange the order of the queue, or simply reverse the queue 
-such that it is processed in reverse order. A simple reversal of the queue 
-sometimes does work, but it may be insufficient since a dependency of one 
-application may have its own dependencies which may require manual re-ordering 
-to do subsorts in the queue. Alternatively,​ queuefiles can be created and 
-edited with a text editor. 
- 
-The Queue menu is accessed from the main sbopkg menu by selecting Queue and 
-contains items to view the current queue, which is dynamically created by the 
-user during an sbopkg session and will be erased (unless saved) when sbopkg is 
-stopped. The Sort item allows the user to reorder the list of applications in 
-the queue while Remove allows the user to delete items from the queue. Save 
-allows a queue file to be saved to the harddrive for later use; this is useful 
-when doing multiple installs of Slackware on a number of machines; a queue file 
-can be used on each machine so that the same packages are installed with 
-minimal effort. By default, queue files are saved in /​var/​lib/​sbopkg/​queues. 
- 
-To load a pre-existent queue file into sbopkg, select Queue ? Load and check 
-the desired queuefile(s) in the list. To run a queue file, select Process Queue 
-from the Queue menu. 
- 
-For example, if you have downloaded the av queue file from Slackermedia,​ then 
-to load it into sbopkg, simply invoke sbopkg as QUEUEDIR=/​path/​to/​dir/​ 
-containing/​queuefile sbopkg and it will appear in the checklist and can be 
-checked as usual. The queue file would then be loaded into sbopkg and you can 
-view it, modify it, remove or reorder applications,​ and finally process it. 
- 
-Advanced Uses of sbopkg 
- 
-Sbopkg can also be used directly from the command line. Its options can be 
-listed with sbopkg -h and details can be found via its manual page (man sbopkg 
-), but the most direct and simple command is (to use the earlier example) su 
--lc '​sbopkg -i av' which will search for an application or queue file called 
-"​av"​ and install it (if an application) or the programs in it (if a queuefile). 
-If both a program and queuefile exist with the same name, you'll be prompted to 
-specify which. If a queuefile is intended, specifying the .sqf extension will 
-avoid the prompt. If you know the name of an application and feel confident 
-that you you have met all its dependencies (or can meet them all within the 
-same command), this is probably both easier and simpler than loading sbopkg'​s 
-graphical environment. 
- 
-Other command line options include causing sbopkg to rsync to slackbuilds.org,​ 
-building without installing, diverse search options, viewing changelogs, and so 
-on. 
- 
-It is also possible to maintain a local repository of customized SlackBuilds 
-rather than, or in addition to, synchronizing with SlackBuilds.org. The local 
-repository is stored in /​var/​lib/​sbopkg/​local by default and can be made active 
-by either selecting it from Utilities ? Repository or by invoking sbopkg as  
-sbopkg -V local. Additionally,​ the location of the sbopkg repository can be 
-defined in the /​etc/​sbopkg/​sbopkg.conf file. If necessary, you may also pass 
-the -d flag to specify an alternate directory for SlackBuilds repositories or 
-by maintaining two configuration files, since sbopkg can be passed an alternate 
-configuration file (sbopkg -f FILE) on the command line. 
- 
-sport 
- 
-Sport, the "​Slackware Port" system, is a simple shell frontend to 
-Slackbuilds.org. It is meant to be simpler and less interactive than sbopkg, 
-and instead emulate the BSD port system, or Gentoo'​s emerge. 
- 
-Like other Slackware package installation applications,​ sport is not a package 
-manager. However, it does help you search through your collection of 
-SlackBuilds,​ read relevant files about each SlackBuild, and then execute the 
-build and install processes. 
- 
-Note 
- 
-Since the most prolific and uniform collection of SlackBuilds is 
-SlackBuilds.org,​ and since Slackermedia is so heavily reliant upon 
-SlackBuilds.org,​ sport was largely modeled after the structure of SB.o, 
-although it is not restricted to it and technically will work with any 
-collection of builds (such as your own personal collection of modified builds, 
-or those of trusted associates). 
- 
-To install sport, download its source code and use sport to install sport (yes, 
-you can use sport to install itself): 
- 
-  $ git clone gitorious.org/​slackport/​sport.git sport.git 
- 
-  $ cd sport.git 
-  $ su -c 
-  '​./​sport install .' 
- 
-To use sport, you must have a local repository of SlackBuilds. Since 
-Slackermedia relies heavily upon slackbuilds.org,​ it is worth while to pull the 
-entire listing of SlackBuild scripts from the site: 
- 
-  $ su -c 'mkdir -p /​usr/​ports'​ 
-  $ su -c 'rsync -av rsync://​slackbuilds.org/​slackbuilds/​$(awk '​{print $2}' /​etc/​slackware-version)/​ /​usr/​ports/'​ 
- 
-If you want to use sport and sbopkg on the same system, you should use the same 
-location that sbopkg uses (or else use the sport location for sbopkg). An 
-example of the former: 
- 
-  $ su -c 'mkdir -p /​var/​lib/​sbopkg/​SBo/​$(awk '​{print $2}' 
-  $ su -c 'rsync -av rsync://​slackbuilds.org/​slackbuilds/​$(awk '​{print $2}' /​etc/​slackware-version) /​var/​lib/​sbopkg/​SBo/​xx.x/'​ 
- 
-Before you can use sport, you must set the location of your local SlackBuild 
-repository. Open /​etc/​sport.conf and edit the SBOPATH and MASTER variables. For 
-example, assuming xx.x is your version of Slackware: 
- 
-  ​ 
-    SBOPATH=/​usr/​ports 
-  ​ 
- 
-  ​ 
-    MASTER="​rsync:?/​slackbuilds.org/​slackbuilds/​xx.x"​ 
-  ​ 
- 
-There are a few different ways to use sport, but it was written with BSD Ports 
-in mind, so its intended workflow mimics the way that the BSD Handbook guides 
-users through the intended usage of their Ports system. 
- 
-In general, the workflow would be: 
- 
- 1. Search for a term or package name that you want to install 
- 
- 2. Read about the package you find in order to learn about what libraries and 
-    other applications it depends on, as well as any important build notes 
- 
- 3. Download, build, install 
- 
-These tasks are each individual commands within the sport toolset. For each 
-flag, you can use every common convention for switches. For example, these 
-would all do the same thing: 
- 
-  * sport --search foo 
- 
-  * sport search foo 
- 
-  * sport s foo 
- 
-  * sport -s foo 
- 
-Sport Walkthrough 
- 
-The first step in the workflow is to find what you want to install. If you only 
-have an idea of what you want, then you'll want to search for matches to some 
-keyword: 
- 
-    # sport search foo 
- 
-    network/​emacs-foo.tar.gz ... emacs-foo 
-    (simple Emacs interface of foo) 
- 
-    network/​foo.tar.gz ... foo (text based web 
-    browser and pager) 
- 
-The search function of sport performs a fuzzy search on any term you provide. A 
-search for "​foo"​ therefore returns the category and packages names for both the 
-stand-alone foo and the Emacs foo mode. 
- 
-Note 
- 
-If you only want to browse through your SlackBuilds tree without having to 
-think up search terms, cd into /usr/ports (or whatever you have set SBOPATH to) 
-and browse its contents. 
- 
-If you find something of interest but want to see if you already have it 
-installed, use sport check: 
- 
-  # sport check foo 
- 
-If nothing is returned, then you do not have that application installed. 
- 
-The next step in the typical workflow is to read about the package you are 
-about to install, so that you know about any important build configuration 
-options, or dependencies that you should install first. Use sport cat to see 
-all relevant notes in a SlackBuild. If the package search returned only one 
-match, then you can use just the packagename,​ but if there were multiple 
-matches then you should provide both the category and package name: 
- 
-  $ sport c net*/foo 
- 
-If you have changed directories into your SlackBuild tree and are in the same 
-directory as the SlackBuild file, you can cheat and provide the path to the 
-package with a dot-slash: 
- 
-  $ sport cat ./foo 
- 
-Or if you are in the SlackBuild'​s directory, just use a dot. 
- 
-  $ sport cat . 
- 
-This displays the README and the .info files of the package, so that you can 
-see what the application claims to do, and what dependencies are recommended 
-and required. 
- 
-If the package you want to install has dependencies,​ you should resolve those 
-dependencies before continuing. Unlike the BSD Ports and Gentoo emerge systems, 
-sport does not resolve dependencies for you. That way, if you have already have 
-a package or a SlackBuild for a dependency (or you prefer to compile it 
-yourself), you can use it instead of whatever an automated "​package manager"​ 
-happens to find lying around. 
- 
-Note 
- 
-"​Resolving dependencies"​ may sound mysterious but all it means is that you will 
-have to install some additional system libraries or smaller applications before 
-you install the application you are trying to obtain. To resolve the 
-dependencies of foo, you would take note of the libraries it requires (bar and  
-baz) and then use sport to install each one before then installing foo itself. 
- 
-Once you have resolved all dependencies,​ you are ready to build the package. 
-There are two commands you can use; sport install will build the package and 
-install it onto your system (leaving a copy of the finished Slack package in 
-the default build location for SBo packages: /tmp), while sport install 
---build-only only builds but does not install the package. 
- 
-  # sport install foo 
- 
-Again, if you are in the directory containing the SlackBuild you want to 
-install, you can cheat and provide the path to the package with a dot, meaning 
-that the build script is in the current directory: 
- 
-  # sport -i . 
- 
-If you are fastidious about disk space or keeping a tidy SlackBuilds tree, use  
-sport clean foo to remove the directory containing the source code and 
-SlackBuild. It of course leaves any compressed copy of your SlackBuild 
-directory (the SlackBuild.org structure). 
- 
-Warning 
- 
-If you are not using the SlackBuild.org tree, then you should either keep your 
-originals as compressed .tar.gz archives or you should either modify or not use 
-the clean command. 
- 
-As you can see, sport may be used from anywhere in your filesystem, or you can 
-use it as you "​crawl"​ through your SlackBuild tree. It's a handy and flexible 
-tool that can help make the potentially repetitious process of downloading,​ 
-compiling, and installing software easier. 
- 
-Advanced Sport Usage 
- 
-Since sport is just a BASH script, you can use the usual BASH conventions to 
-add flexibility to your commands. 
- 
-To pass build options through sport, provide the option (usually defined in the 
-README of the SlackBuild). 
- 
-  # WIDGETS=yes sport install foo 
- 
-To pass make flags through sport, use MAKEOPTS. 
- 
-  # MAKEOPTS='​-j8'​ sport install foo 
- 
-If you need to do some special kind of install (such as an upgradepkg rather 
-than an installpkg) then preface your sport -i command with the INSTALLER 
-environment variable: 
- 
-  # INSTALLER=upgradepkg sport i . 
- 
-Or something more complex: 
- 
-  # INSTALLER="​upgradepkg --install-new"​ sport -i multi*/​foo ​ 
- 
- 
-And so on. 
- 
-Queue Files 
- 
-Sport supports batch, or queue, files. 
- 
-For your initial Slackermedia install actions, you will use a Slackermedia 
-queue files (slackermedia-huge.sqf,​ for example) but you can also create and 
-maintain your own queue files. To create your own queue, just echo the package 
-names into a plain text file, newline delimited, in the order you wish for them 
-to be installed. 
- 
-Note 
- 
-In the event of two packages sharing the same name, use both the category and 
-package name, but usually just the package name will do. 
- 
-Here is an example of a simple queue file for foo: 
- 
-baz 
-bar 
-foo 
- 
-Save these three lines as foo.list (or any filename) and then have sport 
-process it using standard BASH re-direction:​ 
- 
-# sport $( < foo.list) 
- 
-For full details on using sport, view the man and info pages bundled with it. 
- 
-, the typical process for installing applications on Slackware is: 
- 
- 1. Learn about an application from Slackermedia,​ other Linux multimedia sites, 
-    Linux multimedia distributions,​ and your own research. 
- 
- 2. Look for an install script for the application on slackbuilds.org. If 
-    available, install. 
- 
- 3. Look for the application on another trusted site such as: 
- 
-      + slackermedia.info/​slackbuilds 
- 
-      + slacky.eu 
- 
-      + slackware.com/​~alienbob/​slackbuilds 
- 
-      + ccrma.stanford.edu/​planetccrma/​software (for use with rpm2tgz) 
- 
- 4. Install the application. 
- 
-In some cases, it might be preferable to compile an application yourself. 
-Compiling software, second only to compiling a custom Linux kernel, is often 
-discouraged by proponents of a so-called "user friendly"​ system. They assert 
-that a truly user friendly system is already set up and configured for the 
-user, ignoring that the user may want something completely different than what 
-the system designer has given them. GNU Linux makes no such assumption, leaving 
-you free to compile your own software so that it does what you want it to do, 
-and then to configure the applications so that you may interact with them the 
-way you want to. 
- 
-The preferred method to compile software on Slackware is the same way that 
-Patrick Volkerding, founder and maintainer of Slackware, does in releasing 
-Slackware: using SlackBuilds. If you have a SlackBuild script do the compiling 
-and installation for you, then you will have a permanent record of everything 
-that has been installed on your system, and an upgrade path in the event that 
-you need to update what has been installed. 
- 
-You don't have to be a programmer to leverage SlackBuilds. Many of the 
-applications that you will use on Slackermedia already have SlackBuilds written 
-for them, available on SlackBuilds.org. Therefore, even a novice can download a 
-SlackBuild script, modify a few fields, build and install, and end up with an 
-up-to-date version of an important application. 
- 
-If you want to modify a SlackBuild: 
- 
- 1. Locate and download the existing SlackBuild. This is often delivered as 
-    foo.tar.gz and contains the SlackBuild script itself, a README, a .info 
-    file, and possibly a few other files. It does not include the source code 
-    for the application it is designed to build. 
- 
- 2. Next, locate and download the latest stable version of the application you 
-    want to build. Place the downloaded file (usually a .zip or .tar.gz or 
-    .tar.bz2 file) in the SlackBuild folder. 
- 
- 3. If the SlackBuild you are using was written for foo-1.0.tar.bz2 but you 
-    need to compile foo-2.0.tar.bz2 because you need support for a fancy new 
-    plugin, or you want to add in codec support that was missing from 1.0, then 
-    you probably only need to change one thing in the SlackBuild. 
- 
-    Open the .SlackBuild file in a text editor and locate the line in the 
-    script that defines the VERSION number. Change the version number to the 
-    exact version number provided in the filename of the source code download 
-    (in this example, 2.0 rather than 1.0) and save and close the document. 
- 
- 4. Build and install with your customized SlackBuild as usual. 
- 
-            # 
-            ./​foo.SlackBuild && 
-          installpkg /​tmp/​foo*2.0*t?​z 
- 
- 
-Most modifications to applications can be done with simple SlackBuild 
-modifications,​ so don't be afraid to open up the SlackBuilds that build your 
-software and try out some simple customizations. 
- 
-If there is no existing slackbuild script, then you will need to compile from 
-source code manually, and use makepkg to create a package. 
- 
-The rest of this handbook contains instructions on how to build some 
-applications from source code, how to install from alternate providers, and an 
-overview on how to use each application. It is not all-inclusive or a complete 
-manual for each application,​ but it does provide a general sense for what is 
-available for Linux. It should serve as a launchpad for further exploration,​ 
-not a definitive guide. 
- 
-Have fun! 
-