Home > Store

Ubuntu Linux Unleashed 2021 Edition, 14th Edition

eBook (Watermarked)

  • Your Price: $44.15
  • List Price: $55.19
  • Includes EPUB and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    Adobe Reader PDF The popular standard, used most often with the free Acrobat® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

Also available in other formats.

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


  • Copyright 2020
  • Pages: 752
  • Edition: 14th
  • eBook (Watermarked)
  • ISBN-10: 0-13-668531-5
  • ISBN-13: 978-0-13-668531-9

Covers 20.04, 20.10, and 21.04

Ubuntu Linux Unleashed 2021 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 user and early community leader to reflect the exciting new Ubuntu 20.04 LTS release, with a forthcoming online update mid-2021, at the halfway mark before the next LTS release comes out.

Linux writer Matthew Helmke covers all you need to know about Ubuntu 20.04 LTS installation, configuration, productivity, command-line usage, development, systems administration, server operations, networking, virtualization, cloud computing, DevOps, and moreincluding 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 the Ubuntu desktop experience, common web servers and software stacks, an introduction to containers like Docker and Kubernetes, as well as a wealth of systems administration information that is stable and valuable over many years.

  • Configure and use the Ubuntu desktop
  • Get started with multimedia and productivity applications
  • 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)
  • Work with databases (SQL) and learn about NoSQL alternatives
  • Get started with virtualization and cloud deployment, including information about containers
  • Learn about options for managing large numbers of servers, including in the cloud
  • Learn the basics about popular programming languages including Python, PHP, Perl, and gain an introduction to new alternatives such as Go and Rust



Download: Bonus Chapters 42-44 (729 KB .pdf)

Sample Content

Sample Pages

Download the sample pages (includes Chapter 10)

Table of Contents

Introduction     xxxi
Chapter 1  Installing Ubuntu and Post-Installation Configuration     1
Before You Begin the Installation     1
    Researching Your Hardware Specifications     2
    Installation Options     2
    32-Bit Versus 64-Bit Ubuntu     4
    Planning Partition Strategies     5
    The Boot Loader     5
    Installing from DVD or USB Drive     6
Step-by-Step Installation     6
    Installing     7
    First Update     11
Shutting Down     11
Finding Programs and Files     12
Software Updater     12
The sudo Command     14
Configuring Software Repositories     15
System Settings     17
    Detecting and Configuring a Printer     18
    Configuring Power Management in Ubuntu     18
    Setting the Time and Date     19
Configuring Wireless Networks     20
Troubleshooting Post-Installation Configuration Problems     21
Chapter 2  Background Information and Resources     23
What Is Linux?     23
Why Use Linux?     25
What Is Ubuntu?     27
Ubuntu for Business     27
Ubuntu in Your Home     28
Getting the Most from Linux and Ubuntu Documentation     28
    Linux     29
    Ubuntu     30
Chapter 3  Foundations of the Linux GUI     31
Foundations and the X Server     31
    Basic X Concepts     32
    Using X     33
    Elements of the xorg conf File     34
Starting X     39
    Using a Display Manager     39
    Changing Window Managers     39
Chapter 4  Ubuntu Desktop Options     41
Desktop Environment     41
Using GNOME: A Primer     42
KDE and Kubuntu     45
Xfce and Xubuntu     46
LXDE and Lubuntu     47
MATE and Ubuntu MATE     48
Ubuntu Budgie     49
Ubuntu Kylin     50
Chapter 5  On the Internet     51
Getting Started with Firefox     52
Checking Out Google Chrome and Chromium     53
Chapter 6  Productivity Applications     55
Introducing LibreOffice     56
Other Useful Productivity Software     58
    Working with PDFs     58
    Writing Scripts     59
    Working with XML and DocBook     59
    Working with LaTeX     60
    Creating Mind Maps     61
Productivity Applications Written for Microsoft Windows     61
Chapter 7  Multimedia Applications     63
Sound and Music     63
    Sound Cards     64
    Sound Formats     65
    Listening to Music     65
Graphics Manipulation     66
    The GNU Image Manipulation Program     66
    Using Scanners in Ubuntu     67
    Working with Graphics Formats     67
    Capturing Screen Images     69
    Other Graphics Manipulation Options     70
