You are previewing Ubuntu Unleashed 2017 Edition.
O'Reilly logo
Ubuntu Unleashed 2017 Edition

Book Description

Ubuntu Unleashed 2017 Edition is filled with unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system, including the latest in Ubuntu mobile development. This new edition has been thoroughly updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 16.10 and the forthcoming Ubuntu 17.04 and 17.08. Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. This book will now be part of CUPs (the Content Update Program).
 
Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 16.10 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.

DVD includes the full Ubuntu 16.10 distribution for 64 bit computers (most desktop and notebooks systems today) as well as the complete LibreOffice office suite and hundreds of additional programs and utilities.

Table of Contents

  1. About This E-Book
  2. Title Page
  3. Copyright Page
  4. Contents at a Glance
  5. Table of Contents
  6. About the Author
  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: Getting Started
    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. Internet Relay Chat
      6. Usenet Newsgroups
      7. 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
      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. GNOME3 and Ubuntu GNOME
      5. MATE and Ubuntu MATE
      6. Ubuntu Kylin
      7. References
    6. Chapter 8. Games
      1. Ubuntu Gaming
      2. Installing Proprietary Video Drivers
      3. Steam
      4. 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
      5. Playing Windows Games
      6. References
  14. Part III: System Administration
    1. Chapter 9. Managing Software
      1. Ubuntu Software
      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
        3. Using apt Instead of apt-get
      5. Compiling Software from Source
        1. Compiling from a Tarball
        2. Compiling from Source from the Ubuntu Repositories
      6. Configuration Management
        1. dotdee
      7. Snappy Ubuntu Core
      8. Using Snaps
      9. References
    2. Chapter 10. Command-Line Beginner’s Class
      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 umask
        5. File Permissions with chgrp
        6. Changing File Permissions with chown
        7. Understanding Set User ID, Set Group ID, and Sticky Bit Permissions
        8. Setting Permissions with Access Control Lists
      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 Part 1
      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. Using echo
        7. Finding Files by Searching with find
        8. Searches for a String in Input with grep
        9. Paging Through Output with less
        10. Creating Links Between Files with ln
        11. Finding Files from an Index with locate
        12. Listing Files in the Current Directory with ls
        13. Listing System Information with lsblk, lshw, lsmod, and lspci
        14. Reading Manual Pages with man
        15. Making Directories with mkdir
        16. Moving Files with mv
        17. Renaming Files with rename
        18. Deleting Files and Directories with rm
        19. Sorting the Contents of a File with sort
        20. Printing the Last Lines of a File with tail
        21. Printing the Location of a Command with which
        22. Download Files with wget
      3. References
    4. Chapter 12. Command-Line Master Class Part 2
      1. Redirecting Output and Input
      2. stdin, stdout, stderr, and Redirection
      3. Comparing Files
        1. Finding Differences in Files with diff
        2. Finding Similarities in Files with comm
      4. Limiting Resource Use and Job Control
        1. Listing Processes with ps
        2. Listing Jobs with jobs
        3. Running One or More Tasks in the Background
        4. Moving Jobs to the Background or Foreground with bg and fg
        5. Printing Resource Usage with top
        6. Setting Processes Priority with nice
      5. Combining Commands
        1. Pipes
        2. Combining Commands with Boolean Operators
        3. Running Separate Commands in Sequence
        4. Process Substitution
      6. Using Environment Variables
      7. Using Common Text Editors
        1. Working with nano
        2. Working with vi
        3. Working with emacs
        4. Working with sed and awk
      8. Working with Compressed Files
      9. Using Multiple Terminals with byobu
      10. Polite System Reset Using REISUB
      11. Fixing an Ubuntu System That Will Not Boot
        1. Checking BIOS
        2. Checking GRUB
        3. Reinstalling GRUB
        4. Using Recovery Mode
        5. Reinstalling Ubuntu
      12. Tips and Tricks
        1. Running the Previous Command
        2. Running Any Previous Command
        3. Running a Previous Command that Started with Specific Letters
        4. Running the Same Thing You Just Ran with a Different First Word
        5. Viewing Your History and More
        6. Doing Two or More Things
        7. Using Shortcuts
        8. Confining a Script to a Directory
        9. Using Coreutils
        10. Reading the Contents of the Kernel Ring Buffer with dmesg
      13. References
    5. Chapter 13. 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
    6. Chapter 14. 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
    7. Chapter 15. 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
        9. Starting and Stopping Services Manually
      3. Using Upstart
      4. systemd
      5. Boot Repair
      6. References
    8. Chapter 16. 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
        7. Rotating 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
    9. Chapter 17. 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
    10. Chapter 18. 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
        1. Understanding PPP over Ethernet
        2. Configuring a PPPoE Connection Manually
      12. Configuring Dial-Up Internet Access
      13. Troubleshooting Connection Problems
      14. References
    11. Chapter 19. Remote Access with SSH, Telnet, and VNC
      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
    12. Chapter 20. 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
    13. Chapter 21. 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
    14. Chapter 22. 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 23. 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
      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 24. Apache Web Server Management
      1. About the Apache Web Server
      2. Installing the Apache Server
        1. Starting and Stopping Apache
      3. Runtime Server Configuration Settings
        1. Runtime Configuration Directives
        2. Editing apache2.conf
        3. Apache Multiprocessing Modules
        4. Using .htaccess Configuration Files
      4. File System Authentication and Access Control
        1. Restricting Access with Require
        2. Authentication
        3. Final Words on Access Control
      5. 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
      6. Virtual Hosting
        1. Address-Based Virtual Hosts
        2. Name-Based Virtual Hosts
      7. Logging
      8. HTTPS
      9. References
    3. Chapter 25. 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. HTTPS
      8. References
    4. Chapter 26. Other HTTP Servers
      1. lighttpd
      2. Yaws
      3. Cherokee
      4. Jetty
      5. thttpd
      6. Apache Tomcat
      7. References
    5. Chapter 27. 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 28. 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. Horde
      6. References
    7. Chapter 29. 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 30. 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 31. 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 32. 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 33. Linux Terminal Server Project (LTSP)
      1. Requirements
      2. Installation
      3. Using LTSP
      4. References
    12. Chapter 34. Virtualization on Ubuntu
      1. KVM
      2. VirtualBox
      3. VMware
      4. Xen
      5. References
    13. Chapter 35. 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. Deploy/Install Basics: Public, Private, or Hybrid?
      3. Ubuntu Cloud and OpenStack
        1. Compute Infrastructure (Nova)
        2. Storage Infrastructure (Swift)
        3. Networking Service (Neutron)
        4. Identity Service (Keystone)
        5. Imaging Service (Glance)
        6. Dashboard (Horizon)
        7. Learning More
      4. Juju
        1. Getting Started
        2. Charms
        3. The Juju GUI
        4. Juju Quickstart
        5. Juju on Mac OS X and Windows
        6. Mojo: Continuous Delivery for Juju
      5. Snappy Ubuntu Core
      6. Ubuntu Metal as a Service (MaaS)
      7. Landscape
      8. References
    14. Chapter 36. Managing Sets of Servers
      1. Juju
      2. Puppet
      3. Chef
      4. CFEngine
      5. Ansible
      6. Landscape
      7. References
    15. Chapter 37. 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 38. Using Programming Tools for Ubuntu
      1. Programming 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
        3. Use an IDE or SDK
      5. References
    2. Chapter 39. Opportunistic Development
      1. Version Control Systems
        1. Managing Software Projects with Git
        2. Managing Software Projects with Bazaar
        3. Managing Software Projects with Subversion
        4. Managing Software Projects with Mercurial
      2. Introduction to Opportunistic Development
      3. Launchpad
      4. Ubuntu Make
      5. Creating Snap Packages
      6. Bikeshed and Other Tools
      7. References
    3. Chapter 40. 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. Developing Apps and Scopes
      4. Fixing Bugs and Packaging
      5. Finding Bugs to Fix with Harvest
      6. Masters of the Universe
      7. References
    4. Chapter 41. Helping with Ubuntu Testing and QA
      1. Community Teams
        1. Ubuntu Testing Team
        2. QA Team
      2. Bug Squad
      3. Test Drive
      4. References
    5. Chapter 42. Using Popular Programming Languages
      1. Ada
      2. Clojure
      3. COBOL
      4. D
      5. Dart
      6. Elixir
      7. Erlang
      8. Forth
      9. Go
      10. Fortran
      11. Groovy
      12. Haskell
      13. Java
      14. JavaScript
      15. Lisp
      16. Lua
      17. Mono
      18. OCaml
      19. Perl
      20. PHP
      21. Python
      22. Ruby
      23. Rust
      24. Scala
      25. Scratch
      26. Vala
      27. References
    6. Chapter 43. 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 Android Studio
        1. Install Android Studio
        2. Install SDK Packages
      3. Create Your First Application
      4. References
    7. Chapter 44. Developing for Ubuntu Mobile/Touch
      1. Install the SDK
      2. Create Your First Application
      3. References
  17. Index
  18. Bonus Chapters
    1. Chapter 45. 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
    2. Chapter 46. 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
    3. Bonus Chapter 47. 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
  19. Code Snippets