Pub. Date:
Ubuntu Unleashed 2017 Edition (Includes Content Update Program): Covering 16.10, 17.04, 17.10 / Edition 12

Ubuntu Unleashed 2017 Edition (Includes Content Update Program): Covering 16.10, 17.04, 17.10 / Edition 12

by Matthew HelmkeMatthew Helmke
Current price is , Original price is $54.99. You

Temporarily Out of Stock Online

Please check back later for updated availability.


Book + Content Update Program

Ubuntu Unleashed 2017 Edition is filled with unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system. This new edition has been thoroughly updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 16.04 LTS release with forthcoming online updates for 16.10, 17.04, and 17.10 when they are released.

Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 16.04 installation, configuration, productivity, multimedia, development, system administration, server operations, networking, virtualization, security, DevOps, and more—including intermediate-to-advanced techniques you won’t find in any other book.

Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of navigation via Unity Dash, wireless networking, VPNs, software repositories, new NoSQL database options, virtualization and cloud services, new programming languages and development tools, monitoring, troubleshooting, and more.

  • 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 touchscreen and phone devices

In addition, this book is part of InformIT’s exciting Content Update Program, which provides content updates for major technology improvements! As significant updates are made to Docker and Azure, sections of this book will be updated or new sections will be added to match the updates to the technologies. As updates become available, they will be delivered to you via a free Web Edition of this book, which can be accessed with any Internet connection. To learn more, visit

How to access the Web Edition: Follow the instructions inside to learn how to register your book to access the FREE Web Edition.

Product Details

ISBN-13: 9780134511184
Publisher: Sams
Publication date: 11/02/2016
Series: Unleashed Series
Pages: 832
Sales rank: 1,257,874
Product dimensions: 7.00(w) x 9.00(h) x 1.80(d)

About the Author

