Home > Store

Ubuntu Unleashed 2014 Edition: Covering 13.10 and 14.04, 9th Edition

Register your product to gain access to bonus material or receive a coupon.

Ubuntu Unleashed 2014 Edition: Covering 13.10 and 14.04, 9th Edition


  • Sorry, this book is no longer in print.
Not for Sale



  • A comprehensive power user's guide to Ubuntu 13.10 -- extensively revamped by a prominent Ubuntu expert
  • Extensive new coverage for intermediate-to-advanced users! Ubuntu for mobile development (e.g. Android), NoSQL databases, virtualization, and much more
  • Thoroughly revised by official Ubuntu Forum admin Matthew Helmke, one of the world's most experienced Linux admins
  • Includes complete, brand-new Ubuntu Linux 13.10 on DVD


  • Copyright 2014
  • Edition: 9th
  • Book
  • ISBN-10: 0-672-33693-6
  • ISBN-13: 978-0-672-33693-5

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

Ubuntu 13.10 on DVD

DVD includes the full Ubuntu 13.10 distribution for Intel x86 computers as well as the complete LibreOffice office suite and hundreds of additional programs and utilities.

Free Kick Start Chapter!

Purchase this book and receive a free Ubuntu 14.04 Kick Start chapter after Ubuntu 14.04 is released. See inside back cover for details



Download the bonus chapter for Ubuntu Unleashed 2014 Edition here


Author's Site

Please visit the author's site at matthewhelmke.net/.

Sample Content

Online Sample Chapter

Managing Software in Ubuntu 13.10 and 14.04

Sample Pages

Download the sample pages (includes Chapter 9 and Index)

Table of Contents

Introduction    1

Licensing    2

Who This Book Is For    3

Those Wanting to Become Intermediate or Advanced Users    3

Sysadmins, Programmers, and DevOps    4

What This Book Contains    5

Conventions Used in This Book    6

Part I  Getting Started

1  Installing Ubuntu and Post-Installation Configuration    9

Before You Begin the Installation    9

Researching Your Hardware Specifications    10

Installation Options    10

32-Bit vs 64-Bit Ubuntu    12

Planning Partition Strategies    12

The Boot Loader    13

Installing from DVD or USB Drive    14

Step-by-Step Installation    14

Installing    15

First Update    19

Shutting Down    19

Finding Programs and Files    20

Software Updater    21

The sudo Command    24

Configuring Software Repositories    25

System Settings    27

Detecting and Configuring a Printer    28

Configuring Power Management in Ubuntu    29

Setting the Time and Date    29

Configuring Wireless Networks    31

Troubleshooting Post-Installation Configuration Problems    33

References    34

2  Background Information and Resources    35

What Is Linux?    35

Why Use Linux?    36

What Is Ubuntu?    38

Ubuntu for Business    39

Ubuntu in Your Home    40

Getting the Most from Ubuntu and Linux Documentation    40

Ubuntu Developers and Documentation    42

Websites and Search Engines    42

Web Search Tips    42

Google Is Your Friend    43

Ubuntu Package Listings    43

Commercial Support    44

Documentation    44

Linux Guides    44

Ubuntu    45

Mailing Lists    46

Ubuntu Project Mailing Lists    46

Internet Relay Chat    47

Part II  Desktop Ubuntu

3  Working with Unity    49

Foundations and the X Server    49

Basic X Concepts    50

Using X    51

Elements of the xorg.conf File    52

Starting X    57

Using a Display Manager    58

Changing Window Managers    58

Using Unity, a Primer    59

The Desktop    59

Customizing and Configuring Unity    65

Power Shortcuts    66

References    67

4  On the Internet    69

Getting Started with Firefox    70

Checking Out Google Chrome and Chromium    71

Choosing an Email Client    73

Mozilla Thunderbird    73

Evolution    74

Other Mail Clients    75

RSS Readers    76

Firefox    76

Liferea    76

Instant Messaging and Video Conferencing

with Empathy    77

Internet Relay Chat    78

Usenet Newsgroups    80

Ubuntu One Cloud Storage    82

References    82

5  Productivity Applications    83