Using Digital Cameras with Ubuntu     70
    Handheld Digital Cameras     70
    Using Shotwell Photo Manager     71
Burning CDs and DVDs in Ubuntu     71
    Creating CDs and DVDs with Brasero     71
    Creating CDs from the Command Line     72
    Creating DVDs from the Command Line     73
Viewing Video     75
    Video Formats     75
    Viewing Video in Linux     76
Recording and Editing Audio     76
Editing Video     77
Chapter 8  Games     79
Ubuntu Gaming     79
Installing Proprietary Video Drivers     80
Online Game Sources     81
    Steam     81
    GOG com     82
    Humble     82
    itch io     82
    LGDB     82
    Game Jolt     82
Installing Games from the Ubuntu Repositories     82
    Warsow     82
    Scorched 3D     83
    Frozen Bubble     84
    SuperTux     84
    Battle for Wesnoth     85
    Frets on Fire     85
    FlightGear     87
    Speed Dreams     87
    Games for Kids     88
    Commercial Games     88
Playing Windows Games     88
Chapter 9  Managing Software         91
Ubuntu Software         91
Using Synaptic for Software Management         92
Staying Up to Date         94
Working on the Command Line         95
    Day-to-Day APT Usage         95
    Finding Software         98
    Using apt-get Instead of apt         99
Compiling Software from Source     100
    Compiling from a Tarball     100
    Compiling from Source from the Ubuntu Repositories     101
Configuration Management     102
    dotdee     102
    Ubuntu Core     103
Using the Snappy Package Manager     103
Chapter 10  Command-Line Beginner's Class     105
What Is the Command Line?     106
Accessing the Command Line     107
    Text-Based Console Login     107
    Logging Out     108
    Logging In and Out from a Remote Computer     108
User Accounts     109
Reading Documentation     111
    Using Man Pages     111
    Using apropros     112
    Using whereis     112
Understanding the Linux File System Hierarchy     112
    Essential Commands in /bin and /sbin     114
    Configuration Files in /etc     114
    User Directories: /home     115
    Using the Contents of the /proc Directory to Interact with or Obtain Information from the Kernel     115
    Working with Shared Data in the /usr Directory     117
    Temporary File Storage in the /tmp Directory     117
    Accessing Variable Data Files in the /var Directory     117
Navigating the Linux File System     117
    Listing the Contents of a Directory with ls     118
    Changing Directories with cd     120
    Finding Your Current Directory with pwd     120
Working with Permissions     120
    Assigning Permissions     121
    Directory Permissions     122
    Altering File Permissions with chmod     123
    File Permissions with umask     124
    File Permissions with chgrp     125
    Changing File Permissions with chown     125
    Understanding Set User ID, Set Group ID, and Sticky Bit Permissions     125
    Setting Permissions with Access Control Lists     127
Working with Files     128
    Creating a File with touch     128
    Creating a Directory with mkdir     129
    Deleting a Directory with rmdir     129
    Deleting a File or Directory with rm     130
    Moving or Renaming a File with mv     131
    Copying a File with cp     131
    Displaying the Contents of a File with cat     132
    Displaying the Contents of a File with less     132
    Using Wildcards and Regular Expressions     133
Working as Root     133
    Understanding and Fixing sudo     134
    Creating Users     136
    Deleting Users     137
    Shutting Down the System     137
    Rebooting the System     138
Commonly Used Commands and Programs     139
Chapter 11  Command-Line Master Class, Part 1     141
Why Use the Command Line?     142
Using Basic Commands     143
    Printing the Contents of a File with cat     144
    Changing Directories with cd     145
    Changing File Access Permissions with chmod     147
    Copying Files with cp     147
    Printing Disk Usage with du     148
    Using echo     148
    Finding Files by Searching with find     149
    Searches for a String in Input with grep     151
    Paging Through Output with less     152
    Creating Links Between Files with ln     154
    Finding Files from an Index with locate     156
    Listing Files in the Current Directory with ls     156
    Listing System Information with lsblk, lshw, lsmod, lspci, and neofetch     158
    Reading Manual Pages with man     159
    Making Directories with mkdir     160
    Moving Files with mv     161
    Renaming Files with rename     161
    Deleting Files and Directories with rm     161
    Sorting the Contents of a File with sort     162
    Printing the Last Lines of a File with tail     163
    Printing the Location of a Command with which     164
    Downloading Files with wget     164
