Home > Store

Ubuntu Unleashed 2015 Edition: Covering 14.10 and 15.04, 10th Edition

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

Ubuntu Unleashed 2015 Edition: Covering 14.10 and 15.04, 10th Edition


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



  • The book is thorough revised covers the most recent release. It focuses on the most important technological and features in Ubuntu for intermediate and advanced users including notes on the latest technological advancements in Ubuntu. 
  • New to this edition is expanded coverage of Ubuntu for Ubuntu touch and mobile development
  • Includes detailed information on the latest developments in and improvements to Ubuntu Linux
  • Includes a DVD with a full Ubuntu Linux distribution 


  • Copyright 2015
  • Edition: 10th
  • Book
  • ISBN-10: 0-672-33837-8
  • ISBN-13: 978-0-672-33837-3

Ubuntu Unleashed 2015 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 14.10 while including tons of information that will continue to apply to future editions.

Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 14.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.

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 14.10 on DVD

DVD includes the full Ubuntu 14.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.

Free Kick Start Chapter!

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



Please download the bonus chapter associated with Ubuntu Unleashed 2015 Edition here.


Author's Site

Please visit the author's site here

Companion Site

Please visit the website associated with Ubuntu Unleashed at informit.com/sams.

Sample Content

Online Sample Chapter

Managing Software in Ubuntu

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    13

The Boot Loader    13

Installing from DVD or USB Drive    14

Step-by-Step Installation    14

Installing    15

First Update    20

Shutting Down    20

Finding Programs and Files    21

Software Updater    22

The sudo Command    25

Configuring Software Repositories    26

System Settings    28

Detecting and Configuring a Printer    29

Configuring Power Management in Ubuntu    29

Setting the Time and Date    30

Configuring Wireless Networks    32

Troubleshooting Post-Installation Configuration Problems    33

References    34

2  Background Information and Resources    35

What Is Linux?    35

Why Use Linux?    37

What Is Ubuntu?    39

Ubuntu for Business    40

Ubuntu in Your Home    41

Getting the Most from Ubuntu and Linux Documentation    41

Ubuntu Developers and Documentation    43

Websites and Search Engines    43

Web Search Tips    43

Google Is Your Friend    44

Ubuntu Package Listings    44

Commercial Support    44

Documentation    45

Linux Guides    45

Ubuntu    46

Mailing Lists    46

Ubuntu Project Mailing Lists    47

Internet Relay Chat    48

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    64

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

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    129

Scorched 3D    130

Frozen Bubble    131

SuperTux    131

Battle for Wesnoth    133

Frets on Fire    133

FlightGear    134

Speed Dreams    134

Games for Kids    134

Commercial Games    135

Steam    136

Playing Windows Games    136

References    137

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    191

Changing Directories with cd    191

Changing File Access Permissions with chmod    193

Copying Files with cp    194

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

Deleting Files and Directories with rm    206

Sorting the Contents of a File with sort    206

Printing the Last Lines of a File with tail    208

Using echo    209

Printing the Location of a Command with which    209

Redirecting Output and Input    209

stdin, stdout, sdterr, and Redirection    211

Comparing Files    212

Finding Differences in Files with diff    212

Finding Similarities in Files with comm    213

Limiting Resource Use and Job Control    213

Listing Processes with ps    213

Listing Jobs with jobs    214

Running One or More Tasks in the Background    215

Moving Jobs to the Background or Foreground with bg and fg    216

Printing Resource Usage with top    216

Setting Processes Priority with nice    219

Combining Commands    220

Pipes    220

Combining Commands with Boolean Operators    222

Running Separate Commands in Sequence    222

Using Environment Variables    222

Using Common Text Editors    226

Working with nano    227

Working with vi    228

Working with emacs    229

Working with sed and awk    230

Working with Compressed Files    232

Using Multiple Terminals with byobu    233

Polite System Reset Using REISUB    234

Tips and Tricks    235

Running the Previous Command    235

Running Any Previous Command    236

Running a Previous Command That Started with

Specific Letters    236

Running the Same Thing You Just Ran with a Different

First Word    236

Viewing Your History and More    236

Do Two or More Things    236

Shortcuts    237

Coreutils    237

References    237

12  Managing Users    239

User Accounts    239

The Super User/Root User    240

User IDs and Group IDs    242

File Permissions    242

Managing Groups    243

Group Listing    243

Group Management Tools    245

Managing Users    246

User Management Tools    246

Adding New Users    248

Monitoring User Activity on the System    252

Managing Passwords    253

System Password Policy    253

The Password File    253

Shadow Passwords    254