Introducing LibreOffice    85

Other Office Suites for Ubuntu    87

Working with GNOME Office    87

Working with KOffice    88

Other Useful Productivity Software    89

Working with PDF    89

Working with XML and DocBook    89

Working with LaTeX    91

Productivity Applications Written for Microsoft Windows    91

References    92

6  Multimedia Applications    93

Sound and Music    93

Sound Cards    94

Adjusting Volume    95

Sound Formats    96

Listening to Music    97

Buying Music in the Ubuntu One Music Store    99

Graphics Manipulation    100

The GNU Image Manipulation Program    101

Using Scanners in Ubuntu    103

Working with Graphics Formats    103

Capturing Screen Images    105

Other Graphics Manipulation Options    106

Using Digital Cameras with Ubuntu    106

Handheld Digital Cameras    106

Using Shotwell Photo Manager    107

Burning CDs and DVDs in Ubuntu    107

Creating CDs and DVDs with Brasero    108

Creating CDs from the Command Line    109

Creating DVDs from the Command Line    110

Viewing Video    112

TV and Video Hardware    112

Video Formats    114

Viewing Video in Linux    114

Personal Video Recorders    116

Video Editing    116

References    117

7  Other Ubuntu Interfaces    119

Desktop Environment    120

KDE and Kubuntu    121

Xfce and Xubuntu    122

LXDE and Lubuntu    123

GNOME 3 and Ubuntu GNOME    124

Ubuntu Kylin    125

References    126

8  Games    127

Ubuntu Gaming    127

Installing Proprietary Video Drivers    128

Installing Games in Ubuntu    129

Warsow    130

Scorched 3D    130

Frozen Bubble    131

SuperTux    132

Battle for Wesnoth    132

Frets on Fire    134

FlightGear    134

Speed Dreams    134

Games for Kids    134

Commercial Games    135

Playing Windows Games    136

References    136

Part III  System Administration

9  Managing Software    139

Ubuntu Software Center    139

Using Synaptic for Software Management    140

Staying Up-to-Date    142

Working on the Command Line    143

Day-to-Day Usage    144

Finding Software    147

Compiling Software from Source    148

Compiling from a Tarball    148

Compiling from Source from the Ubuntu Repositories    149

Configuration Management    150

dotdee    150

OneConf    151

References    151

10  Command-Line Quickstart    153

What Is the Command Line?    154

Accessing the Command Line    155

Text-Based Console Login    156

Logging Out    157

Logging In and Out from a Remote Computer    157

User Accounts    158

Reading Documentation    160

Using Man Pages    160

Using apropros    160

Using whereis    161

Understanding the Linux File System Hierarchy    161

Essential Commands in /bin and /sbin    162

Configuration Files in /etc    163

User Directories: /home    163

Using the Contents of the /proc Directory to

Interact with the Kernel    164

Working with Shared Data in the /usr Directory    165

Temporary File Storage in the /tmp Directory    166

Accessing Variable Data Files in the /var Directory    166

Navigating the Linux File System    166

Listing the Contents of a Directory with ls    166

Changing Directories with cd    168

Finding Your Current Directory with pwd    169

Working with Permissions    169

Assigning Permissions    170

Directory Permissions    171

Altering File Permissions with chmod    172

File Permissions with chgrp    173

Changing File Permissions with chown    173

Understanding Set User ID and Set Group ID Permissions    173

Working with Files    175

Creating a File with touch    175

Creating a Directory with mkdir    175

Deleting a Directory with rmdir    176

Deleting a File or Directory with rm    177

Moving or Renaming a File with mv    177

Copying a File with cp    178

Displaying the Contents of a File with cat    179

Displaying the Contents of a File with less    179

Using Wildcards and Regular Expressions    179

Working as Root    180

Understanding and Fixing sudo    180

Creating Users    183

Deleting Users    184

Shutting Down the System    184

Rebooting the System    185

Commonly Used Commands and Programs    185

References    186

11  Command-Line Master Class    187

Why Use the Command Line?    188

Using Basic Commands    189

Printing the Contents of a File with cat    190