Chapter 12  Command-Line Master Class, Part 2     167
Redirecting Output and Input     167
stdin, stdout, stderr, and Redirection     169
Comparing Files     170
    Finding Differences in Files with diff     170
    Finding Similarities in Files with comm     170
Limiting Resource Use and Job Control     171
    Listing Processes with ps     171
    Listing Jobs with jobs     173
    Running One or More Tasks in the Background     173
    Moving Jobs to the Background or Foreground with bg and fg     174
    Printing Resource Usage with top     175
    Setting Process Priority with nice     177
Combining Commands     178
    Pipes     178
    Combining Commands with Boolean Operators     180
    Running Separate Commands in Sequence     180
    Process Substitution     181
Executing Jobs in Parallel     181
Using Environment Variables     182
Using Common Text Editors     185
    Working with nano     186
    Working with vi     187
    Working with emacs     188
    Working with sed and awk     189
Working with Compressed Files     191
Using Multiple Terminals with byobu192
Doing a Polite System Reset Using REISUB     194
Fixing an Ubuntu System That Will Not Boot     195
    Checking BIOS     195
    Checking GRUB     195
    Reinstalling GRUB     195
    Using Recovery Mode     196
    Reinstalling Ubuntu     196
Tips and Tricks     196
    Running the Previous Command     196
    Running Any Previous Command     197
    Running a Previous Command That Started with Specific Letters     197
    Running the Same Thing You Just Ran with a Different First Word     197
    Viewing Your History and More     197
    Doing Two or More Things     198
    Using Shortcuts     198
    Confining a Script to a Directory     198
    Using Coreutils     199
    Reading the Contents of the Kernel Ring Buffer with dmesg     200
Chapter 13  Managing Users     201
User Accounts     201
    The Super User/Root User     202
    User IDs and Group IDs     204
    File Permissions     204
Managing Groups     205
    Group Listing     205
    Group Management Tools     206
Managing Users     207
    User Management Tools     208
    Adding New Users     209
    Monitoring User Activity on the System     211
Managing Passwords     212
    System Password Policy     212
    The Password File     212
    Shadow Passwords     214
    Managing Password Security for Users     216
    Changing Passwords in a Batch     216
Granting System Administrator Privileges to Regular Users     217
    Temporarily Changing User Identity with the su Command     217
    Granting Root Privileges on Occasion: The sudo Command     219
Disk Quotas     222
    Implementing Quotas     222
    Manually Configuring Quotas     223
Related Ubuntu Commands     223
Chapter 14  Automating Tasks and Shell Scripting     225
What Is a Shell?     225
Scheduling Tasks     226
    Using at and batch to Schedule Tasks for Later     227
    Using cron to Run Jobs Repeatedly     229
    Using rtcwake to Wake Your Computer from Sleep Automatically     231
Basic Shell Control     233
    The Shell Command Line     233
    Shell Pattern-Matching Support     235
    Redirecting Input and Output     236
    Piping Data     237
    Background Processing     237
Writing and Executing a Shell Script     237
    Running the New Shell Program     239
    Storing Shell Scripts for System-wide Access     240
    Interpreting Shell Scripts Through Specific Shells     240
    Using Variables in Shell Scripts     242
    Assigning a Value to a Variable     242
    Accessing Variable Values     243
    Positional Parameters     243
    A Simple Example of a Positional Parameter     243
    Using Positional Parameters to Access and Retrieve Variables from the Command Line     244
    Using a Simple Script to Automate Tasks     244
    Built-in Variables     246
    Special Characters     247
    Comparison of Expressions in pdksh and bash     250
    Comparing Expressions with tcsh     255
    The for Statement     259
    The while Statement     261
    The until Statement     263
    The repeat Statement (tcsh)     263
    The select Statement (pdksh)     264
    The shift Statement     264
    The if Statement     265
    The expr Statement     266
    The case Statement     267
    The break and exit Statements     269
    Using Functions in Shell Scripts     269