Managing Password Security for Users    257

Changing Passwords in a Batch    257

Granting System Administrator Privileges to

Regular Users    258

Temporarily Changing User Identity with the su Command    258

Granting Root Privileges on Occasion: The sudo Command    260

Disk Quotas    263

Implementing Quotas    263

Manually Configuring Quotas    264

Related Ubuntu Commands    265

References    265

13  Automating Tasks and Shell Scripting    267

Scheduling Tasks    267

Using at and batch to Schedule Tasks for Later    267

Using cron to Run Jobs Repeatedly    270

Using rtcwake to Wake Your Computer from Sleep

Automatically    272

Basic Shell Control    274

The Shell Command Line    275

Shell Pattern-Matching Support    276

Redirecting Input and Output    277

Piping Data    278

Background Processing    278

Writing and Executing a Shell Script    279

Running the New Shell Program    280

Storing Shell Scripts for System-Wide Access    281

Interpreting Shell Scripts Through Specific Shells    282

Using Variables in Shell Scripts    283

Assigning a Value to a Variable    284

Accessing Variable Values    284

Positional Parameters    284

A Simple Example of a Positional Parameter    285

Using Positional Parameters to Access and Retrieve Variables from the Command Line    286

Using a Simple Script to Automate Tasks    286

Built-In Variables    288

Special Characters    289

Using Double Quotes to Resolve Variables in Strings with Embedded Spaces    290

Using Single Quotes to Maintain Unexpanded Variables    290

Using the Backslash as an Escape Character    291

Using the Backtick to Replace a String with Output    292

Comparison of Expressions in pdksh and bash    292

Comparing Expressions with tcsh    297

The for Statement    301

The while Statement    303

The until Statement    304

The repeat Statement (tcsh)    305

The select Statement (pdksh)    305

The shift Statement    306

The if Statement    306

The case Statement    308

The break and exit Statements    310

Using Functions in Shell Scripts    310

References    311

14  The Boot Process    313

Running Services at Boot    313

Beginning the Boot Loading Process    314

Loading the Linux Kernel    315

System Services and Runlevels    316

Runlevel Definitions    316

Booting into the Default Runlevel    317

Understanding init Scripts and the Final Stage of Initialization    317

Controlling Services at Boot with Administrative Tools    318

Changing Runlevels    318

Troubleshooting Runlevel Problems    319

Starting and Stopping Services Manually    320

Using Upstart    321

systemd    322

Boot Repair    322

References    322

15  System-Monitoring Tools    323

Console-Based Monitoring    323

Using the kill Command to Control Processes    325

Using Priority Scheduling and Control    326

Displaying Free and Used Memory with free    327

Disk Space    328

Disk Quotas    329

Checking Log Files    329

Rotating Log Files    331

Graphical Process and System Management Tools    336

System Monitor    336

Conky    338

Other    342

KDE Process- and System-Monitoring Tools    343

Enterprise Server Monitoring    343

Landscape    343

Other    343

References    344

16  Backing Up    345

Choosing a Backup Strategy    345

Why Data Loss Occurs    346

Assessing Your Backup Needs and Resources    347

Evaluating Backup Strategies    349

Making the Choice    352

Choosing Backup Hardware and Media    352

Removable Storage Media    352

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

Network Storage    353

Tape Drive Backup    353

Cloud Storage    354

Using Backup Software    354

tar: The Most Basic Backup Tool    355

The GNOME File Roller    357

The KDE ark Archiving Tool    358

Déjà Dup    358

Back In Time    360

Unison    362

Using the Amanda Backup Application    362

Alternative Backup Software    363

Copying Files    364

Copying Files Using tar    364

Compressing, Encrypting, and Sending tar Streams    365

Copying Files Using cp    365

Copying Files Using mc    366

Using rsync    366

Version Control for Configuration Files    368

System Rescue    370

The Ubuntu Rescue Disc    371

Restoring the GRUB2 Boot Loader    371

Saving Files from a Nonbooting Hard Drive    372

References    372

17  Networking    373

Laying the Foundation: The localhost Interface    374

Checking for the Availability of the Loopback Interface    374

Configuring the Loopback Interface Manually    374

Checking Connections with ping, traceroute, and mtr    376

Networking with TCP/IP    378

TCP/IP Addressing    379

Using IP Masquerading in Ubuntu    381

Ports    382

IPv6 Basics    382

Network Organization    385

Subnetting    385

Subnet Masks    386

Broadcast, Unicast, and Multicast Addressing    386

Hardware Devices for Networking    387

Network Interface Cards    387