Changing Directories with cd    191

Changing File Access Permissions with chmod    193

Copying Files with cp    193

Printing Disk Usage with du    194

Finding Files by Searching with find    195

Searches for a String in Input with grep    197

Paging Through Output with less    198

Creating Links Between Files with ln    200

Finding Files from an Index with locate    202

Listing Files in the Current Directory with ls    202

Reading Manual Pages with man    204

Making Directories with mkdir    205

Moving Files with mv    205

Listing Processes with ps    206

Deleting Files and Directories with rm    206

Printing the Last Lines of a File with tail    207

Printing Resource Usage with top    207

Using echo    209

Printing the Location of a Command with which    210

Redirecting Output and Input    210

stdin, stdout, sdterr, and Redirection    211

Comparing Files    212

Finding Differences in Files with diff    213

Finding Similarities in Files with comm    213

Combining Commands    214

Pipes    214

Running One or More Tasks in the Background    216

Combining Commands with Boolean Operators    216

Running Separate Commands in Sequence    217

Using Environment Variables    217

Using Common Text Editors    220

Working with nano    222

Working with vi    222

Working with emacs    223

Working with sed and awk    225

Working with Compressed Files    227

Using Multiple Terminals with byobu    227

Polite System Reset using REISUB    229

Limiting Resource Use    230

References    231

12  Managing Users    233

User Accounts    233

The Super User/Root User    234

User IDs and Group IDs    236

File Permissions    236

Managing Groups    237

Group Listing    237

Group Management Tools    238

Managing Users    240

User Management Tools    240

Adding New Users    242

Monitoring User Activity on the System    246

Managing Passwords    246

System Password Policy    246

The Password File    247

Shadow Passwords    248

Managing Password Security for Users    250

Changing Passwords in a Batch    251

Granting System Administrator Privileges to

Regular Users    251

Temporarily Changing User Identity with the su Command    251

Granting Root Privileges on Occasion: The sudo Command    253

Disk Quotas    256

Implementing Quotas    257

Manually Configuring Quotas    257

Related Ubuntu Commands    258

References    259

13  Automating Tasks and Shell Scripting    261

Scheduling Tasks    261

Using at and batch to Schedule Tasks for Later    261

Using cron to Run Jobs Repeatedly    264

Using rtcwake to Wake Your Computer from

Sleep Automatically    266

Basic Shell Control    268

The Shell Command Line    269

Shell Pattern-Matching Support    270

Redirecting Input and Output    271

Piping Data    272

Background Processing    272

Writing and Executing a Shell Script    273

Running the New Shell Program    274

Storing Shell Scripts for System-wide Access    275

Interpreting Shell Scripts Through Specific Shells    276

Using Variables in Shell Scripts    277

Assigning a Value to a Variable    278

Accessing Variable Values    278

Positional Parameters    278

A Simple Example of a Positional Parameter    279

Using Positional Parameters to Access and Retrieve Variables

from the Command Line    280

Using a Simple Script to Automate Tasks    280

Built-In Variables    282

Special Characters    283

Using Double Quotes to Resolve Variables in Strings

with Embedded Spaces    284

Using Single Quotes to Maintain Unexpanded Variables    284

Using the Backslash as an Escape Character    285

Using the Backtick to Replace a String with Output    286

Comparison of Expressions in pdksh and bash    286

Comparing Expressions with tcsh    291

The for Statement    295

The while Statement    297

The until Statement    298

The repeat Statement (tcsh)    299

The select Statement (pdksh)    299

The shift Statement    300

The if Statement    300

The case Statement    302

The break and exit Statements    304

Using Functions in Shell Scripts    304

References    305

14  The Boot Process    307

Running Services at Boot    307

Beginning the Boot Loading Process    308

Loading the Linux Kernel    309

System Services and Runlevels    310

Runlevel Definitions    310

Booting into the Default Runlevel    311

Understanding init Scripts and the Final Stage of Initialization    311

Controlling Services at Boot with Administrative Tools    312

Changing Runlevels    312

Troubleshooting Runlevel Problems    313

Starting and Stopping Services Manually    314

Using Upstart    315