Chapter 15  The Boot Process     271
Running Services at Boot     271
Beginning the Boot Loading Process     272
Loading the Linux Kernel     274
Starting and Stopping Services with systemd     275
    Controlling Services at Boot with Administrative Tools     278
    Troubleshooting Runlevel Problems     278
Boot-Repair     278
Chapter 16  System-Monitoring Tools     281
Console-Based Monitoring     281
    Using the kill Command to Control Processes     283
    Using Priority Scheduling and Control     285
    Displaying Free and Used Memory with free     286
    Disk Space     286
    Disk Quotas     287
    Checking Log Files     287
    Rotating Log Files     289
Graphical Process- and System-Management Tools     292
    System Monitor     292
    Conky     292
    Other Graphical Process- and System-Monitoring Tools     297
KDE Process- and System-Monitoring Tools     298
Enterprise Server Monitoring     298
Chapter 17  Backing Up     301
Choosing a Backup Strategy     301
    Why Data Loss Occurs     302
    Assessing Your Backup Needs and Resources     303
    Evaluating Backup Strategies     304
    Making the Choice     308
Choosing Backup Hardware and Media     308
    External Hard Drive     308
    Network Storage     308
    Tape Drive Backups     309
    Cloud Storage     309
Using Backup Software     309
    tar: The Most Basic Backup Tool     310
    The GNOME File Roller     312
    The KDE ark Archiving Tool     312
    Déjà Dup     313
    Back In Time     314
    Unison     315
    Amanda     315
    Alternative Backup Software     316
Copying Files     316
    Copying Files Using tar     317
    Compressing, Encrypting, and Sending tar Streams     318
    Copying Files Using cp     318
    Using rsync     319
Version Control for Configuration Files     320
System Rescue     323
    The Ubuntu Rescue Disc     323
    Restoring the GRUB2 Boot Loader     323
    Saving Files from a Nonbooting Hard Drive     324
Chapter 18  Networking     325
Laying the Foundation: The localhost Interface     326
    Checking for the Availability of the Loopback Interface     326
    Configuring the Loopback Interface Manually     327
Checking Connections with ping, traceroute, and mtr     328
Networking with TCP/IP     330
    TCP/IP Addressing     331
    Using IP Masquerading in Ubuntu     332
    Ports     333
IPv6 Basics     334
Network Organization     337
    Subnetting     337
    Subnet Masks     337
    Broadcast, Unicast, and Multicast Addressing     338
Hardware Devices for Networking     338
    Network Interface Cards     338
    Network Cable     340
    Hubs and Switches     342
    Routers and Bridges     343
    Initializing New Network Hardware     343
Using Network Configuration Tools     345
    Command-Line Network Interface Configuration     346
    Network Configuration Files     350
    Using Graphical Configuration Tools     355
Dynamic Host Configuration Protocol     355
    How DHCP Works     356
    Activating DHCP at Installation and Boot Time     357
    DHCP Software Installation and Configuration     358
    Using DHCP to Configure Network Hosts     359
    Other Uses for DHCP     361
Wireless Networking     361
    Support for Wireless Networking in Ubuntu     361
    Choosing from Among Available Wireless Protocols     363
Beyond the Network and onto the Internet     363
Common Configuration Information     364
    Configuring Digital Subscriber Line Access     365
    Understanding PPP over Ethernet     366
    Configuring a PPPoE Connection Manually     366
    Configuring Dial-up Internet Access     367
    Troubleshooting Connection Problems     368
Chapter 19  Remote Access with SSH and VNC     371
Setting Up an SSH Server     371
SSH Tools     372
    Using scp to Copy Individual Files Between Machines     372
    Using sftp to Copy Many Files Between Machines     373
    Using ssh-keygen to Enable Key-Based Logins     373
Virtual Network Computing     375
Guacamole     377
Chapter 20  Securing Your Machines     379
Understanding Computer Attacks     379
Assessing Your Vulnerability     381
Protecting Your Machine     382
    Securing a Wireless Network     382
    Passwords and Physical Security     383
    Configuring and Using Tripwire     384
    Securing Devices     385