Network Cable    389

Hubs and Switches    390

Routers and Bridges    391

Initializing New Network Hardware    391

Using Network Configuration Tools    393

Command-Line Network Interface Configuration    394

Network Configuration Files    399

Using Graphical Configuration Tools    401

Dynamic Host Configuration Protocol    403

How DHCP Works    403

Activating DHCP at Installation and Boot Time    404

DHCP Software Installation and Configuration    405

Using DHCP to Configure Network Hosts    407

Other Uses for DHCP    409

Wireless Networking    409

Support for Wireless Networking in Ubuntu    409

Advantages of Wireless Networking    411

Choosing from Among Available Wireless Protocols    411

Beyond the Network and onto the Internet    412

Common Configuration Information    412

Configuring Digital Subscriber Line Access    414

Understanding PPP over Ethernet    414

Configuring a PPPoE Connection Manually    415

Configuring Dial-Up Internet Access    416

Troubleshooting Connection Problems    417

References    418

18  Remote Access with SSH, Telnet, and VNC    419

Setting Up a Telnet Server    419

Telnet Versus SSH    421

Setting Up an SSH Server    421

SSH Tools    421

Using scp to Copy Individual Files Between Machines    422

Using sftp to Copy Many Files Between Machines    423

Using ssh-keygen to Enable Key-Based Logins    423

Virtual Network Computing    425

References    427

19  Securing Your Machines    429

Understanding Computer Attacks    429

Assessing Your Vulnerability    431

Protecting Your Machine    432

Securing a Wireless Network    433

Passwords and Physical Security    433

Configuring and Using Tripwire    434

Devices    435

Viruses    435

Configuring Your Firewall    436

AppArmor    440

Forming a Disaster Recovery Plan    442

References    443

20  Performance Tuning    445

Hard Disk    445

Using the BIOS and Kernel to Tune the Disk Drives    446

The hdparm Command    447

File System Tuning    448

The tune2fs Command    448

The e2fsck Command    449

The badblocks Command    449

Disabling File Access Time    449

Kernel    450

Apache    451

MySQL    452

Measuring Key Buffer Usage    452

Using the Query Cache    454

Miscellaneous Tweaks    455

Query Optimization    456

References    456

21  Kernel and Module Management    457

The Linux Kernel    458

The Linux Source Tree    459

Types of Kernels    461

Managing Modules    462

When to Recompile    464

Kernel Versions    465

Obtaining the Kernel Sources    466

Patching the Kernel    467

Compiling the Kernel    468

Using xconfig to Configure the Kernel    471

Creating an Initial RAM Disk Image    474

When Something Goes Wrong    475

Errors During Compile    475

Runtime Errors, Boot Loader Problems, and Kernel Oops    476

References    476

Part IV  Ubuntu as a Server

22  Sharing Files and Printers    479

Using the Network File System    480

Installing and Starting or Stopping NFS    480

NFS Server Configuration    480

NFS Client Configuration    482

Putting Samba to Work    482

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

Testing Samba with the testparm Command    487

Starting, Stopping, and Restarting the smbd Daemon    488

Mounting Samba Shares    489

Network and Remote Printing with Ubuntu    489

Creating Network Printers    490

Using the Common UNIX Printing System GUI    491

Avoiding Printer Support Problems    493

References    494

23  Apache Web Server Management    495

About the Apache Web Server    495

Installing the Apache Server    496

Installing from the Ubuntu Repositories    496

Building the Source Yourself    498

Starting and Stopping Apache    500

Starting the Apache Server Manually    500

Using /etc/init.d/apache2    502

Runtime Server Configuration Settings    503

Runtime Configuration Directives    503

Editing apache2.conf    504

Apache Multiprocessing Modules    507

Using .htaccess Configuration Files    507

File System Authentication and Access Control    509

Restricting Access with allow and deny    510

Authentication    511

Final Words on Access Control    513

Apache Modules    514

mod_access    514

mod_alias    514

mod_asis    515

mod_auth    515

mod_auth_anon    515

mod_auth_dbm    516

mod_auth_digest    516

mod_autoindex    516

mod_cgi    516

mod_dir and mod_env    516

mod_expires    516

mod_headers    516

mod_include    517

mod_info and mod_log_config    517

mod_mime and mod_mime_magic    517

mod_negotiation    517

mod_proxy    517

mod_rewrite    518

mod_setenvif    518

mod_speling    518

mod_status    518

mod_ssl    518

mod_unique_id    518

mod_userdir    519

mod_usertrack    519

mod_vhost_alias    519

Virtual Hosting    519