References    316

15  System-Monitoring Tools    317

Console-Based Monitoring    317

Using the kill Command to Control Processes    319

Using Priority Scheduling and Control    320

Displaying Free and Used Memory with free    323

Disk Space    323

Disk Quotas    324

Checking Log Files    324

Graphical Process and System Management Tools    326

System Monitor    326

Conky    328

Other    333

KDE Process- and System-Monitoring Tools    333

Enterprise Server Monitoring    333

Landscape    334

Other    334

References    334

16  Backing Up    335

Choosing a Backup Strategy    335

Why Data Loss Occurs    336

Assessing Your Backup Needs and Resources    337

Evaluating Backup Strategies    339

Making the Choice    342

Choosing Backup Hardware and Media    342

Removable Storage Media    342

CD-RW and DVD+RW/-RW Drives    343

Network Storage    343

Tape Drive Backup    343

Cloud Storage    344

Using Backup Software    344

tar: The Most Basic Backup Tool    345

The GNOME File Roller    347

The KDE ark Archiving Tool    348

Déjà Dup    348

Back In Time    350

Unison    352

Using the Amanda Backup Application    352

Alternative Backup Software    353

Copying Files    354

Copying Files Using tar    354

Compressing, Encrypting, and Sending tar Streams    355

Copying Files Using cp    355

Copying Files Using mc    356

Using rsync    356

Version Control for Configuration Files    358

System Rescue    360

The Ubuntu Rescue Disc    361

Restoring the GRUB2 Boot Loader    361

Saving Files from a Nonbooting Hard Drive    362

References    362

17  Networking    363

Laying the Foundation: The localhost Interface    364

Checking for the Availability of the Loopback Interface    364

Configuring the Loopback Interface Manually    364

Checking Connections with ping, traceroute, and mtr    366

Networking with TCP/IP    368

TCP/IP Addressing    369

Using IP Masquerading in Ubuntu    371

Ports    372

IPv6 Basics    372

Network Organization    375

Subnetting    375

Subnet Masks    376

Broadcast, Unicast, and Multicast Addressing    376

Hardware Devices for Networking    377

Network Interface Cards    377

Network Cable    379

Hubs and Switches    380

Routers and Bridges    381

Initializing New Network Hardware    381

Using Network Configuration Tools    383

Command-Line Network Interface Configuration    384

Network Configuration Files    389

Using Graphical Configuration Tools    391

Dynamic Host Configuration Protocol    393

How DHCP Works    393

Activating DHCP at Installation and Boot Time    394

DHCP Software Installation and Configuration    395

Using DHCP to Configure Network Hosts    397

Other Uses for DHCP    399

Wireless Networking    399

Support for Wireless Networking in Ubuntu    399

Advantages of Wireless Networking    401

Choosing from Among Available Wireless Protocols    401

Beyond the Network and onto the Internet    402

Common Configuration Information    402

Configuring Digital Subscriber Line Access    404

Understanding PPP over Ethernet    404

Configuring a PPPoE Connection Manually    405

Configuring Dial-Up Internet Access    406

Troubleshooting Connection Problems    407

References    408

18  Remote Access with SSH and Telnet    409

Setting Up a Telnet Server    409

Telnet Versus SSH    411

Setting Up an SSH Server    411

SSH Tools    411

Using scp to Copy Individual Files Between Machines    412

Using sftp to Copy Many Files Between Machines    413

Using ssh-keygen to Enable Key-Based Logins    413

Virtual Network Computing    415

References    417

19  Securing Your Machines    419

Understanding Computer Attacks    419

Assessing Your Vulnerability    421

Protecting Your Machine    422

Securing a Wireless Network    423

Passwords and Physical Security    423

Configuring and Using Tripwire    424

Devices    425

Viruses    425

Configuring Your Firewall    426

AppArmor    430

Forming a Disaster Recovery Plan    432

References    433

20  Performance Tuning    435

Hard Disk    435

Using the BIOS and Kernel to Tune the Disk Drives    436

The hdparm Command    437

File System Tuning    438

The tune2fs Command    438

The e2fsck Command    439