Viruses     385
Configuring Your Firewall     386
AppArmor     388
Forming a Disaster Recovery Plan     390
Chapter 21  Performance Tuning     393
Storage Disk     394
    Linux File Systems     394
    The hdparm Command     395
    File System Tuning     396
    The tune2fs Command     396
    The e2fsck Command     397
    The badblocks Command     397
    Disabling File Access Time     397
Kernel     398
Tuned     399
Chapter 22  Kernel and Module Management     401
The Linux Kernel     402
    The Linux Source Tree     403
    Types of Kernels     405
Managing Modules     406
When to Recompile     408
Kernel Versions     409
Obtaining the Kernel Sources     409
Patching the Kernel     410
Compiling the Kernel     412
    Using xconfig to Configure the Kernel     414
    Creating an Initial RAM Disk Image     418
When Something Goes Wrong     418
    Errors During Compile     418
    Runtime Errors, Boot Loader Problems, and Kernel Oops     419
Chapter 23  Sharing Files and Printers     421
Using Network File System     422
    Installing and Starting or Stopping NFS     422
    NFS Server Configuration     422
    NFS Client Configuration     423
Putting Samba to Work     424
    Manually Configuring Samba with /etc/samba/smb conf     426
    Testing Samba with the testparm Command     429
    Starting, Stopping, and Restarting the smbd Daemon     429
    Mounting Samba Shares     430
Network and Remote Printing with Ubuntu     431
    Creating Network Printers     431
    Using the CUPS GUI     433
    Avoiding Printer Support Problems     434
Chapter 24  Common Web Server Stacks     437
LAMP     437
LEMP     439
MEAN     440
Chapter 25  Apache Web Server Management     443
About the Apache Web Server     443
Installing the Apache Server     444
    Starting and Stopping Apache     444
Runtime Server Configuration Settings     446
    Runtime Configuration Directives     446
    Editing apache2 conf     447
    Apache Multiprocessing Modules     449
    Using htaccess Configuration Files     450
File System Authentication and Access Control     452
    Restricting Access with Require     452
    Authentication     453
    Final Words on Access Control     455
Apache Modules     455
    mod_access     456
    mod_alias     456
    mod_asis     456
    mod_auth     457
    mod_auth_anon     457
    mod_auth_dbm     457
    mod_auth_digest     457
    mod_autoindex4     58
    mod_cgi     458
    mod_dir and mod_env     458
    mod_expires     458
    mod_headers     458
    mod_include     459
    mod_info and mod_log_config     459
    mod_mime and mod_mime_magic     459
    mod_negotiation     459
    mod_rewrite     459
    mod_setenvif     460
    mod_speling     460
    mod_status     460
    mod_ssl     460
    mod_unique_id     460
    mod_userdir     460
    mod_usertrack     460
    mod_vhost_alias     460
Virtual Hosting     461
    Address-Based Virtual Hosts     461
    Name-Based Virtual Hosts     461
Logging     463
HTTPS     464
Chapter 26  Nginx Web Server Management     467
About the Nginx Web Server     467
Installing the Nginx Server     469
    Installing from the Ubuntu Repositories     469
    Building the Source Yourself     469
Configuring the Nginx Server     470
Virtual Hosting     473
Setting Up PHP     474
Adding and Configuring Modules     475
HTTPS     476
Chapter 27  Other HTTP Servers     479
Lighttpd     479
Yaws     480
Cherokee     480
Jetty     481
thttpd     481
Apache Tomcat     482
WildFly     482
Caddy     482
Chapter 28  Administering Relational Database Services     483
A Brief Review of Database Basics     484
    How Relational Databases Work     486
    Understanding SQL Basics     487
    Creating Tables     488
    Inserting Data into Tables     489
    Retrieving Data from a Database     490
Choosing a Database: MySQL Versus PostgreSQL     492
    Speed     492
    Data Locking     492
    ACID Compliance in Transaction Processing to Protect Data Integrity     493
    SQL Subqueries     494
    Procedural Languages and Triggers     494