Address-Based Virtual Hosts    519

Name-Based Virtual Hosts    520

Logging    521

HTTPS    523

References    525

24  Nginx Web Server Management    527

About the Nginx Web Server    527

Installing the Nginx Server    529

Installing from the Ubuntu Repositories    529

Building the Source Yourself    530

Configuring the Nginx Server    530

Virtual Hosting    533

Setting Up PHP    534

Adding and Configuring Modules    536

HTTPS    536

References    538

25  Other HTTP Servers    539

lighttpd    539

Yaws    540

Cherokee    541

Jetty    541

thttpd    542

Apache Tomcat    542

References    542

26  Remote File Serving with FTP    543

Choosing an FTP Server    543

Choosing an Authenticated or Anonymous Server    544

Ubuntu FTP Server Packages    544

Other FTP Servers    544

Installing FTP Software    545

The FTP User    546

Configuring the Very Secure FTP Server    548

Controlling Anonymous Access    549

Other vsftpd Server Configuration Files    550

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

References    552

27  Handling Email    553

How Email Is Sent and Received    553

The Mail Transport Agent    554

Choosing an MTA    556

The Mail Delivery Agent    556

The Mail User Agent    557

Basic Postfix Configuration and Operation    558

Configuring Masquerading    560

Using Smart Hosts    561

Setting Message Delivery Intervals    561

Mail Relaying    562

Forwarding Email with Aliases    562

Using Fetchmail to Retrieve Mail    563

Installing Fetchmail    563

Configuring Fetchmail    563

Choosing a Mail Delivery Agent    567

Procmail    567

Spamassassin    567

Squirrelmail    568

Virus Scanners    568

Autoresponders    568

Alternatives to Microsoft Exchange Server    568

Microsoft Exchange Server/Outlook Client    569

CommuniGate Pro    569

Oracle Beehive    570

Bynari    570

Open-Xchange    570

phpgroupware    570

PHProjekt    570

Horde    570

References    571

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

What Is a Proxy Server?    573

Installing Squid    574

Configuring Clients    574

Access Control Lists    575

Specifying Client IP Addresses    579

Sample Configurations    580

Virtual Private Networks (VPN)    582

Setting Up a VPN Client    583

Setting Up a VPN Server    585

References    587

29  Administering Relational Database Services    589

A Brief Review of Database Basics    590

How Relational Databases Work    592

Understanding SQL Basics    594

Creating Tables    594

Inserting Data into Tables    595

Retrieving Data from a Database    596

Choosing a Database: MySQL Versus PostgreSQL    598

Speed    598

Data Locking    599

ACID Compliance in Transaction Processing to

Protect Data Integrity    599

SQL Subqueries    600

Procedural Languages and Triggers    600

Configuring MySQL    601

Setting a Password for the MySQL Root User    602

Creating a Database in MySQL    602

Configuring PostgreSQL    604

Initializing the Data Directory in PostgreSQL    604

Creating a Database in PostgreSQL    605

Creating Database Users in PostgreSQL    606

Deleting Database Users in PostgreSQL    606

Granting and Revoking Privileges in PostgreSQL    607

Database Clients    607

SSH Access to a Database    608

Local GUI Client Access to a Database    609

Web Access to a Database    610

The MySQL Command-Line Client    611

The PostgreSQL Command-Line Client    612

Graphical Clients    613

References    613

30  NoSQL Databases    615

Key/Value Stores    618

Berkeley DB    618

Cassandra    619

Memcached and MemcacheDB    619

Redis    620

Riak    620

Document Stores    620

CouchDB    621

MongoDB    622

BaseX    622

Wide Column Stores    623

BigTable    623

HBase    623

Graph Stores    624

Neo4j    624

OrientDB    624

HyperGraphDB    624

FlockDB    625

References    625

31  Lightweight Directory Access Protocol (LDAP)    627

Configuring the Server    628

Creating Your Schema    628

Populating Your Directory    630

Configuring Clients    632

Evolution    632

Thunderbird    633

Administration    633

References    634

32  Linux Terminal Server Project (LTSP)    635

Requirements    636

Installation    639

Using LTSP    640

References    641

33  Virtualization on Ubuntu    643

KVM    645

VirtualBox    649

VMware    651

Xen    651

References    651

34  Ubuntu in the Cloud    653

Why a Cloud?    654

Software as a Service (SaaS)    655

Platform as a Service (PaaS)    655

Infrastructure as a Service (IaaS)    655

Metal as a Service (MaaS)    656

Before You Do Anything    656

Ubuntu Cloud and Eucalyptus    656

