You are previewing Ubuntu Unleashed 2014 Edition: Covering 13.10 and 14.04,Ninth Edition.
O'Reilly logo
Ubuntu Unleashed 2014 Edition: Covering 13.10 and 14.04,Ninth Edition

Book Description

The Publisher regrets that the CD/DVD content for this title cannot be made available Online.

Ubuntu Unleashed 2014 Edition is filled with unique and advanced information for everyone who wants to make the most of the Linux-based Ubuntu operating system. This new edition has been thoroughly revised and updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 13.10 and the forthcoming Ubuntu 14.04.

Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 13.10/14.04 installation, configuration, productivity, multimedia, development, system administration, server operations, networking, virtualization, security, DevOps, and more—including intermediate-to-advanced techniques you won’t find in any other book.

Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of Ubuntu’s Unity interface, various types of servers, software repositories, database options, virtualization and cloud services, development tools, monitoring, troubleshooting, Ubuntu’s push into mobile and other touch screen devices, and much more.

Matthew Helmke served from 2006 to 2011 on the Ubuntu Forum Council, providing leadership and oversight of the Ubuntu Forums, and spent two years on the Ubuntu regional membership approval board for Europe, the Middle East, and Africa. He has written about Ubuntu for several magazines and websites and is the lead author of The Official Ubuntu Book. He works for Pearson Education writing technical documentation for educational
testing software.