The badblocks Command    439

Disabling File Access Time    439

Kernel    440

Apache    441

MySQL    442

Measuring Key Buffer Usage    442

Using the Query Cache    444

Miscellaneous Tweaks    445

Query Optimization    446

References    446

21  Kernel and Module Management    447

The Linux Kernel    448

The Linux Source Tree    449

Types of Kernels    451

Managing Modules    452

When to Recompile    454

Kernel Versions    455

Obtaining the Kernel Sources    456

Patching the Kernel    457

Compiling the Kernel    458

Using xconfig to Configure the Kernel    461

Creating an Initial RAM Disk Image    464

When Something Goes Wrong    465

Errors During Compile    465

Runtime Errors, Boot Loader Problems, and Kernel Oops    466

References    466

Part IV  Ubuntu as a Server

22  Sharing Files and Printers    469

Using the Network File System    470

Installing and Starting or Stopping NFS    470

NFS Server Configuration    470

NFS Client Configuration    472

Putting Samba to Work    473

Manually Configuring Samba with /etc/samba/smb.conf    474

Testing Samba with the testparm Command    477

Starting, Stopping, and Restarting the smbd Daemon    478

Mounting Samba Shares    479

Configuring Samba Using SWAT    480

Network and Remote Printing with Ubuntu    483

Creating Network Printers    484

Using the Common UNIX Printing System GUI    486

Avoiding Printer Support Problems    488

References    489

23  Apache Web Server Management    491

About the Apache Web Server    491

Installing the Apache Server    492

Installing from the Ubuntu Repositories    493

Building the Source Yourself    494

Starting and Stopping Apache    497

Starting the Apache Server Manually    497

Using /etc/init.d/apache2    498

Runtime Server Configuration Settings    499

Runtime Configuration Directives    500

Editing apache2.conf    500

Apache Multiprocessing Modules    503

Using .htaccess Configuration Files    503

File System Authentication and Access Control    505

Restricting Access with allow and deny    506

Authentication    507

Final Words on Access Control    509

Apache Modules    510

mod_access    510

mod_alias    511

mod_asis    511

mod_auth    511

mod_auth_anon    512

mod_auth_dbm    512

mod_auth_digest    512

mod_autoindex    512

mod_cgi    512

mod_dir and mod_env    512

mod_expires    513

mod_headers    513

mod_include    513

mod_info and mod_log_config    513

mod_mime and mod_mime_magic    513

mod_negotiation    513

mod_proxy    514

mod_rewrite    514

mod_setenvif    514

mod_speling    514

mod_status    514

mod_ssl    514

mod_unique_id    515

mod_userdir    515

mod_usertrack    515

mod_vhost_alias    515

Virtual Hosting    515

Address-Based Virtual Hosts    515

Name-Based Virtual Hosts    516

Logging    517

References    519

24  Nginx Web Server Management    521

About the Nginx Web Server    521

Installing the Nginx Server    523

Installing from the Ubuntu Repositories    523

Building the Source Yourself    524

Configuring the Nginx Server    524

Virtual Hosting    527

Setting Up PHP    528

Adding and Configuring Modules    530

References    530

25  Other HTTP Servers    531

lighttpd    531

Yaws    532

Cherokee    533

Jetty    533

thttpd    534

Apache Tomcat    534

References    534

26  Remote File Serving with FTP    535

Choosing an FTP Server    535

Choosing an Authenticated or Anonymous Server    536

Ubuntu FTP Server Packages    536

Other FTP Servers    536

Installing FTP Software    537

The FTP User    538

Configuring the Very Secure FTP Server    540

Controlling Anonymous Access    541

Other vsftpd Server Configuration Files    542

Using the ftphosts File to Allow or Deny FTP Server Connection    543

References    544

27  Handling Email    545

How Email Is Sent and Received    545

The Mail Transport Agent    546

Choosing an MTA    548

The Mail Delivery Agent    548

The Mail User Agent    549

Basic Postfix Configuration and Operation    550

Configuring Masquerading    552

Using Smart Hosts    553

Setting Message Delivery Intervals    553

Mail Relaying    554