Matthew Helmke is an active member of the Ubuntu community. He served from 2006 to 2011 on the Ubuntu Forum Council, providing leadership and oversight of the Ubuntu Forums (, and spent two years on the Ubuntu regional membership approval board for Europe, the Middle East, and Africa. He has written about Ubuntu for several magazines and websites, is a lead author of The Official Ubuntu Book, and coauthored The VMware Cookbook. He works as a technical writer for Canonical, Inc., documenting cloud- and DevOps-related software. Matthew first used Unix in 1987 while studying LISP on a VAX at the university. He has run a business using only free- and open-source software, has consulted, and has a master’s degree in Information Resources and Library Science from the University of Arizona. You can find out more about Matthew at or drop him a line with errata or suggestions at

Andrew Hudson is a freelance journalist who specializes in writing about Linux. He has significant experience in Red Hat- and Debian-based Linux distributions and deployments and can often be found sitting at his keyboard tweaking various settings and config files just for the hell of it. He lives in Wiltshire, which is a county of England, along with his wife, Bernice, and their son, John. Andrew does not like Emacs. He can be reached at

Paul Hudson is a recognized expert in open source technologies. He is a professional developer and full-time journalist for Future Publishing. His articles have appeared in MacFormat, PC Answers, PC Format, PC Plus, and Linux Format. Paul is passionate about free software in all its forms and uses a mix of Linux and BSD to power his desktops and servers. Paul likes Emacs. Paul can be contacted through

Table of Contents

Introduction xxxiii
Licensing xxxiv
Who This Book Is For xxxv
Those Wanting to Become Intermediate or Advanced Users xxxv
Sysadmins, Programmers, and DevOps xxxvi
What This Book Contains xxxvii
Conventions Used in This Book xxxviii

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 vs 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 13
Shutting Down 13
Finding Programs and Files 14
Software Updater 15
The sudo Command 18
Configuring Software Repositories 19
System Settings 21
Detecting and Configuring a Printer 22
Configuring Power Management in Ubuntu 22
Setting the Time and Date 23
Configuring Wireless Networks 24
Troubleshooting Post-Installation Configuration Problems 26
References 27
Chapter 2 Background Information and Resources 29
What Is Linux? 29
Why Use Linux? 31
What Is Ubuntu? 33
Ubuntu for Business 33
Ubuntu in Your Home 35
Getting the Most from Ubuntu and Linux Documentation 35
Ubuntu Developers and Documentation 36
Websites and Search Engines 37
Web Search Tips 37
Google Is Your Friend 37
Ubuntu Package Listings 38
Commercial Support 38
Documentation 39
Linux Guides 39
Ubuntu 40
Mailing Lists 40
Ubuntu Project Mailing Lists 41
Internet Relay Chat 42

Chapter 3 Working with Unity 43

Foundations and the X Server 43
Basic X Concepts 44
Using X 45
Elements of the xorg.conf File 46
Starting X 51
Using a Display Manager 51
Changing Window Managers 52
Using Unity, a Primer 52
The Desktop 53
Customizing and Configuring Unity 58
Power Shortcuts 60
References 61
Chapter 4 On the Internet 63
Getting Started with Firefox 63
Checking Out Google Chrome and Chromium65
Choosing an Email Client 66
Mozilla Thunderbird 66
Evolution 67
Other Mail Clients 68
RSS Readers 69
Firefox 69
Liferea 69
Internet Relay Chat 70
Usenet Newsgroups 72
References 74
Chapter 5 Productivity Applications 75
Introducing LibreOffice 76
Other Office Suites for Ubuntu 78
Working with GNOME Office 78
Working with KOffice 80
Other Useful Productivity Software 80
Working with PDF 80
Working with XML and DocBook 81
Working with LaTeX 82
Productivity Applications Written for Microsoft Windows 83
References 83
Chapter 6 Multimedia Applications 85
Sound and Music 85
Sound Cards 86
Adjusting Volume 87
Sound Formats 88
Listening to Music 89
Graphics Manipulation 92
The GNU Image Manipulation Program 93
Using Scanners in Ubuntu 94
Working with Graphics Formats 95
Capturing Screen Images 97
Other Graphics Manipulation Options 97
Using Digital Cameras with Ubuntu 98
Handheld Digital Cameras 98
Using Shotwell Photo Manager 98
Burning CDs and DVDs in Ubuntu 99
Creating CDs and DVDs with Brasero 99
Creating CDs from the Command Line 100
Creating DVDs from the Command Line 102
Viewing Video 104
TV and Video Hardware 104
Video Formats 105
Viewing Video in Linux 106
Personal Video Recorders 107
Video Editing 107
References 109
Chapter 7 Other Ubuntu Interfaces 111
Desktop Environment 112
KDE and Kubuntu 113
Xfce and Xubuntu 114
LXDE and Lubuntu 115
GNOME3 and Ubuntu GNOME 116
MATE and Ubuntu MATE 117
Ubuntu Kylin 118
References 118
Chapter 8 Games 121
Ubuntu Gaming 121
Installing Proprietary Video Drivers 122
Steam 123
Installing Games in Ubuntu 123
Warsow 124
Scorched 3D 124
Frozen Bubble 125
SuperTux 126
Battle for Wesnoth 126
Frets on Fire 127
FlightGear 128
Speed Dreams 129
Games for Kids 129
Commercial Games 129
Playing Windows Games 130
References 130

Chapter 9 Managing Software 133

Ubuntu Software 133
Using Synaptic for Software Management 134
Staying Up-to-Date 137
Working on the Command Line 138
Day-to-Day Usage 138
Finding Software 141
Using apt Instead of apt-get 142
Compiling Software from Source 143
Compiling from a Tarball 143
Compiling from Source from the Ubuntu Repositories 144
Configuration Management 145
dotdee 145
Snappy Ubuntu Core 146
Using Snaps 146
References 147
Chapter 10 Command-Line Beginner’s Class 149
What Is the Command Line? 150
Accessing the Command Line 151
Text-Based Console Login 152
Logging Out 153
Logging In and Out from a Remote Computer 153
User Accounts 154
Reading Documentation 155
Using Man Pages 156
Using apropros 156
Using whereis 157
Understanding the Linux File System Hierarchy 157
Essential Commands in /bin and /sbin 158
Configuration Files in /etc 159
User Directories: /home 159
Using the Contents of the /proc Directory to Interact with the Kernel 160
Working with Shared Data in the /usr Directory 161
Temporary File Storage in the /tmp Directory 162
Accessing Variable Data Files in the /var Directory 162
Navigating the Linux File System 162
Listing the Contents of a Directory with ls 162
Changing Directories with cd 164
Finding Your Current Directory with pwd 165
Working with Permissions 165
Assigning Permissions 166
Directory Permissions 167
Altering File Permissions with chmod 168
File Permissions with umask 169
File Permissions with chgrp 170
Changing File Permissions with chown 170
Understanding Set User ID, Set Group ID, and Sticky Bit Permissions 170
Setting Permissions with Access Control Lists 171
Working with Files 173
Creating a File with touch 173
Creating a Directory with mkdir 173
Deleting a Directory with rmdir 174
Deleting a File or Directory with rm 175
Moving or Renaming a File with mv 175
Copying a File with cp 176
Displaying the Contents of a File with cat 177
Displaying the Contents of a File with less 177
Using Wildcards and Regular Expressions 177
Working as Root 178
Understanding and Fixing sudo 178
Creating Users 181
Deleting Users 182
Shutting Down the System 182
Rebooting the System 183
Commonly Used Commands and Programs 183
References 184
Chapter 11 Command-Line Master Class Part 1 185
Why Use the Command Line? 186
Using Basic Commands 187
Printing the Contents of a File with cat 188
Changing Directories with cd 189
Changing File Access Permissions with chmod 191
Copying Files with cp 191
Printing Disk Usage with du 192
Using echo 193
Finding Files by Searching with find 193
Searches for a String in Input with grep 196
Paging Through Output with less 197
Creating Links Between Files with ln 199
Finding Files from an Index with locate 200
Listing Files in the Current Directory with ls 200
Listing System Information with lsblk, lshw, lsmod, and lspci 202
Reading Manual Pages with man 203
Making Directories with mkdir 204
Moving Files with mv 204
Renaming Files with rename 204
Deleting Files and Directories with rm 205
Sorting the Contents of a File with sort 205
Printing the Last Lines of a File with tail 207
Printing the Location of a Command with which 207
Download Files with wget 207
References 208
Chapter 12 Command-Line Master Class Part 2 209
Redirecting Output and Input 209
stdin, stdout, stderr, and Redirection 211
Comparing Files 212
Finding Differences in Files with diff 212
Finding Similarities in Files with comm212
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 215
Printing Resource Usage with top 216
Setting Processes Priority with nice 218
Combining Commands 219
Pipes 219
Combining Commands with Boolean Operators 221
Running Separate Commands in Sequence 222
Process Substitution 222
Using Environment Variables 222
Using Common Text Editors 226
Working with nano 227
Working with vi 227
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
Fixing an Ubuntu System That Will Not Boot 235
Checking BIOS 235
Checking GRUB 235
Reinstalling GRUB 235
Using Recovery Mode 236
Reinstalling Ubuntu 236
Tips and Tricks 236
Running the Previous Command 236
Running Any Previous Command 237
Running a Previous Command that Started with Specific Letters 237
Running the Same Thing You Just Ran with a Different First Word 237
Viewing Your History and More 237
Doing Two or More Things 237
Using Shortcuts 238
Confining a Script to a Directory 238
Using Coreutils 239
Reading the Contents of the Kernel Ring Buffer with dmesg 239
References 240
Chapter 13 Managing Users 241
User Accounts 241
The Super User/Root User 242
User IDs and Group IDs 244
File Permissions 244
Managing Groups 245
Group Listing 245
Group Management Tools 246
Managing Users 248
User Management Tools 248
Adding New Users 250
Monitoring User Activity on the System 251
Managing Passwords 252
System Password Policy 252
The Password File 253
Shadow Passwords 254
Managing Password Security for Users 256
Changing Passwords in a Batch 256
Granting System Administrator Privileges to Regular Users 257
Temporarily Changing User Identity with the su Command 257
Granting Root Privileges on Occasion: The sudo Command 259
Disk Quotas 262
Implementing Quotas 262
Manually Configuring Quotas 263
Related Ubuntu Commands 264
References 264
Chapter 14 Automating Tasks and Shell Scripting 265
Scheduling Tasks 265
Using at and batch to Schedule Tasks for Later 265
Using cron to Run Jobs Repeatedly 268
Using rtcwake to Wake Your Computer from Sleep Automatically 270
Basic Shell Control 272
The Shell Command Line 273
Shell Pattern-Matching Support 274
Redirecting Input and Output 275
Piping Data 276
Background Processing 277
Writing and Executing a Shell Script 277
Running the New Shell Program 279
Storing Shell Scripts for System-Wide Access 279
Interpreting Shell Scripts Through Specific Shells 280
Using Variables in Shell Scripts 281
Assigning a Value to a Variable 282
Accessing Variable Values 282
Positional Parameters 282
A Simple Example of a Positional Parameter 283
Using Positional Parameters to Access and Retrieve
Variables from the Command Line 284
Using a Simple Script to Automate Tasks 284
Built-In Variables 286
Special Characters 287
Using Double Quotes to Resolve Variables in Strings with Embedded Spaces 288
Using Single Quotes to Maintain Unexpanded Variables 288
Using the Backslash as an Escape Character 289
Using the Backtick to Replace a String with Output 289
Comparison of Expressions in pdksh and bash 290
Comparing Expressions with tcsh 295
The for Statement 299
The while Statement 300
The until Statement 302
The repeat Statement (tcsh) 303
The select Statement (pdksh) 303
The shift Statement 304
The if Statement 304
The case Statement 305
The break and exit Statements 307
Using Functions in Shell Scripts 307
References 308
Chapter 15 The Boot Process 311
Running Services at Boot 311
Beginning the Boot Loading Process 312
Loading the Linux Kernel 314
System Services and Runlevels 315
Runlevel Definitions 315
Booting into the Default Runlevel 316
Understanding init Scripts and the Final Stage of Initialization 316
Controlling Services at Boot with Administrative Tools 317
Changing Runlevels 318
Troubleshooting Runlevel Problems319
Starting and Stopping Services Manually 319
Using Upstart 319
systemd 320
Boot Repair 322
References 322
Chapter 16 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 333
System Monitor 334
Conky 334
Other 339
KDE Process- and System-Monitoring Tools 339
Enterprise Server Monitoring 340
Landscape 340
Other 340
References 340
Chapter 17 Backing Up 341
Choosing a Backup Strategy 341
Why Data Loss Occurs 342
Assessing Your Backup Needs and Resources 343
Evaluating Backup Strategies 345
Making the Choice 348
Choosing Backup Hardware and Media 348
Removable Storage Media 348
CD-RW and DVD+RW/-RW Drives 349
Network Storage 349
Tape Drive Backup 349
Cloud Storage 350
Using Backup Software 350
tar: The Most Basic Backup Tool 351
The GNOME File Roller 353
The KDE ark Archiving Tool 353
Déjà Dup 354
Back In Time 356
Unison 358
Using the Amanda Backup Application 358
Alternative Backup Software 359
Copying Files 360
Copying Files Using tar 360
Compressing, Encrypting, and Sending tar Streams 361
Copying Files Using cp 361
Copying Files Using mc 362
Using rsync 362
Version Control for Configuration Files 364
System Rescue 366
The Ubuntu Rescue Disc 367
Restoring the GRUB2 Boot Loader 367
Saving Files from a Nonbooting Hard Drive 368
References 368
Chapter 18 Networking 369
Laying the Foundation: The localhost Interface 370
Checking for the Availability of the Loopback Interface 370
Configuring the Loopback Interface Manually 370
Checking Connections with ping, traceroute, and mtr 371
Networking with TCP/IP 374
TCP/IP Addressing 374
Using IP Masquerading in Ubuntu 376
Ports 377
IPv6 Basics 378
Network Organization 380
Subnetting 381
Subnet Masks 381
Broadcast, Unicast, and Multicast Addressing 382
Hardware Devices for Networking 382
Network Interface Cards 382
Network Cable 384
Hubs and Switches 385
Routers and Bridges 386
Initializing New Network Hardware 387
Using Network Configuration Tools 389
Command-Line Network Interface Configuration 389
Network Configuration Files 394
Using Graphical Configuration Tools 397
Dynamic Host Configuration Protocol 399
How DHCP Works 399
Activating DHCP at Installation and Boot Time 400
DHCP Software Installation and Configuration 401
Using DHCP to Configure Network Hosts 403
Other Uses for DHCP 405
Wireless Networking 405
Support for Wireless Networking in Ubuntu 405
Advantages of Wireless Networking 407
Choosing from Among Available Wireless Protocols 407
Beyond the Network and onto the Internet 408
Common Configuration Information 408
Understanding PPP over Ethernet 410
Configuring a PPPoE Connection Manually 411
Configuring Dial-Up Internet Access 412
Troubleshooting Connection Problems 413
References 414
Chapter 19 Remote Access with SSH, Telnet, and VNC 415
Setting Up a Telnet Server 415
Telnet Versus SSH 417
Setting Up an SSH Server 417
SSH Tools 417
Using scp to Copy Individual Files Between Machines 418
Using sftp to Copy Many Files Between Machines 418
Using ssh-keygen to Enable Key-Based Logins 419
Virtual Network Computing 420
References 423
Chapter 20 Securing Your Machines 425
Understanding Computer Attacks 425
Assessing Your Vulnerability 427
Protecting Your Machine 428
Securing a Wireless Network 429
Passwords and Physical Security 429
Configuring and Using Tripwire 430
Devices 431
Viruses 431
Configuring Your Firewall 432
AppArmor 435
Forming a Disaster Recovery Plan 437
References 439
Chapter 21 Performance Tuning 441
Hard Disk 441
Using the BIOS and Kernel to Tune the Disk Drives 442
The hdparm Command 443
File System Tuning 444
The tune2fs Command 444
The e2fsck Command 445
The badblocks Command 445
Disabling File Access Time 445
Kernel 445
Apache 446
MySQL 448
Measuring Key Buffer Usage 448
Using the Query Cache 449
Miscellaneous Tweaks 451
Query Optimization 451
References 452
Chapter 22 Kernel and Module Management 453
The Linux Kernel 454
The Linux Source Tree 455
Types of Kernels 457
Managing Modules 458
When to Recompile 460
Kernel Versions 461
Obtaining the Kernel Sources 462
Patching the Kernel 463
Compiling the Kernel 464
Using xconfig to Configure the Kernel 467
Creating an Initial RAM Disk Image 470
When Something Goes Wrong 470
Errors During Compile 471
Runtime Errors, Boot Loader Problems, and Kernel Oops 472
References 472

Chapter 23 Sharing Files and Printers 473

Using the Network File System 474
Installing and Starting or Stopping NFS 474
NFS Server Configuration 474
NFS Client Configuration 475
Putting Samba to Work 476
Manually Configuring Samba with /etc/samba/smb.conf 478
Testing Samba with the testparm Command 481
Starting, Stopping, and Restarting the smbd Daemon 481
Mounting Samba Shares 482
Network and Remote Printing with Ubuntu 483
Creating Network Printers 483
Using the Common UNIX Printing System GUI 485
Avoiding Printer Support Problems 486
References 488
Chapter 24 Apache Web Server Management 489
About the Apache Web Server 489
Installing the Apache Server 490
Starting and Stopping Apache 491
Runtime Server Configuration Settings 492
Runtime Configuration Directives 492
Editing apache2.conf 493
Apache Multiprocessing Modules 495
Using .htaccess Configuration Files 496
File System Authentication and Access Control 498
Restricting Access with Require 498
Authentication 499
Final Words on Access Control 501
Apache Modules 502
mod_access 502
mod_alias 502
mod_asis 503
mod_auth 503
mod_auth_anon 503
mod_auth_dbm 503
mod_auth_digest 504
mod_autoindex 504
mod_cgi 504
mod_dir and mod_env 504
mod_expires 504
mod_headers 504
mod_include 505
mod_info and mod_log_config 505
mod_mime and mod_mime_magic 505
mod_negotiation 505
mod_proxy 505
mod_rewrite 505
mod_setenvif 506
mod_speling 506
mod_status 506
mod_ssl 506
mod_unique_id 506
mod_userdir 506
mod_usertrack 507
mod_vhost_alias 507
Virtual Hosting 507
Address-Based Virtual Hosts 507
Name-Based Virtual Hosts 508
Logging 509
References 513
Chapter 25 Nginx Web Server Management 515
About the Nginx Web Server 515
Installing the Nginx Server 517
Installing from the Ubuntu Repositories 517
Building the Source Yourself 517
Configuring the Nginx Server 518
Virtual Hosting 521
Setting Up PHP 522
Adding and Configuring Modules 523
References 526
Chapter 26 Other HTTP Servers 527
lighttpd 527
Yaws 528
Cherokee 528
Jetty 529
thttpd 529
Apache Tomcat 530
References 530
Chapter 27 Remote File Serving with FTP 531
Choosing an FTP Server 531
Choosing an Authenticated or Anonymous Server 532
Ubuntu FTP Server Packages 532
Other FTP Servers 532
Installing FTP Software 533
The FTP User 534
Configuring the Very Secure FTP Server 536
Controlling Anonymous Access 537
Other vsftpd Server Configuration Files 537
Using the ftphosts File to Allow or Deny FTP Server Connection 539
References 540
Chapter 28 Handling Email 541
How Email Is Sent and Received 541
The Mail Transport Agent 542
Choosing an MTA 544
The Mail Delivery Agent544
The Mail User Agent 545
Basic Postfix Configuration and Operation 546
Configuring Masquerading 548
Using Smart Hosts 549
Setting Message Delivery Intervals 549
Mail Relaying 550
Forwarding Email with Aliases 550
Using Fetchmail to Retrieve Mail 551
Installing Fetchmail 551
Configuring Fetchmail 551
Choosing a Mail Delivery Agent 555
Procmail 555
Spamassassin 555
Squirrelmail 556
Virus Scanners 556
Autoresponders 556
Alternatives to Microsoft Exchange Server 556
Microsoft Exchange Server/Outlook Client 557
CommuniGate Pro 557
Oracle Beehive 557
Bynari 558
Open-Xchange 558
Horde 558
References 558
Chapter 29 Proxying, Reverse Proxying, and Virtual Private Networks (VPN) 561
What Is a Proxy Server? 561
Installing Squid 562
Configuring Clients 562
Access Control Lists 563
Specifying Client IP Addresses 567
Sample Configurations 568
Virtual Private Networks (VPN) 570
Setting Up a VPN Client 571
Setting Up a VPN Server 573
References 575
Chapter 30 Administering Relational Database Services 577
A Brief Review of Database Basics 578
How Relational Databases Work 580
Understanding SQL Basics 582
Creating Tables 582
Inserting Data into Tables 583
Retrieving Data from a Database 584
Choosing a Database: MySQL Versus PostgreSQL 586
Speed 586
Data Locking 586
ACID Compliance in Transaction Processing to Protect Data Integrity 587
SQL Subqueries 588
Procedural Languages and Triggers 588
Configuring MySQL 588
Setting a Password for the MySQL Root User 589
Creating a Database in MySQL 590
Configuring PostgreSQL 592
Initializing the Data Directory in PostgreSQL 592
Creating a Database in PostgreSQL 593
Creating Database Users in PostgreSQL 593
Deleting Database Users in PostgreSQL 594
Granting and Revoking Privileges in PostgreSQL 594
Database Clients 595
SSH Access to a Database 595
Local GUI Client Access to a Database 597
Web Access to a Database 597
The MySQL Command-Line Client 598
The PostgreSQL Command-Line Client 600
Graphical Clients 600
References 601
Chapter 31 NoSQL Databases 603
Key/Value Stores 606
Berkeley DB 606
Cassandra 607
Memcached and MemcacheDB 607
Redis 608
Riak 608
Document Stores 608
CouchDB 609
MongoDB 610
BaseX 610
Wide Column Stores 611
BigTable 611
HBase 611
Graph Stores 612
Neo4j 612
OrientDB 612
HyperGraphDB 612
FlockDB 613
References 613
Chapter 32 Lightweight Directory Access Protocol (LDAP) 615
Configuring the Server 616
Creating Your Schema 616
Populating Your Directory 617
Configuring Clients 619
Evolution 620
Thunderbird 621
Administration 621
References 622
Chapter 33 Linux Terminal Server Project (LTSP) 623
Requirements 624
Installation 627
Using LTSP 628
References 629
Chapter 34 Virtualization on Ubuntu 631
KVM 633
VirtualBox 637
VMware 639
Xen 639
References 639
Chapter 35 Ubuntu in the Cloud 641
Why a Cloud? 642
Software as a Service (SaaS) 643
Platform as a Service (PaaS) 643
Infrastructure as a Service (IaaS) 643
Metal as a Service (MaaS) 643
Before You Do Anything 644
Deploy/Install Basics: Public, Private, or Hybrid? 644
Ubuntu Cloud and OpenStack 645
Compute Infrastructure (Nova) 645
Storage Infrastructure (Swift) 646
Networking Service (Neutron) 646
Identity Service (Keystone) 646
Imaging Service (Glance) 647
Dashboard (Horizon) 647
Learning More 647
Juju 647
Getting Started 648
Charms 650
The Juju GUI 652
Juju Quickstart 653
Juju on Mac OS X and Windows 653
Mojo: Continuous Delivery for Juju 653
Snappy Ubuntu Core 653
Ubuntu Metal as a Service (MaaS) 653
Landscape 654
References 654
Chapter 36 Managing Sets of Servers 655
Juju 655
Puppet 656
Chef 656
CFEngine 656
Ansible 657
Landscape 657
References 657
Chapter 37 Name Serving with the Domain Name System (DNS) 659
Understanding Domain Names 661
DNS Servers 661
DNS Records 662
Setting Up a DNS Server with BIND 665
References 667

Chapter 38 Using Programming Tools for Ubuntu 669

Programming with Linux 670
Using the C Programming Project Management Tools Provided with Ubuntu 671
Building Programs with make 671
Using Makefiles 671
Using the autoconf Utility to Configure Code 673
Debugging Tools 674
Using the GNU C Compiler 675
Graphical Development Tools 676
Using the KDevelop Client 676
The Glade Client for Developing in GNOME 677
Use an IDE or SDK 678
References 680
Chapter 39 Opportunistic Development 681
Version Control Systems 681
Managing Software Projects with Git 682
Managing Software Projects with Bazaar 683
Managing Software Projects with Subversion 684
Managing Software Projects with Mercurial 685
Introduction to Opportunistic Development 686
Launchpad 687
Ubuntu Make 688
Creating Snap Packages 689
Bikeshed and Other Tools 689
References 692
Chapter 40 Helping with Ubuntu Development 693
Introduction to Ubuntu Development 694
Setting Up Your Development System 695
Install Basic Packages and Configure 695
Create a Launchpad Account 696
Set Up Your Environment to Work with Launchpad 696
Developing Apps and Scopes 698
Fixing Bugs and Packaging 698
Finding Bugs to Fix with Harvest 701
Masters of the Universe 701
References 702
Chapter 41 Helping with Ubuntu Testing and QA 703
Community Teams 703
Ubuntu Testing Team 704
QA Team705
Bug Squad 705
Test Drive 705
References 708
Chapter 42 Using Popular Programming Languages 709
Ada 710
Clojure 710
D 712
Dart 712
Elixir 713
Erlang 713
Forth 713
Go 714
Fortran 714
Groovy 715
Haskell 715
Java 715
JavaScript 716
Lisp 716
Lua 717
Mono 717
OCaml 718
Perl 718
PHP 719
Python 719
Ruby 719
Rust 720
Scala 720
Scratch 720
Vala 720
References 721
Chapter 43 Beginning Mobile Development for Android 723
Introduction to Android 724
Hardware 724
Linux Kernel 724
Libraries 724
Android Runtime 724
Application Framework 725
Applications 725
Installing Android Studio 725
Install Android Studio 725
Install SDK Packages 725
Create Your First Application 727
References 728
Chapter 44 Developing for Ubuntu Mobile/Touch 729
Install the SDK 730
Create Your First Application 730
References 731
Index 733

Chapter 45 Using Perl Web
Using Perl with Linux
Perl Versions
A Simple Perl Program
Perl Variables and Data Structures
Perl Variable Types
Special Variables
Comparison Operators
Compound Operators
Arithmetic Operators
Other Operators
Special String Constants
Conditional Statements: if/else and unless if unless
Looping for foreach while until last and next do ..while and do ..until
Regular Expressions
Access to the Shell
Modules and CPAN
Code Examples
Sending Mail
Purging Logs
Posting to Usenet
Command-Line Processing
Chapter 46 Using Python
Python on Linux
The Basics of Python
More on Strings
Conditionals and Looping
Object Orientation
Class and Object Variables
Constructors and Destructors
Class Inheritance
The Standard Library and the Python Package Index
Chapter 47 Using PHP
Introduction to PHP
Entering and Exiting PHP Mode
Escape Sequences
Variable Substitution
Conditional Statements
Special Operators
Including Other Files
Basic Functions
Handling HTML Forms

Customer Reviews