O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Ubuntu Unleashed 2019 Edition: Covering 18.04, 18.10, 19.04, 13/e

Book Description

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

Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu installation, configuration, productivity, 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 navigation via Unity Dash, wireless networking, VPNs, software repositories, new NoSQL database options, virtualization and cloud services, new development tools, monitoring, troubleshooting, and more.

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. Contents at a Glance
  5. Table of Contents
  6. About This E-Book
  7. About the Author
  8. Dedication
  9. Acknowledgments
  10. Register Your Book
  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. 1 Installing Ubuntu and Post-Installation Configuration
      1. Before You Begin the Installation
        1. Researching Your Hardware Specifications
        2. Installation Options
        3. 32-Bit Versus 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. 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 and Books
        7. Ubuntu
      9. Mailing Lists
        1. Ubuntu Project Mailing Lists
      10. Internet Relay Chat
  13. Part II Desktop Ubuntu
    1. 3 Working with GNOME
      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 GNOME: A Primer
      3. References
    2. 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. Internet Relay Chat
      5. Usenet Newsgroups
      6. References
    3. 5 Productivity Applications
      1. Introducing LibreOffice
      2. Other Useful Productivity Software
        1. Working with PDFs
        2. Working with XML and DocBook
        3. Working with LaTeX
      3. Productivity Applications Written for Microsoft Windows
      4. References
    4. 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. 7 Other Ubuntu Interfaces
      1. Desktop Environment
      2. KDE and Kubuntu
      3. Xfce and Xubuntu
      4. LXDE and Lubuntu
      5. MATE and Ubuntu MATE
      6. Ubuntu Budgie
      7. Ubuntu Kylin
      8. References
    6. 8 Games
      1. Ubuntu Gaming
      2. Installing Proprietary Video Drivers
      3. Online Game Sources
        1. Steam
        2. GOG.com
        3. Humble
        4. itch.io
        5. LGDB
        6. Game Jolt
      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. 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 APT 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. Ubuntu Core
      8. Using Snaps
      9. References
    2. 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. 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, lspci, and neofetch
        14. Reading Manual Pages with man
        15. Making Directories with mkdir
        16. Moving Files with mv
        17. Deleting Files and Directories with rm
        18. Sorting the Contents of a File with sort
        19. Printing the Last Lines of a File with tail
        20. Printing the Location of a Command with which
        21. Downloading Files with wget
      3. References
    4. 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 Process Priority with nice
      5. Combining Commands
        1. Pipes
        2. Combining Commands with Boolean Operators
        3. Running Separate Commands in Sequence
        4. Process Substitution
      6. Executing Jobs in Parallel
      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. Doing a Polite System Reset Using REISUB
      12. Fixing an Ubuntu System that Will Not Boot
        1. Checking BIOS
        2. Checking GRUB
        3. Reinstalling GRUB
        4. Using Recovery Mode
        5. Reinstalling Ubuntu
      13. 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
      14. References
    5. 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. 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. Assigning a Value to a Variable
        5. Accessing Variable Values
        6. Positional Parameters
        7. A Simple Example of a Positional Parameter
        8. Using Positional Parameters to Access and Retrieve Variables from the Command Line
        9. Using a Simple Script to Automate Tasks
        10. Built-in Variables
        11. Special Characters
        12. Comparison of Expressions in pdksh and bash
        13. Comparing Expressions with tcsh
        14. The for Statement
        15. The while Statement
        16. The until Statement
        17. The repeat Statement (tcsh)
        18. The select Statement (pdksh)
        19. The shift Statement
        20. The if Statement
        21. The expr Statement
        22. The case Statement
        23. The break and exit Statements
        24. Using Functions in Shell Scripts
      4. References
    7. 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
      3. Starting and Stopping Services Manually
      4. Using Upstart
      5. Using systemd
      6. Boot-Repair
      7. References
    8. 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 Graphical Process- and System-Monitoring Tools
      3. KDE Process- and System-Monitoring Tools
      4. Enterprise Server Monitoring
      5. References
    9. 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 Backups
        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. Amanda
        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. 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. Choosing from Among Available Wireless Protocols
      10. Beyond the Network and onto the Internet
      11. Common Configuration Information
        1. Configuring Digital Subscriber Line Access
        2. Understanding PPP over Ethernet
        3. Configuring a PPPoE Connection Manually
        4. Configuring Dial-up Internet Access
        5. Troubleshooting Connection Problems
      12. References
    11. 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. 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. Securing Devices
      4. Viruses
      5. Configuring Your Firewall
      6. AppArmor
      7. Forming a Disaster Recovery Plan
      8. References
    13. 21 Performance Tuning
      1. Storage Disk
        1. Linux File Systems
        2. Using the BIOS and Kernel to Tune the Disk Drives
        3. The hdparm Command
        4. File System Tuning
        5. The tune2fs Command
        6. The e2fsck Command
        7. The badblocks Command
        8. 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. 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. 23 Sharing Files and Printers
      1. Using 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 CUPS GUI
        3. Avoiding Printer Support Problems
      4. References
    2. 24 Common Web Server Stacks
      1. LAMP
      2. LEMP
      3. MEAN
      4. References
    3. 25 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
    4. 26 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. Reference
    5. 27 Other HTTP Servers
      1. lighttpd
      2. Yaws
      3. Cherokee
      4. Jetty
      5. thttpd
      6. Apache Tomcat
      7. WildFly
      8. References
    6. 28 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
    7. 29 NoSQL Databases
      1. Key/Value Stores
        1. Berkeley DB
        2. Cassandra
        3. etcd
        4. Memcached and MemcacheDB
        5. Redis
        6. Riak
        7. Scylla
      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
    8. 30 Virtualization on Ubuntu
      1. KVM
      2. VirtualBox
      3. VMware
      4. Xen
      5. References
    9. 31 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. Things to Consider Before You Make any Decisions
        6. Deploy/Install Basics: Public, Private, or Hybrid?
      2. 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
      3. Juju
        1. Mojo: Continuous Delivery for Juju
      4. Ubuntu Core
      5. Ubuntu Metal as a Service (MaaS)
      6. Landscape
      7. References
    10. 32 Containers and Ubuntu
      1. LXC and LXD
      2. Docker
      3. Kubernetes
      4. CoreOS and Canonical
      5. References
    11. 33 Managing Sets of Servers
      1. Juju
      2. Puppet
      3. Chef
      4. CFEngine
      5. Ansible
      6. Landscape
      7. References
    12. 34 Remote File Serving with FTP
      1. Choosing an FTP Server
        1. Choosing an Authenticated or Anonymous Server
        2. Ubuntu FTP Server Packages
      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
    13. 35 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. References
    14. 36 Proxying, Reverse Proxying, and Virtual Private Networks (VPNs)
      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 (VPNs)
        1. Setting Up a VPN Client
        2. Setting Up a VPN Server
      8. References
    15. 37 Lightweight Directory Access Protocol (LDAP)
      1. Configuring the Server
        1. Creating Your Schema
        2. Populating Your Directory
      2. Configuring Clients
      3. LDAP Administration
      4. References
    16. 38 Linux Terminal Server Project (LTSP)
      1. LTSP Requirements
      2. LTSP Installation
      3. Using LTSP
      4. References
    17. 39 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. 40 Using 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 the autoconf Utility to Configure Code
        3. 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. IDEs and SDKs
      5. References
    2. 41 Using Ubuntu for Opportunistic Software 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. 42 Helping with Ubuntu Development
      1. Introduction to Ubuntu Development
      2. Setting Up Your Development System
        1. Install Basic Packages and Configure
        2. Creating a Launchpad Account
        3. Setting 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
    4. 43 Helping with Ubuntu Testing and QA
      1. Community Teams
        1. Ubuntu Testing Team
        2. Ubuntu QA Team
      2. Bug Squad
      3. References
    5. 44 Using Popular Programming Languages
      1. Ada
      2. Clojure
      3. COBOL
      4. D
      5. Dart
      6. Elixir
      7. Erlang
      8. Forth
      9. Fortran
      10. Go
      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. 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 Android Studio
        1. Installing Android Studio
        2. Installing SDK Packages
      3. Creating Your First Application
      4. References
  17. Index
  18. Part VI Bonus Chapters
    1. 46 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. Perl 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. 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
    3. 48 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
  19. Code Snippets