Configuring MySQL     494
    Setting a Password for the MySQL Root User     495
    Creating a Database in MySQL     496
Configuring PostgreSQL     498
    Initializing the Data Directory in PostgreSQL     498
    Creating a Database in PostgreSQL     499
    Creating Database Users in PostgreSQL     499
    Deleting Database Users in PostgreSQL     500
    Granting and Revoking Privileges in PostgreSQL     500
Database Clients     501
    SSH Access to a Database     501
    Local GUI Client Access to a Database     503
    Web Access to a Database     503
    The MySQL Command-Line Client     504
    The PostgreSQL Command-Line Client     505
    Graphical Clients     506
Chapter 29  NoSQL Databases     509
Key/Value Stores     512
    Berkeley DB     512
    Cassandra     513
    etcd     513
    Memcached and MemcacheDB     513
    Redis     514
    Riak     514
    Scylla     514
Document Stores     514
    CouchDB     515
    MongoDB     516
    BaseX     517
Wide Column Stores     517
    BigTable     517
    HBase     518
Graph Stores     518
    Neo4j     518
    OrientDB     519
    HyperGraphDB     519
    FlockDB     519
Chapter 30  Virtualization on Ubuntu     521
KVM     523
VirtualBox     527
VMware     528
Xen     528
Chapter 31  Containers and Ubuntu     531
LXC and LXD     532
Docker     533
Kubernetes     534
Chapter 32  Ubuntu and Cloud Computing     535
Why a Cloud?     536
    Software as a Service (SaaS)     537
    Platform as a Service (PaaS)     537
    Infrastructure as a Service (IaaS)     537
    Metal as a Service (MaaS)     537
    Things to Consider Before You Make Any Decisions     538
Ubuntu on the Public Cloud     538
    OpenStack     538
    Amazon Web Services     539
    Google Cloud     539
    Microsoft Azure     539
    Hybrid Clouds     539
Canonical-Specific Cloud Offerings     540
    Juju     540
    Mojo: Continuous Delivery for Juju     541
    Landscape     541
Chapter 33  Managing Sets of Servers     543
Puppet     543
Chef     544
Ansible     544
SaltStack     544
CFEngine     545
Juju     545
Landscape     545
Chapter 34  Handling Email     547
How Email Is Sent and Received     547
    The Mail Transport Agent     548
    Choosing an MTA     550
    The Mail Delivery Agent     550
    The Mail User Agent     551
Basic Postfix Configuration and Operation     552
    Configuring Masquerading     554
    Using Smart Hosts     554
    Setting Message Delivery Intervals     555
    Mail Relaying     555
    Forwarding Email with Aliases     556
Using Fetchmail to Retrieve Mail     557
    Installing Fetchmail     557
    Configuring Fetchmail     557
Choosing a Mail Delivery Agent     560
    Procmail     561
    Spamassassin     561
    Squirrelmail     561
    Virus Scanners     562
    Autoresponders     562
Chapter 35  Proxying, Reverse Proxying, and Virtual Private Networks (VPNs)     563
What Is a Proxy Server?     563
Installing Squid     564
Configuring Clients     564
Access Control Lists     565
Specifying Client IP Addresses     569
Sample Configurations     570
Virtual Private Networks (VPNs)     572
    Setting Up a VPN Client     573
    Setting Up a VPN Server     575
Chapter 36  Lightweight Directory Access Protocol (LDAP)     579
Configuring the Server     580
    Creating Your Schema     580
    Populating Your Directory     582
Configuring Clients     584
LDAP Administration     584
Chapter 37  Name Serving with the Domain Name System (DNS)     587
Understanding Domain Names     588
    DNS Servers     589
    DNS Records     590
Setting Up a DNS Server with BIND     593
Chapter 38  Using Programming Tools     597
Programming in C with Linux     598
Using the C Programming Project Management Tools Provided with Ubuntu     599
    Building Programs with make     599
    Using the autoconf Utility to Configure Code     601
    Debugging Tools     602
Using the GNU C Compiler     603
Programming in Java with Linux     604
Graphical Development Tools     605
    IDEs and SDKs     605
    Using the KDevelop Client     606
    The Glade Client for Developing in GNOME     607