Deploy/Install Basics: Public, Private, or Hybrid?    656

Ubuntu Cloud and OpenStack    657

Compute Infrastructure (Nova)    658

Storage Infrastructure (Swift)    659

Networking Service (Neutron)    659

Identity Service (Keystone)    659

Imaging Service (Glance)    659

Dashboard (Horizon)    659

Learning More    659

Juju    660

Getting Started    660

Charms    663

The Juju GUI    665

Juju Quickstart    665

Juju on Mac OS X and Windows    665

Ubuntu Metal as a Service (MaaS)    666

Landscape    666

References    666

35  Managing Sets of Servers    669

Juju    669

Puppet    670

Chef    670

CFEngine    671

Ansible    671

Landscape    671

References    671

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

Understanding Domain Names    675

DNS Servers    675

DNS Records    676

Setting Up a DNS Server with BIND    679

References    681

Part V  Programming Linux

37  Using Programming Tools for Ubuntu    683

Programming with Linux    684

Using the C Programming Project Management Tools

Provided with Ubuntu    685

Building Programs with make    685

Using Makefiles    685

Using the autoconf Utility to Configure Code    687

Debugging Tools    688

Using the GNU C Compiler    689

Graphical Development Tools    690

Using the KDevelop Client    690

The Glade Client for Developing in GNOME    691

Use an IDE or SDK    692

References    694

38  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

Bikeshed and Other Tools    707

References    709

39  Helping with Ubuntu Development    711

Introduction to Ubuntu Development    712

Setting Up Your Development System    713

Install Basic Packages and Configure    713

Create a Launchpad Account    714

Set Up Your Environment to Work with Launchpad    714

Fixing Bugs and Packaging    716

Finding Bugs to Fix with Harvest    719

Masters of the Universe    719

References    719

40  Helping with Ubuntu Testing and QA    721

Community Teams    721

Ubuntu Testing Team    722

QA Team    722

Bug Squad    723

Test Drive    723

References    726

41  Using Perl    727

Using Perl with Linux    727

Perl Versions    728

A Simple Perl Program    728

Perl Variables and Data Structures    730

Perl Variable Types    731

Special Variables    731

Operators    732

Comparison Operators    732

Compound Operators    733

Arithmetic Operators    733

Other Operators    734

Special String Constants    734

Conditional Statements: if/else and unless    735

if    735

unless    736

Looping    736

for    736

foreach    737

while    737

until    738

last and next    738

do ... while and do ... until    738

Regular Expressions    739

Access to the Shell    740

Modules and CPAN    741

Code Examples    741

Sending Mail    741

Purging Logs    743

Posting to Usenet    744

One-Liners    745

Command-Line Processing    746

References    746

42  Using Python    749

Python on Linux    750

The Basics of Python    751

Numbers    751

More on Strings    753

Lists    756

Dictionaries    758

Conditionals and Looping    759

Functions    761

Object Orientation    762

Class and Object Variables    763

Constructors and Destructors    764

Class Inheritance    765

The Standard Library and the Python Package Index    767

References    767

43  Using PHP    769

Introduction to PHP    770

Entering and Exiting PHP Mode    770

Variables    770

Arrays    772

Constants    774

References    774

Comments    775

Escape Sequences    775

Variable Substitution    776

Operators    777

Conditional Statements    779

Special Operators    780

Switching    781

Loops    783

Including Other Files    785

Basic Functions    786

Strings    786

Arrays    789

Files    791

Miscellaneous    793

Handling HTML Forms    797

Databases    797

References    800

44  Using Other Popular Programming Languages    801

Ada    802

Clojure    803

COBOL    803

D    804

Erlang    804

Forth    805

Go    805

Fortran    806

Groovy    806

Dart    806

Haskell    807

Java    807

JavaScript    808

Lisp    808

Lua    809

Mono    809

OCaml    810

Ruby    810

Rust    811

Scala    811

Scratch    811

Vala    811

References    812

45  Beginning Mobile Development for Android    815

Introduction to Android    816

Hardware    816

Linux Kernel    816

Libraries    816

Android Runtime    816

Application Framework    816

Applications    817

Installing the Android SDK    817

Install Java    817

Install Eclipse    817

Install the SDK    817

Install the ADT Eclipse Plug-In    818

Install Other Components    818

Install Virtual Devices    819

Create Your First Application    820

References    821

46  Developing for Ubuntu Mobile/Touch    823

Install the SDK    824

Create Your First Application    824

Learn About Ubuntu Design    825

Study the User Interface Toolkit    825

References    826

Index    829


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