Forwarding Email with Aliases    554

Using Fetchmail to Retrieve Mail    555

Installing Fetchmail    555

Configuring Fetchmail    555

Choosing a Mail Delivery Agent    559

Procmail    559

Spamassassin    559

Squirrelmail    560

Virus Scanners    560

Autoresponders    560

Alternatives to Microsoft Exchange Server    560

Microsoft Exchange Server/Outlook Client    561

CommuniGate Pro    561

Oracle Beehive    562

Bynari    562

Open-Xchange    562

phpgroupware    562

PHProjekt    562

Horde    562

References    563

28  Proxying, Reverse Proxying, and Virtual Private Networks (VPN)    565

What Is a Proxy Server?    565

Installing Squid    566

Configuring Clients    566

Access Control Lists    567

Specifying Client IP Addresses    571

Sample Configurations    572

Virtual Private Networks (VPN)    574

Setting Up a VPN Client    575

Setting Up a VPN Server    577

References    579

29  Administering Relational Database Services    581

A Brief Review of Database Basics    582

How Relational Databases Work    584

Understanding SQL Basics    586

Creating Tables    586

Inserting Data into Tables    587

Retrieving Data from a Database    588

Choosing a Database: MySQL Versus PostgreSQL    590

Speed    590

Data Locking    591

ACID Compliance in Transaction Processing to

Protect Data Integrity    591

SQL Subqueries    592

Procedural Languages and Triggers    592

Configuring MySQL    593

Setting a Password for the MySQL Root User    594

Creating a Database in MySQL    594

Configuring PostgreSQL    596

Initializing the Data Directory in PostgreSQL    596

Creating a Database in PostgreSQL    597

Creating Database Users in PostgreSQL    598

Deleting Database Users in PostgreSQL    598

Granting and Revoking Privileges in PostgreSQL    599

Database Clients    599

SSH Access to a Database    600

Local GUI Client Access to a Database    601

Web Access to a Database    602

The MySQL Command-Line Client    603

The PostgreSQL Command-Line Client    604

Graphical Clients    605

References    605

30  NoSQL Databases    607

Key/Value Stores    610

Berkeley DB    610

Cassandra    611

Memcached and MemcacheDB    611

Redis    612

Riak    612

Document Stores    612

CouchDB    613

MongoDB    614

BaseX    614

Wide Column Stores    615

BigTable    615

HBase    615

Graph Stores    616

Neo4j    616

OrientDB    616

HyperGraphDB    616

FlockDB    617

References    617

31  Lightweight Directory Access Protocol (LDAP)    619

Configuring the Server    620

Creating Your Schema    620

Populating Your Directory    622

Configuring Clients    624

Evolution    624

Thunderbird    625

Administration    625

References    626

32  Linux Terminal Server Project (LTSP)    627

Requirements    628

Installation    631

Using LTSP    632

References    633

33  Virtualization on Ubuntu    635

KVM    637

VirtualBox    641

VMware    643

Xen    643

References    643

34  Ubuntu in the Cloud    645

Why a Cloud?    646

Software as a Service (SaaS)    647

Platform as a Service (PaaS)    647

Infrastructure as a Service (IaaS)    647

Metal as a Service (MaaS)    647

Before You Do Anything    648

Ubuntu Cloud and Eucalyptus    648

Deploy/Install Basics: Public or Private?    650

Public    650

Private    651

A euca2ools Primer    654

Ubuntu Cloud and OpenStack    656

Compute Infrastructure (Nova)    656

Storage Infrastructure (Swift)    657

Imaging Service (Glance)    657

Installation    657

Creating an Image    667

Instance Management    670

Storage Management    671

Network Management    671

An OpenStack Commands Primer    672

Learning More    672

Juju    672

Getting Started    673

Charms    676

The Juju GUI    677

Juju on Mac OS X    678

Ubuntu Metal as a Service (MaaS)    678

Landscape    679

References    679

35  Managing Sets of Servers    681

Juju    681

Puppet    682

Chef    682

CFEngine    683

Ansible    683

Landscape    683

References    683

36  Name Serving with the Domain Name System (DNS)    685