Beginning Mobile Development for Android     607
    Hardware     608
    Linux Kernel     608
    Libraries     608
    Android Runtime     608
    Application Framework     608
    Applications     609
    Installing Android Studio     609
    Creating Your First Android Application     609
Version Control Systems     609
    Managing Software Projects with Git     610
    Managing Software Projects with Bazaar     611
    Managing Software Projects with Subversion     612
Continuous Integration and Continuous Delivery and DevOps Tools     613
    CI/CD Tools     614
    Chaos Engineering     614
Canonical-created Tools     614
    Launchpad     614
    Ubuntu Make     615
    Creating Snap Packages     615
    Bikeshed and Other Tools     616
Chapter 39  Using Popular Programming Languages     621
Ada     622
Clojure     622
COBOL     623
D     624
Dart     624
Elixir     625
Elm     625
Erlang     625
Forth     626
Fortran     626
Go     626
Groovy     627
Haskell     627
Java     627
JavaScript     628
Kotlin     628
Lisp     629
Lua     629
Mono     629
OCaml     630
Perl     630
PHP     631
Python     631
Raku     631
Ruby     631
Rust     632
Scala     632
Scratch     632
Vala     633
Chapter 40  Helping with Ubuntu Development     635
Introduction to Ubuntu Development     636
Setting Up Your Development System     637
    Install Basic Packages and Configure     637
    Creating a Launchpad Account     638
    Setting Up Your Environment to Work with Launchpad     638
Fixing Bugs and Packaging     640
Chapter 41  Helping with Ubuntu Testing and QA     645
Community Teams     645
    Ubuntu Testing Team     646
    Ubuntu QA Team     646
Bug Squad     647
References     647
Index     649

Chapter 42  Using Perl (Online)     Web:1
Using Perl with Linux     Web:1
    Perl Versions      Web:2
    A Simple Perl Program     Web:2
Perl Variables and Data Structures     Web:4
    Perl Variable Types     Web:4
    Special Variables     Web:5
Perl Operators     Web:6
    Comparison Operators     Web:6
    Compound Operators     Web:7
    Arithmetic Operators     Web:7
    Other Operators     Web:8
    Special String Constants     Web:8
Conditional Statements: if/else and unless     Web:9
    If     Web:9
    unless     Web:9
Looping     Web:10
    for     Web:10
    foreach     Web:10
    while     Web:11
    until     Web:11
    last and next     Web:12
    do while and do until     Web:12
Regular Expressions     Web:12
Access to the Shell     Web:13
Modules and CPAN     Web:14
Code Examples     Web:15
    Sending Mail     Web:15
    Purging Logs     Web:17
    Posting to Usenet     Web:18
    One-Liners     Web:19
    Command-Line Processing     Web:19
Chapter 43  Using Python (Online)     Web:21
Python on Linux     Web:22
The Basics of Python     Web:23
    Numbers     Web:23
    More on Strings     Web:24
    Lists     Web:27
    Dictionaries     Web:30
    Conditionals and Looping     Web:30
Functions     Web:33
Object Orientation     Web:34
    Class and Object Variables     Web:34
    Constructors and Destructors     Web:35
    Class Inheritance     Web:36
The Standard Library and the Python Package Index     Web:38
Chapter 44  Using PHP (Online)     Web:39
Introduction to PHP     Web:39
    Entering and Exiting PHP Mode     Web:40
    Variables     Web:40
    Arrays     Web:42
    Constants     Web:43
    References     Web:44
    Comments     Web:44
    Escape Sequences     Web:45
    Variable Substitution     Web:46
    Operators     Web:46
    Conditional Statements     Web:48
    Special Operators     Web:50
    Switching     Web:51
    Loops     Web:52
    Including Other Files     Web:54
Basic Functions     Web:55
    Strings     Web:55
    Arrays     Web:58
    Files     Web:60
    Miscellaneous     Web:63
Handling HTML Forms     Web:66
Databases     Web:67



We've made every effort to ensure the accuracy of this book and its companion content. Any errors that have been confirmed since this book was published can be downloaded below.

Download the errata (50 KB .doc)

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