Detailed information on how to…

  • Configure and customize the Unity desktop

  • Get started with multimedia and productivity applications, including LibreOffice

  • Manage Linux services, users, and software packages

  • Administer and run Ubuntu from the command line

  • Automate tasks and use shell scripting

  • Provide secure remote access and configure a secure VPN

  • Manage kernels and modules

  • Administer file, print, email, proxy, LDAP, DNS, and HTTP servers (Apache, Nginx, or alternatives)

  • Learn about new options for managing large numbers of servers

  • Work with databases (both SQL and the newest NoSQL alternatives)

  • Get started with virtualization

  • Build a private cloud with Juju and Charms

  • Learn the basics about popular programming languages including Python, PHP, Perl, and new alternatives such as Go and Rust

  • Learn about Ubuntu’s work toward usability on touch-screen and phone devices

  • Table of Contents

    1. About This eBook
    2. Title Page
    3. Copyright Page
    4. Contents at a Glance
    5. Table of Contents
    6. About the Authors
    7. Dedication
    8. Acknowledgments
    9. We Want to Hear from You!
    10. Reader Services
    11. Introduction
      1. Licensing
      2. Who This Book Is For
        1. Those Wanting to Become Intermediate or Advanced Users
        2. Sysadmins, Programmers, and DevOps
      3. What This Book Contains
      4. Conventions Used in This Book
    12. Part I: Installation and Configuration
      1. Chapter 1. Installing Ubuntu and Post-Installation Configuration
        1. Before You Begin the Installation
          1. Researching Your Hardware Specifications
          2. Installation Options
          3. 32-Bit vs 64-Bit Ubuntu
          4. Planning Partition Strategies
          5. The Boot Loader
          6. Installing from DVD or USB Drive
        2. Step-by-Step Installation
          1. Installing
          2. First Update
        3. Shutting Down
        4. Finding Programs and Files
        5. Software Updater
        6. The sudo Command
        7. Configuring Software Repositories
        8. System Settings
          1. Detecting and Configuring a Printer
          2. Configuring Power Management in Ubuntu
          3. Setting the Time and Date
        9. Configuring Wireless Networks
        10. Troubleshooting Post-Installation Configuration Problems
        11. References
      2. Chapter 2. Background Information and Resources
        1. What Is Linux?
        2. Why Use Linux?
        3. What Is Ubuntu?
        4. Ubuntu for Business
        5. Ubuntu in Your Home
        6. Getting the Most from Ubuntu and Linux Documentation
        7. Ubuntu Developers and Documentation
        8. Websites and Search Engines
          1. Web Search Tips
          2. Google Is Your Friend
          3. Ubuntu Package Listings
          4. Commercial Support
          5. Documentation
          6. Linux Guides
          7. Ubuntu
        9. Mailing Lists
          1. Ubuntu Project Mailing Lists
        10. Internet Relay Chat
    13. Part II: Desktop Ubuntu
      1. Chapter 3. Working with Unity
        1. Foundations and the X Server
          1. Basic X Concepts
          2. Using X
          3. Elements of the xorg.conf File
          4. Starting X
          5. Using a Display Manager
          6. Changing Window Managers
        2. Using Unity, a Primer
          1. The Desktop
          2. Customizing and Configuring Unity
        3. Power Shortcuts
        4. References
      2. Chapter 4. On the Internet
        1. Getting Started with Firefox
        2. Checking Out Google Chrome and Chromium
        3. Choosing an Email Client
          1. Mozilla Thunderbird
          2. Evolution
          3. Other Mail Clients
        4. RSS Readers
          1. Firefox
          2. Liferea
        5. Instant Messaging and Video Conferencing with Empathy
        6. Internet Relay Chat
        7. Usenet Newsgroups
        8. Ubuntu One Cloud Storage
        9. References
      3. Chapter 5. Productivity Applications
        1. Introducing LibreOffice
        2. Other Office Suites for Ubuntu
          1. Working with GNOME Office
          2. Working with KOffice
        3. Other Useful Productivity Software
          1. Working with PDF
          2. Working with XML and DocBook
          3. Working with LaTeX
        4. Productivity Applications Written for Microsoft Windows
        5. References
      4. Chapter 6. Multimedia Applications
        1. Sound and Music
          1. Sound Cards
          2. Adjusting Volume
          3. Sound Formats
          4. Listening to Music
          5. Buying Music in the Ubuntu One Music Store
        2. Graphics Manipulation
          1. The GNU Image Manipulation Program
          2. Using Scanners in Ubuntu
          3. Working with Graphics Formats
          4. Capturing Screen Images
          5. Other Graphics Manipulation Options
        3. Using Digital Cameras with Ubuntu
          1. Handheld Digital Cameras
          2. Using Shotwell Photo Manager
        4. Burning CDs and DVDs in Ubuntu
          1. Creating CDs and DVDs with Brasero
          2. Creating CDs from the Command Line
          3. Creating DVDs from the Command Line
        5. Viewing Video
          1. TV and Video Hardware
          2. Video Formats
          3. Viewing Video in Linux
          4. Personal Video Recorders
          5. Video Editing
        6. References
      5. Chapter 7. Other Ubuntu Interfaces
        1. Desktop Environment
        2. KDE and Kubuntu
        3. Xfce and Xubuntu
          1. LXDE and Lubuntu
        4. GNOME 3 and Ubuntu GNOME
        5. Ubuntu Kylin
        6. References
      6. Chapter 8. Games
        1. Ubuntu Gaming
          1. Installing Proprietary Video Drivers
        2. Installing Games in Ubuntu
          1. Warsow
          2. Scorched 3D
          3. Frozen Bubble
          4. SuperTux
          5. Battle for Wesnoth
          6. Frets on Fire
          7. FlightGear
          8. Speed Dreams
          9. Games for Kids
          10. Commercial Games
        3. Playing Windows Games
        4. References
    14. Part III: System Administration
      1. Chapter 9. Managing Software
        1. Ubuntu Software Center
        2. Using Synaptic for Software Management
        3. Staying Up-to-Date
        4. Working on the Command Line
          1. Day-to-Day Usage
          2. Finding Software
        5. Compiling Software from Source
          1. Compiling from a Tarball
          2. Compiling from Source from the Ubuntu Repositories
        6. Configuration Management
          1. dotdee
          2. OneConf
        7. References
      2. Chapter 10. Command-Line Quickstart
        1. What Is the Command Line?
        2. Accessing the Command Line
          1. Text-Based Console Login
          2. Logging Out
          3. Logging In and Out from a Remote Computer
        3. User Accounts
        4. Reading Documentation
          1. Using Man Pages
          2. Using apropros
          3. Using whereis
        5. Understanding the Linux File System Hierarchy
          1. Essential Commands in /bin and /sbin
          2. Configuration Files in /etc
          3. User Directories: /home
          4. Using the Contents of the /proc Directory to Interact with the Kernel
          5. Working with Shared Data in the /usr Directory
          6. Temporary File Storage in the /tmp Directory
          7. Accessing Variable Data Files in the /var Directory
        6. Navigating the Linux File System
          1. Listing the Contents of a Directory with ls
          2. Changing Directories with cd
          3. Finding Your Current Directory with pwd
        7. Working with Permissions
          1. Assigning Permissions
          2. Directory Permissions
          3. Altering File Permissions with chmod
          4. File Permissions with chgrp
          5. Changing File Permissions with chown
          6. Understanding Set User ID and Set Group ID Permissions
        8. Working with Files
          1. Creating a File with touch
          2. Creating a Directory with mkdir
          3. Deleting a Directory with rmdir
          4. Deleting a File or Directory with rm
          5. Moving or Renaming a File with mv
          6. Copying a File with cp
          7. Displaying the Contents of a File with cat
          8. Displaying the Contents of a File with less
          9. Using Wildcards and Regular Expressions
        9. Working as Root
          1. Understanding and Fixing sudo
          2. Creating Users
          3. Deleting Users
          4. Shutting Down the System
          5. Rebooting the System
        10. Commonly Used Commands and Programs
        11. References
      3. Chapter 11. Command-Line Master Class
        1. Why Use the Command Line?
        2. Using Basic Commands
          1. Printing the Contents of a File with cat
          2. Changing Directories with cd
          3. Changing File Access Permissions with chmod
          4. Copying Files with cp
          5. Printing Disk Usage with du
          6. Finding Files by Searching with find
          7. Searches for a String in Input with grep
          8. Paging Through Output with less
          9. Creating Links Between Files with ln
          10. Finding Files from an Index with locate
          11. Listing Files in the Current Directory with ls
          12. Reading Manual Pages with man
          13. Making Directories with mkdir
          14. Moving Files with mv
          15. Listing Processes with ps
          16. Deleting Files and Directories with rm
          17. Printing the Last Lines of a File with tail
          18. Printing Resource Usage with top
          19. Using echo
          20. Printing the Location of a Command with which
        3. Redirecting Output and Input
        4. stdin, stdout, sdterr, and Redirection
        5. Comparing Files
          1. Finding Differences in Files with diff
          2. Finding Similarities in Files with comm
        6. Combining Commands
          1. Pipes
          2. Running One or More Tasks in the Background
          3. Combining Commands with Boolean Operators
          4. Running Separate Commands in Sequence
        7. Using Environment Variables
        8. Using Common Text Editors
          1. Working with nano
          2. Working with vi
          3. Working with emacs
          4. Working with sed and awk
        9. Working with Compressed Files
        10. Using Multiple Terminals with byobu
        11. Polite System Reset using REISUB
        12. Limiting Resource Use
        13. References
      4. Chapter 12. Managing Users
        1. User Accounts
          1. The Super User/Root User
          2. User IDs and Group IDs
          3. File Permissions
        2. Managing Groups
          1. Group Listing
          2. Group Management Tools
        3. Managing Users
          1. User Management Tools
          2. Adding New Users
          3. Monitoring User Activity on the System
        4. Managing Passwords
          1. System Password Policy
          2. The Password File
          3. Shadow Passwords
          4. Managing Password Security for Users
          5. Changing Passwords in a Batch
        5. Granting System Administrator Privileges to Regular Users
          1. Temporarily Changing User Identity with the su Command
          2. Granting Root Privileges on Occasion: The sudo Command
        6. Disk Quotas
          1. Implementing Quotas
          2. Manually Configuring Quotas
        7. Related Ubuntu Commands
        8. References
      5. Chapter 13. Automating Tasks and Shell Scripting
        1. Scheduling Tasks
          1. Using at and batch to Schedule Tasks for Later
          2. Using cron to Run Jobs Repeatedly
          3. Using rtcwake to Wake Your Computer from Sleep Automatically
        2. Basic Shell Control
          1. The Shell Command Line
          2. Shell Pattern-Matching Support
          3. Redirecting Input and Output
          4. Piping Data
          5. Background Processing
        3. Writing and Executing a Shell Script
          1. Running the New Shell Program
          2. Storing Shell Scripts for System-wide Access
          3. Interpreting Shell Scripts Through Specific Shells
          4. Using Variables in Shell Scripts
          5. Assigning a Value to a Variable
          6. Accessing Variable Values
          7. Positional Parameters
          8. A Simple Example of a Positional Parameter
          9. Using Positional Parameters to Access and Retrieve Variables from the Command Line
          10. Using a Simple Script to Automate Tasks
          11. Built-In Variables
          12. Special Characters
          13. Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
          14. Using Single Quotes to Maintain Unexpanded Variables
          15. Using the Backslash as an Escape Character
          16. Using the Backtick to Replace a String with Output
          17. Comparison of Expressions in pdksh and bash
          18. Comparing Expressions with tcsh
          19. The for Statement
          20. The while Statement
          21. The until Statement
          22. The repeat Statement (tcsh)
          23. The select Statement (pdksh)
          24. The shift Statement
          25. The if Statement
          26. The case Statement
          27. The break and exit Statements
          28. Using Functions in Shell Scripts
        4. References
      6. Chapter 14. The Boot Process
        1. Running Services at Boot
        2. Beginning the Boot Loading Process
          1. Loading the Linux Kernel
          2. System Services and Runlevels
          3. Runlevel Definitions
          4. Booting into the Default Runlevel
          5. Understanding init Scripts and the Final Stage of Initialization
          6. Controlling Services at Boot with Administrative Tools
          7. Changing Runlevels
          8. Troubleshooting Runlevel Problems
        3. Starting and Stopping Services Manually
        4. Using Upstart
        5. References
      7. Chapter 15. System-Monitoring Tools
        1. Console-Based Monitoring
          1. Using the kill Command to Control Processes
          2. Using Priority Scheduling and Control
          3. Displaying Free and Used Memory with free
          4. Disk Space
          5. Disk Quotas
          6. Checking Log Files
        2. Graphical Process and System Management Tools
          1. System Monitor
          2. Conky
          3. Other
        3. KDE Process- and System-Monitoring Tools
        4. Enterprise Server Monitoring
          1. Landscape
          2. Other
        5. References
      8. Chapter 16. Backing Up
        1. Choosing a Backup Strategy
          1. Why Data Loss Occurs
          2. Assessing Your Backup Needs and Resources
          3. Evaluating Backup Strategies
          4. Making the Choice
        2. Choosing Backup Hardware and Media
          1. Removable Storage Media
          2. CD-RW and DVD+RW/-RW Drives
          3. Network Storage
          4. Tape Drive Backup
          5. Cloud Storage
        3. Using Backup Software
          1. tar: The Most Basic Backup Tool
          2. The GNOME File Roller
          3. The KDE ark Archiving Tool
          4. Déjà Dup
          5. Back In Time
          6. Unison
          7. Using the Amanda Backup Application
          8. Alternative Backup Software
        4. Copying Files
          1. Copying Files Using tar
          2. Compressing, Encrypting, and Sending tar Streams
          3. Copying Files Using cp
          4. Copying Files Using mc
          5. Using rsync
        5. Version Control for Configuration Files
        6. System Rescue
          1. The Ubuntu Rescue Disc
          2. Restoring the GRUB2 Boot Loader
          3. Saving Files from a Nonbooting Hard Drive
        7. References
      9. Chapter 17. Networking
        1. Laying the Foundation: The localhost Interface
          1. Checking for the Availability of the Loopback Interface
          2. Configuring the Loopback Interface Manually
        2. Checking Connections with ping, traceroute, and mtr
        3. Networking with TCP/IP
          1. TCP/IP Addressing
          2. Using IP Masquerading in Ubuntu
          3. Ports
        4. IPv6 Basics
        5. Network Organization
          1. Subnetting
          2. Subnet Masks
          3. Broadcast, Unicast, and Multicast Addressing
        6. Hardware Devices for Networking
          1. Network Interface Cards
          2. Network Cable
          3. Hubs and Switches
          4. Routers and Bridges
          5. Initializing New Network Hardware
        7. Using Network Configuration Tools
          1. Command-Line Network Interface Configuration
          2. Network Configuration Files
          3. Using Graphical Configuration Tools
        8. Dynamic Host Configuration Protocol
          1. How DHCP Works
          2. Activating DHCP at Installation and Boot Time
          3. DHCP Software Installation and Configuration
          4. Using DHCP to Configure Network Hosts
          5. Other Uses for DHCP
        9. Wireless Networking
          1. Support for Wireless Networking in Ubuntu
          2. Advantages of Wireless Networking
          3. Choosing from Among Available Wireless Protocols
        10. Beyond the Network and onto the Internet
        11. Common Configuration Information
        12. Configuring Digital Subscriber Line Access
          1. Understanding PPP over Ethernet
          2. Configuring a PPPoE Connection Manually
        13. Configuring Dial-Up Internet Access
        14. Troubleshooting Connection Problems
        15. References
      10. Chapter 18. Remote Access with SSH and Telnet
        1. Setting Up a Telnet Server
        2. Telnet Versus SSH
        3. Setting Up an SSH Server
        4. SSH Tools
          1. Using scp to Copy Individual Files Between Machines
          2. Using sftp to Copy Many Files Between Machines
          3. Using ssh-keygen to Enable Key-Based Logins
        5. Virtual Network Computing
        6. References
      11. Chapter 19. Securing Your Machines
        1. Understanding Computer Attacks
        2. Assessing Your Vulnerability
        3. Protecting Your Machine
          1. Securing a Wireless Network
          2. Passwords and Physical Security
          3. Configuring and Using Tripwire
          4. Devices
        4. Viruses
        5. Configuring Your Firewall
        6. AppArmor
        7. Forming a Disaster Recovery Plan
        8. References
      12. Chapter 20. Performance Tuning
        1. Hard Disk
          1. Using the BIOS and Kernel to Tune the Disk Drives
          2. The hdparm Command
          3. File System Tuning
          4. The tune2fs Command
          5. The e2fsck Command
          6. The badblocks Command
          7. Disabling File Access Time
        2. Kernel
        3. Apache
        4. MySQL
          1. Measuring Key Buffer Usage
          2. Using the Query Cache
          3. Miscellaneous Tweaks
          4. Query Optimization
        5. References
      13. Chapter 21. Kernel and Module Management
        1. The Linux Kernel
          1. The Linux Source Tree
          2. Types of Kernels
        2. Managing Modules
        3. When to Recompile
        4. Kernel Versions
        5. Obtaining the Kernel Sources
        6. Patching the Kernel
        7. Compiling the Kernel
          1. Using xconfig to Configure the Kernel
          2. Creating an Initial RAM Disk Image
        8. When Something Goes Wrong
          1. Errors During Compile
          2. Runtime Errors, Boot Loader Problems, and Kernel Oops
        9. References
    15. Part IV: Ubuntu as a Server
      1. Chapter 22. Sharing Files and Printers
        1. Using the Network File System
          1. Installing and Starting or Stopping NFS
          2. NFS Server Configuration
          3. NFS Client Configuration
        2. Putting Samba to Work
          1. Manually Configuring Samba with /etc/samba/smb.conf
          2. Testing Samba with the testparm Command
          3. Starting, Stopping, and Restarting the smbd Daemon
          4. Mounting Samba Shares
          5. Configuring Samba Using SWAT
        3. Network and Remote Printing with Ubuntu
          1. Creating Network Printers
          2. Using the Common UNIX Printing System GUI
          3. Avoiding Printer Support Problems
        4. References
      2. Chapter 23. Apache Web Server Management
        1. About the Apache Web Server
        2. Installing the Apache Server
          1. Installing from the Ubuntu Repositories
          2. Building the Source Yourself
        3. Starting and Stopping Apache
          1. Starting the Apache Server Manually
          2. Using /etc/init.d/apache2
        4. Runtime Server Configuration Settings
          1. Runtime Configuration Directives
          2. Editing apache2.conf
          3. Apache Multiprocessing Modules
          4. Using .htaccess Configuration Files
        5. File System Authentication and Access Control
          1. Restricting Access with allow and deny
          2. Authentication
          3. Final Words on Access Control
        6. Apache Modules
          1. mod_access
          2. mod_alias
          3. mod_asis
          4. mod_auth
          5. mod_auth_anon
          6. mod_auth_dbm
          7. mod_auth_digest
          8. mod_autoindex
          9. mod_cgi
          10. mod_dir and mod_env
          11. mod_expires
          12. mod_headers
          13. mod_include
          14. mod_info and mod_log_config
          15. mod_mime and mod_mime_magic
          16. mod_negotiation
          17. mod_proxy
          18. mod_rewrite
          19. mod_setenvif
          20. mod_speling
          21. mod_status
          22. mod_ssl
          23. mod_unique_id
          24. mod_userdir
          25. mod_usertrack
          26. mod_vhost_alias
        7. Virtual Hosting
          1. Address-Based Virtual Hosts
          2. Name-Based Virtual Hosts
        8. Logging
        9. References
      3. Chapter 24. Nginx Web Server Management
        1. About the Nginx Web Server
        2. Installing the Nginx Server
          1. Installing from the Ubuntu Repositories
          2. Building the Source Yourself
        3. Configuring the Nginx Server
        4. Virtual Hosting
        5. Setting Up PHP
        6. Adding and Configuring Modules
        7. References
      4. Chapter 25. Other HTTP Servers
        1. lighttpd
        2. Yaws
        3. Cherokee
        4. Jetty
        5. thttpd
        6. Apache Tomcat
        7. References
      5. Chapter 26. Remote File Serving with FTP
        1. Choosing an FTP Server
          1. Choosing an Authenticated or Anonymous Server
          2. Ubuntu FTP Server Packages
          3. Other FTP Servers
        2. Installing FTP Software
        3. The FTP User
        4. Configuring the Very Secure FTP Server
          1. Controlling Anonymous Access
          2. Other vsftpd Server Configuration Files
        5. Using the ftphosts File to Allow or Deny FTP Server Connection
        6. References
      6. Chapter 27. Handling Email
        1. How Email Is Sent and Received
          1. The Mail Transport Agent
          2. Choosing an MTA
          3. The Mail Delivery Agent
          4. The Mail User Agent
        2. Basic Postfix Configuration and Operation
          1. Configuring Masquerading
          2. Using Smart Hosts
          3. Setting Message Delivery Intervals
          4. Mail Relaying
          5. Forwarding Email with Aliases
        3. Using Fetchmail to Retrieve Mail
          1. Installing Fetchmail
          2. Configuring Fetchmail
        4. Choosing a Mail Delivery Agent
          1. Procmail
          2. Spamassassin
          3. Squirrelmail
          4. Virus Scanners
          5. Autoresponders
        5. Alternatives to Microsoft Exchange Server
          1. Microsoft Exchange Server/Outlook Client
          2. CommuniGate Pro
          3. Oracle Beehive
          4. Bynari
          5. Open-Xchange
          6. phpgroupware
          7. PHProjekt
          8. Horde
        6. References
      7. Chapter 28. Proxying, Reverse Proxying, and Virtual Private Networks (VPN)
        1. What Is a Proxy Server?
        2. Installing Squid
        3. Configuring Clients
        4. Access Control Lists
        5. Specifying Client IP Addresses
        6. Sample Configurations
        7. Virtual Private Networks (VPN)
          1. Setting Up a VPN Client
          2. Setting Up a VPN Server
        8. References
      8. Chapter 29. Administering Relational Database Services
        1. A Brief Review of Database Basics
          1. How Relational Databases Work
          2. Understanding SQL Basics
          3. Creating Tables
          4. Inserting Data into Tables
          5. Retrieving Data from a Database
        2. Choosing a Database: MySQL Versus PostgreSQL
          1. Speed
          2. Data Locking
          3. ACID Compliance in Transaction Processing to Protect Data Integrity
          4. SQL Subqueries
          5. Procedural Languages and Triggers
        3. Configuring MySQL
          1. Setting a Password for the MySQL Root User
          2. Creating a Database in MySQL
        4. Configuring PostgreSQL
          1. Initializing the Data Directory in PostgreSQL
          2. Creating a Database in PostgreSQL
          3. Creating Database Users in PostgreSQL
          4. Deleting Database Users in PostgreSQL
          5. Granting and Revoking Privileges in PostgreSQL
        5. Database Clients
          1. SSH Access to a Database
          2. Local GUI Client Access to a Database
          3. Web Access to a Database
          4. The MySQL Command-Line Client
          5. The PostgreSQL Command-Line Client
          6. Graphical Clients
        6. References
      9. Chapter 30. NoSQL Databases
        1. Key/Value Stores
          1. Berkeley DB
          2. Cassandra
          3. Memcached and MemcacheDB
          4. Redis
          5. Riak
        2. Document Stores
          1. CouchDB
          2. MongoDB
          3. BaseX
        3. Wide Column Stores
          1. BigTable
          2. HBase
        4. Graph Stores
          1. Neo4j
          2. OrientDB
          3. HyperGraphDB
          4. FlockDB
        5. References
      10. Chapter 31. Lightweight Directory Access Protocol (LDAP)
        1. Configuring the Server
          1. Creating Your Schema
          2. Populating Your Directory
        2. Configuring Clients
          1. Evolution
          2. Thunderbird
        3. Administration
        4. References
      11. Chapter 32. Linux Terminal Server Project (LTSP)
        1. Requirements
        2. Installation
        3. Using LTSP
        4. References
      12. Chapter 33. Virtualization on Ubuntu
        1. KVM
        2. VirtualBox
        3. VMware
        4. Xen
        5. References
      13. Chapter 34. Ubuntu in the Cloud
        1. Why a Cloud?
          1. Software as a Service (SaaS)
          2. Platform as a Service (PaaS)
          3. Infrastructure as a Service (IaaS)
          4. Metal as a Service (MaaS)
          5. Before You Do Anything
        2. Ubuntu Cloud and Eucalyptus
          1. Deploy/Install Basics: Public or Private?
          2. Public
          3. Private
          4. A euca2ools Primer
        3. Ubuntu Cloud and OpenStack
          1. Compute Infrastructure (Nova)
          2. Storage Infrastructure (Swift)
          3. Imaging Service (Glance)
          4. Installation
          5. Creating an Image
          6. Instance Management
          7. Storage Management
          8. Network Management
          9. An OpenStack Commands Primer
          10. Learning More
        4. Juju
          1. Getting Started
          2. Charms
          3. The Juju GUI
          4. Juju on Mac OS X
        5. Ubuntu Metal as a Service (MaaS)
        6. Landscape
        7. References
      14. Chapter 35. Managing Sets of Servers
        1. Juju
        2. Puppet
        3. Chef
        4. CFEngine
        5. Ansible
        6. Landscape
        7. References
      15. Chapter 36. Name Serving with the Domain Name System (DNS)
        1. Understanding Domain Names
          1. DNS Servers
          2. DNS Records
        2. Setting Up a DNS Server with BIND
        3. References
    16. Part V: Programming Linux
      1. Chapter 37. Opportunistic Development
        1. Version Control Systems
          1. Managing Software Projects with Subversion
          2. Managing Software Projects with Bazaar
          3. Managing Software Projects with Mercurial
          4. Managing Software Projects with Git
        2. Introduction to Opportunistic Development
        3. Launchpad
        4. Quickly
        5. Ground Control
        6. Bikeshed and Other Tools
        7. References
      2. Chapter 38. Helping with Ubuntu Development
        1. Introduction to Ubuntu Development
        2. Setting Up Your Development System
          1. Install Basic Packages and Configure
          2. Create a Launchpad Account
          3. Set Up Your Environment to Work with Launchpad
        3. Fixing Bugs and Packaging
        4. Finding Bugs to Fix with Harvest
        5. Masters of the Universe
        6. References
      3. Chapter 39. Helping with Ubuntu Testing and QA
        1. Community Teams
          1. Ubuntu Testing Team
          2. QA Team
        2. Bug Squad
        3. Test Drive
        4. References
      4. Chapter 40. Using Perl
        1. Using Perl with Linux
          1. Perl Versions
          2. A Simple Perl Program
        2. Perl Variables and Data Structures
          1. Perl Variable Types
          2. Special Variables
        3. Operators
          1. Comparison Operators
          2. Compound Operators
          3. Arithmetic Operators
          4. Other Operators
          5. Special String Constants
        4. Conditional Statements: if/else and unless
          1. if
          2. unless
        5. Looping
          1. for
          2. foreach
          3. while
          4. until
          5. last and next
          6. do ... while and do ... until
        6. Regular Expressions
        7. Access to the Shell
        8. Modules and CPAN
        9. Code Examples
          1. Sending Mail
          2. Purging Logs
          3. Posting to Usenet
          4. One-Liners
          5. Command-Line Processing
        10. References
      5. Chapter 41. Using Python
        1. Python on Linux
        2. The Basics of Python
          1. Numbers
          2. More on Strings
          3. Lists
          4. Dictionaries
          5. Conditionals and Looping
        3. Functions
        4. Object Orientation
          1. Class and Object Variables
          2. Constructors and Destructors
          3. Class Inheritance
        5. The Standard Library and the Python Package Index
        6. References
      6. Chapter 42. Using PHP
        1. Introduction to PHP
          1. Entering and Exiting PHP Mode
          2. Variables
          3. Arrays
          4. Constants
          5. References
          6. Comments
          7. Escape Sequences
          8. Variable Substitution
          9. Operators
          10. Conditional Statements
          11. Special Operators
          12. Switching
          13. Loops
          14. Including Other Files
        2. Basic Functions
          1. Strings
          2. Arrays
          3. Files
          4. Miscellaneous
        3. Handling HTML Forms
        4. Databases
        5. References
      7. Chapter 43. C/C++ Programming Tools for Ubuntu
        1. Programming in C with Linux
        2. Using the C Programming Project Management Tools Provided with Ubuntu
          1. Building Programs with make
          2. Using Makefiles
          3. Using the autoconf Utility to Configure Code
          4. Debugging Tools
        3. Using the GNU C Compiler
        4. Graphical Development Tools
          1. Using the KDevelop Client
          2. The Glade Client for Developing in GNOME
        5. References
      8. Chapter 44. Using Other Popular Programming Languages
        1. Ada
        2. Clojure
        3. COBOL
        4. D
        5. Erlang
        6. Forth
        7. Go
        8. Fortran
        9. Groovy
        10. Haskell
        11. Java
        12. JavaScript
        13. Lisp
        14. Lua
        15. Mono
        16. Ruby
        17. Rust
        18. Scala
        19. Scratch
        20. Vala
        21. References
      9. Chapter 45. Beginning Mobile Development for Android
        1. Introduction to Android
          1. Hardware
          2. Linux Kernel
          3. Libraries
          4. Android Runtime
          5. Application Framework
          6. Applications
        2. Installing the Android SDK
          1. Install Java
          2. Install Eclipse
          3. Install the SDK
          4. Install the ADT Eclipse Plug-In
          5. Install Other Components
          6. Install Virtual Devices
        3. Create Your First Application
        4. References
      10. Chapter 46. Developing for Ubuntu Mobile/Touch
        1. Install the SDK
        2. Create Your First Application
        3. Learn About Ubuntu Design
        4. Study the User Interface Toolkit
        5. References
    17. Index
    18. Where are the Companion Content Files?