Understanding Domain Names    687

DNS Servers    687

DNS Records    688

Setting Up a DNS Server with BIND    691

References    693

Part V  Programming Linux

37  Opportunistic Development    695

Version Control Systems    696

Managing Software Projects with Subversion    696

Managing Software Projects with Bazaar    697

Managing Software Projects with Mercurial    698

Managing Software Projects with Git    699

Introduction to Opportunistic Development    700

Launchpad    701

Quickly    703

Ground Control    707

Bikeshed and Other Tools    711

References    713

38  Helping with Ubuntu Development    715

Introduction to Ubuntu Development    716

Setting Up Your Development System    717

Install Basic Packages and Configure    717

Create a Launchpad Account    718

Set Up Your Environment to Work with Launchpad    718

Fixing Bugs and Packaging    720

Finding Bugs to Fix with Harvest    723

Masters of the Universe    723

References    723

39  Helping with Ubuntu Testing and QA    725

Community Teams    725

Ubuntu Testing Team    726

QA Team    726

Bug Squad    727

Test Drive    727

References    730

40  Using Perl    731

Using Perl with Linux    731

Perl Versions    732

A Simple Perl Program    732

Perl Variables and Data Structures    734

Perl Variable Types    735

Special Variables    735

Operators    736

Comparison Operators    736

Compound Operators    737

Arithmetic Operators    737

Other Operators    738

Special String Constants    738

Conditional Statements: if/else and unless    739

if    739

unless    740

Looping    740

for    740

foreach    741

while    741

until    742

last and next    742

do    while and do    until    742

Regular Expressions    743

Access to the Shell    744

Modules and CPAN    745

Code Examples    745

Sending Mail    745

Purging Logs    747

Posting to Usenet    748

One-Liners    749

Command-Line Processing    750

References    750

41  Using Python    753

Python on Linux    754

The Basics of Python    755

Numbers    755

More on Strings    757

Lists    760

Dictionaries    762

Conditionals and Looping    763

Functions    765

Object Orientation    766

Class and Object Variables    767

Constructors and Destructors    768

Class Inheritance    769

The Standard Library and the Python Package Index    771

References    771

42  Using PHP    773

Introduction to PHP    774

Entering and Exiting PHP Mode    774

Variables    774

Arrays    776

Constants    778

References    778

Comments    779

Escape Sequences    779

Variable Substitution    780

Operators    781

Conditional Statements    783

Special Operators    784

Switching    785

Loops    787

Including Other Files    789

Basic Functions    790

Strings    790

Arrays    793

Files    795

Miscellaneous    797

Handling HTML Forms    801

Databases    801

References    804

43  C/C++ Programming Tools for Ubuntu    805

Programming in C with Linux    806

Using the C Programming Project Management

Tools Provided with Ubuntu    807

Building Programs with make    807

Using Makefiles    807

Using the autoconf Utility to Configure Code    809

Debugging Tools    810

Using the GNU C Compiler    811

Graphical Development Tools    812

Using the KDevelop Client    812

The Glade Client for Developing in GNOME    813

References    814

Part VI  Appendices

44  Using Other Popular Programming Languages    817

Ada    818

Clojure    819

COBOL    819

D    820

Erlang    820

Forth    821

Go    821

Fortran    822

Groovy    822

Haskell    822

Java    823

JavaScript    823

Lisp    824

Lua    824

Mono    825

Ruby    825

Rust    826

Scala    826

Scratch    826

Vala    827

References    827

45  Beginning Mobile Development for Android    829

Introduction to Android    830

Hardware    830

Linux Kernel    830

Libraries    830

Android Runtime    830

Application Framework    830

Applications    831

Installing the Android SDK    831

Install Java    831

Install Eclipse    831

Install the SDK    831

Install the ADT Eclipse Plug-In    832

Install Other Components    832

Install Virtual Devices    833

Create Your First Application    834

References    835

46  Developing for Ubuntu Mobile/Touch    837

Install the SDK    838

Create Your First Application    838

Learn About Ubuntu Design    839

Study the User Interface Toolkit    839

References    840

Index    841


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020