Ubuntu Linux Unleashed 2021 Edition, 14th edition
Published by Addison-Wesley Professional (August 14, 2020) © 2021
- Matthew Helmke
eTextbook
- Available for purchase from all major ebook resellers, including InformIT.com.
- To request a review copy, click on the "Request a Review Copy" button.
- A print text (hardcover or paperback)Â
- Free shipping
- Also available for purchase as an ebook from all major ebook resellers, including InformIT.com
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 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 will 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
- Coverage of the latest technological advancements in Ubuntu, such as cloud, security, and Kubernetes
- Focuses on the most important technological features in Ubuntu for intermediate and advanced users
- Features detailed information on the latest developments in and improvements to Ubuntu Linux
- Bonus material includes a DVD with a full Ubuntu Linux distribution
- Will include timely web chapters on 20.10 and 21.04 Ubuntu release
What is a VitalSource eTextbook?
The full text downloaded to your computer.
With VitalSource eTextbooks you can:
- search for key concepts, words and phrases
- make highlights and notes as you study
- share your notes with friends
eTextbooks are downloaded to your computer and accessible either offline through the Bookshelf (available as a free download), available online and also via the iPad and Android apps.
Upon purchase, you'll gain instant access.
Introduction   xxxi
PART I: GETTING STARTED
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
PART II: DESKTOP UBUNTU
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
PART III: SYSTEM ADMINISTRATION
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
PART IV: UBUNTU AS A SERVER
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
PART V: PROGRAMMING LINUX
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
PART VI:Â BONUS ONLINE-ONLY CHAPTERS
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 SubstitutionWeb: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
Need help? Get in touch

Pearson eTextbook: What’s on the inside just might surprise you
They say you can’t judge a book by its cover. It’s the same with your students. Meet each one right where they are with an engaging, interactive, personalized learning experience that goes beyond the textbook to fit any schedule, any budget, and any lifestyle.Â

Digital Learning NOW
Extend your professional development and meet your students where they are with free weekly Digital Learning NOW webinars. Attend live, watch on-demand, or listen at your leisure to expand your teaching strategies. Earn digital professional development badges for attending a live session.