HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Ubuntu Unleashed 2015 Edition is filled with unique and advanced information for everyone who wants to make the most of the Linux-based Ubuntu operating system. This new edition has been thoroughly revised and updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 14.10 while including tons of information that will continue to apply to future editions.
Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 14.10 installation, configuration, productivity, multimedia, development, system administration, server operations, networking, virtualization, security, DevOps, and more–including intermediate-to-advanced techniques you won’t find in any other book.
Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of Ubuntu’s Unity interface, various types of servers, software repositories, database options, virtualization and cloud services, development tools, monitoring, troubleshooting, Ubuntu’s push into mobile and other touch screen devices, and much more.
Detailed information on how to…
Ubuntu 14.10 on DVD
DVD includes the full Ubuntu 14.10 distribution for 64 bit computers (most desktop and notebooks systems today) as well as the complete LibreOffice office suite and hundreds of additional programs and utilities.
Free Kick Start Chapter!
Purchase this book and receive a free Ubuntu 15.04 Kick Start chapter after Ubuntu 15.04 is released. See inside back cover for details
Please download the bonus chapter associated with Ubuntu Unleashed 2015 Edition here.
Please visit the author's site here
Please visit the website associated with Ubuntu Unleashed at informit.com/sams.
Download the sample pages (includes Chapter 9 and Index)
Introduction 1
Licensing 2
Who This Book Is For 3
Those Wanting to Become Intermediate or Advanced Users 3
Sysadmins, Programmers, and DevOps 4
What This Book Contains 5
Conventions Used in This Book 6
Part I Getting Started
1 Installing Ubuntu and Post-Installation Configuration 9
Before You Begin the Installation 9
Researching Your Hardware Specifications 10
Installation Options 10
32-Bit vs. 64-Bit Ubuntu 12
Planning Partition Strategies 13
The Boot Loader 13
Installing from DVD or USB Drive 14
Step-by-Step Installation 14
Installing 15
First Update 20
Shutting Down 20
Finding Programs and Files 21
Software Updater 22
The sudo Command 25
Configuring Software Repositories 26
System Settings 28
Detecting and Configuring a Printer 29
Configuring Power Management in Ubuntu 29
Setting the Time and Date 30
Configuring Wireless Networks 32
Troubleshooting Post-Installation Configuration Problems 33
References 34
2 Background Information and Resources 35
What Is Linux? 35
Why Use Linux? 37
What Is Ubuntu? 39
Ubuntu for Business 40
Ubuntu in Your Home 41
Getting the Most from Ubuntu and Linux Documentation 41
Ubuntu Developers and Documentation 43
Websites and Search Engines 43
Web Search Tips 43
Google Is Your Friend 44
Ubuntu Package Listings 44
Commercial Support 44
Documentation 45
Linux Guides 45
Ubuntu 46
Mailing Lists 46
Ubuntu Project Mailing Lists 47
Internet Relay Chat 48
Part II Desktop Ubuntu
3 Working with Unity 49
Foundations and the X Server 49
Basic X Concepts 50
Using X 51
Elements of the xorg.conf File 52
Starting X 57
Using a Display Manager 58
Changing Window Managers 58
Using Unity, a Primer 59
The Desktop 59
Customizing and Configuring Unity 64
Power Shortcuts 66
References 67
4 On the Internet 69
Getting Started with Firefox 70
Checking Out Google Chrome and Chromium 71
Choosing an Email Client 73
Mozilla Thunderbird 73
Evolution 74
Other Mail Clients 75
RSS Readers 76
Firefox 76
Liferea 76
Instant Messaging and Video Conferencing with Empathy 77
Internet Relay Chat 78
Usenet Newsgroups 80
References 82
5 Productivity Applications 83
Introducing LibreOffice 85
Other Office Suites for Ubuntu 87
Working with GNOME Office 87
Working with KOffice 88
Other Useful Productivity Software 89
Working with PDF 89
Working with XML and DocBook 89
Working with LaTeX 91
Productivity Applications Written for Microsoft Windows 91
References 92
6 Multimedia Applications 93
Sound and Music 93
Sound Cards 94
Adjusting Volume 95
Sound Formats 96
Listening to Music 97
Buying Music in the Ubuntu One Music Store 99
Graphics Manipulation 100
The GNU Image Manipulation Program 101
Using Scanners in Ubuntu 103
Working with Graphics Formats 103
Capturing Screen Images 105
Other Graphics Manipulation Options 106
Using Digital Cameras with Ubuntu 106
Handheld Digital Cameras 106
Using Shotwell Photo Manager 107
Burning CDs and DVDs in Ubuntu 107
Creating CDs and DVDs with Brasero 108
Creating CDs from the Command Line 109
Creating DVDs from the Command Line 110
Viewing Video 112
TV and Video Hardware 112
Video Formats 114
Viewing Video in Linux 114
Personal Video Recorders 116
Video Editing 116
References 117
7 Other Ubuntu Interfaces 119
Desktop Environment 120
KDE and Kubuntu 121
Xfce and Xubuntu 122
LXDE and Lubuntu 123
GNOME 3 and Ubuntu GNOME 124
Ubuntu Kylin 125
References 126
8 Games 127
Ubuntu Gaming 127
Installing Proprietary Video Drivers 128
Installing Games in Ubuntu 129
Warsow 129
Scorched 3D 130
Frozen Bubble 131
SuperTux 131
Battle for Wesnoth 133
Frets on Fire 133
FlightGear 134
Speed Dreams 134
Games for Kids 134
Commercial Games 135
Steam 136
Playing Windows Games 136
References 137
Part III System Administration
9 Managing Software 139
Ubuntu Software Center 139
Using Synaptic for Software Management 140
Staying Up-to-Date 142
Working on the Command Line 143
Day-to-Day Usage 144
Finding Software 147
Compiling Software from Source 148
Compiling from a Tarball 148
Compiling from Source from the Ubuntu Repositories 149
Configuration Management 150
dotdee 150
OneConf 151
References 151
10 Command-Line Quickstart 153
What Is the Command Line? 154
Accessing the Command Line 155
Text-Based Console Login 156
Logging Out 157
Logging In and Out from a Remote Computer 157
User Accounts 158
Reading Documentation 160
Using Man Pages 160
Using apropros 160
Using whereis 161
Understanding the Linux File System Hierarchy 161
Essential Commands in /bin and /sbin 162
Configuration Files in /etc 163
User Directories: /home 163
Using the Contents of the /proc Directory to Interact with the Kernel 164
Working with Shared Data in the /usr Directory 165
Temporary File Storage in the /tmp Directory 166
Accessing Variable Data Files in the /var Directory 166
Navigating the Linux File System 166
Listing the Contents of a Directory with ls 166
Changing Directories with cd 168
Finding Your Current Directory with pwd 169
Working with Permissions 169
Assigning Permissions 170
Directory Permissions 171
Altering File Permissions with chmod 172
File Permissions with chgrp 173
Changing File Permissions with chown 173
Understanding Set User ID and Set Group ID Permissions 173
Working with Files 175
Creating a File with touch 175
Creating a Directory with mkdir 175
Deleting a Directory with rmdir 176
Deleting a File or Directory with rm 177
Moving or Renaming a File with mv 177
Copying a File with cp 178
Displaying the Contents of a File with cat 179
Displaying the Contents of a File with less 179
Using Wildcards and Regular Expressions 179
Working as Root 180
Understanding and Fixing sudo 180
Creating Users 183
Deleting Users 184
Shutting Down the System 184
Rebooting the System 185
Commonly Used Commands and Programs 185
References 186
11 Command-Line Master Class 187
Why Use the Command Line? 188
Using Basic Commands 189
Printing the Contents of a File with cat 191
Changing Directories with cd 191
Changing File Access Permissions with chmod 193
Copying Files with cp 194
Printing Disk Usage with du 194
Finding Files by Searching with find 195
Searches for a String in Input with grep 197
Paging Through Output with less 198
Creating Links Between Files with ln 200
Finding Files from an Index with locate 202
Listing Files in the Current Directory with ls 202
Reading Manual Pages with man 204
Making Directories with mkdir 205
Moving Files with mv 205
Deleting Files and Directories with rm 206
Sorting the Contents of a File with sort 206
Printing the Last Lines of a File with tail 208
Using echo 209
Printing the Location of a Command with which 209
Redirecting Output and Input 209
stdin, stdout, sdterr, and Redirection 211
Comparing Files 212
Finding Differences in Files with diff 212
Finding Similarities in Files with comm 213
Limiting Resource Use and Job Control 213
Listing Processes with ps 213
Listing Jobs with jobs 214
Running One or More Tasks in the Background 215
Moving Jobs to the Background or Foreground with bg and fg 216
Printing Resource Usage with top 216
Setting Processes Priority with nice 219
Combining Commands 220
Pipes 220
Combining Commands with Boolean Operators 222
Running Separate Commands in Sequence 222
Using Environment Variables 222
Using Common Text Editors 226
Working with nano 227
Working with vi 228
Working with emacs 229
Working with sed and awk 230
Working with Compressed Files 232
Using Multiple Terminals with byobu 233
Polite System Reset Using REISUB 234
Tips and Tricks 235
Running the Previous Command 235
Running Any Previous Command 236
Running a Previous Command That Started with
Specific Letters 236
Running the Same Thing You Just Ran with a Different
First Word 236
Viewing Your History and More 236
Do Two or More Things 236
Shortcuts 237
Coreutils 237
References 237
12 Managing Users 239
User Accounts 239
The Super User/Root User 240
User IDs and Group IDs 242
File Permissions 242
Managing Groups 243
Group Listing 243
Group Management Tools 245
Managing Users 246
User Management Tools 246
Adding New Users 248
Monitoring User Activity on the System 252
Managing Passwords 253
System Password Policy 253
The Password File 253
Shadow Passwords 254
Managing Password Security for Users 257
Changing Passwords in a Batch 257
Granting System Administrator Privileges to
Regular Users 258
Temporarily Changing User Identity with the su Command 258
Granting Root Privileges on Occasion: The sudo Command 260
Disk Quotas 263
Implementing Quotas 263
Manually Configuring Quotas 264
Related Ubuntu Commands 265
References 265
13 Automating Tasks and Shell Scripting 267
Scheduling Tasks 267
Using at and batch to Schedule Tasks for Later 267
Using cron to Run Jobs Repeatedly 270
Using rtcwake to Wake Your Computer from Sleep
Automatically 272
Basic Shell Control 274
The Shell Command Line 275
Shell Pattern-Matching Support 276
Redirecting Input and Output 277
Piping Data 278
Background Processing 278
Writing and Executing a Shell Script 279
Running the New Shell Program 280
Storing Shell Scripts for System-Wide Access 281
Interpreting Shell Scripts Through Specific Shells 282
Using Variables in Shell Scripts 283
Assigning a Value to a Variable 284
Accessing Variable Values 284
Positional Parameters 284
A Simple Example of a Positional Parameter 285
Using Positional Parameters to Access and Retrieve Variables from the Command Line 286
Using a Simple Script to Automate Tasks 286
Built-In Variables 288
Special Characters 289
Using Double Quotes to Resolve Variables in Strings with Embedded Spaces 290
Using Single Quotes to Maintain Unexpanded Variables 290
Using the Backslash as an Escape Character 291
Using the Backtick to Replace a String with Output 292
Comparison of Expressions in pdksh and bash 292
Comparing Expressions with tcsh 297
The for Statement 301
The while Statement 303
The until Statement 304
The repeat Statement (tcsh) 305
The select Statement (pdksh) 305
The shift Statement 306
The if Statement 306
The case Statement 308
The break and exit Statements 310
Using Functions in Shell Scripts 310
References 311
14 The Boot Process 313
Running Services at Boot 313
Beginning the Boot Loading Process 314
Loading the Linux Kernel 315
System Services and Runlevels 316
Runlevel Definitions 316
Booting into the Default Runlevel 317
Understanding init Scripts and the Final Stage of Initialization 317
Controlling Services at Boot with Administrative Tools 318
Changing Runlevels 318
Troubleshooting Runlevel Problems 319
Starting and Stopping Services Manually 320
Using Upstart 321
systemd 322
Boot Repair 322
References 322
15 System-Monitoring Tools 323
Console-Based Monitoring 323
Using the kill Command to Control Processes 325
Using Priority Scheduling and Control 326
Displaying Free and Used Memory with free 327
Disk Space 328
Disk Quotas 329
Checking Log Files 329
Rotating Log Files 331
Graphical Process and System Management Tools 336
System Monitor 336
Conky 338
Other 342
KDE Process- and System-Monitoring Tools 343
Enterprise Server Monitoring 343
Landscape 343
Other 343
References 344
16 Backing Up 345
Choosing a Backup Strategy 345
Why Data Loss Occurs 346
Assessing Your Backup Needs and Resources 347
Evaluating Backup Strategies 349
Making the Choice 352
Choosing Backup Hardware and Media 352
Removable Storage Media 352
CD-RW and DVD+RW/-RW Drives 353
Network Storage 353
Tape Drive Backup 353
Cloud Storage 354
Using Backup Software 354
tar: The Most Basic Backup Tool 355
The GNOME File Roller 357
The KDE ark Archiving Tool 358
Déjà Dup 358
Back In Time 360
Unison 362
Using the Amanda Backup Application 362
Alternative Backup Software 363
Copying Files 364
Copying Files Using tar 364
Compressing, Encrypting, and Sending tar Streams 365
Copying Files Using cp 365
Copying Files Using mc 366
Using rsync 366
Version Control for Configuration Files 368
System Rescue 370
The Ubuntu Rescue Disc 371
Restoring the GRUB2 Boot Loader 371
Saving Files from a Nonbooting Hard Drive 372
References 372
17 Networking 373
Laying the Foundation: The localhost Interface 374
Checking for the Availability of the Loopback Interface 374
Configuring the Loopback Interface Manually 374
Checking Connections with ping, traceroute, and mtr 376
Networking with TCP/IP 378
TCP/IP Addressing 379
Using IP Masquerading in Ubuntu 381
Ports 382
IPv6 Basics 382
Network Organization 385
Subnetting 385
Subnet Masks 386
Broadcast, Unicast, and Multicast Addressing 386
Hardware Devices for Networking 387
Network Interface Cards 387
Network Cable 389
Hubs and Switches 390
Routers and Bridges 391
Initializing New Network Hardware 391
Using Network Configuration Tools 393
Command-Line Network Interface Configuration 394
Network Configuration Files 399
Using Graphical Configuration Tools 401
Dynamic Host Configuration Protocol 403
How DHCP Works 403
Activating DHCP at Installation and Boot Time 404
DHCP Software Installation and Configuration 405
Using DHCP to Configure Network Hosts 407
Other Uses for DHCP 409
Wireless Networking 409
Support for Wireless Networking in Ubuntu 409
Advantages of Wireless Networking 411
Choosing from Among Available Wireless Protocols 411
Beyond the Network and onto the Internet 412
Common Configuration Information 412
Configuring Digital Subscriber Line Access 414
Understanding PPP over Ethernet 414
Configuring a PPPoE Connection Manually 415
Configuring Dial-Up Internet Access 416
Troubleshooting Connection Problems 417
References 418
18 Remote Access with SSH, Telnet, and VNC 419
Setting Up a Telnet Server 419
Telnet Versus SSH 421
Setting Up an SSH Server 421
SSH Tools 421
Using scp to Copy Individual Files Between Machines 422
Using sftp to Copy Many Files Between Machines 423
Using ssh-keygen to Enable Key-Based Logins 423
Virtual Network Computing 425
References 427
19 Securing Your Machines 429
Understanding Computer Attacks 429
Assessing Your Vulnerability 431
Protecting Your Machine 432
Securing a Wireless Network 433
Passwords and Physical Security 433
Configuring and Using Tripwire 434
Devices 435
Viruses 435
Configuring Your Firewall 436
AppArmor 440
Forming a Disaster Recovery Plan 442
References 443
20 Performance Tuning 445
Hard Disk 445
Using the BIOS and Kernel to Tune the Disk Drives 446
The hdparm Command 447
File System Tuning 448
The tune2fs Command 448
The e2fsck Command 449
The badblocks Command 449
Disabling File Access Time 449
Kernel 450
Apache 451
MySQL 452
Measuring Key Buffer Usage 452
Using the Query Cache 454
Miscellaneous Tweaks 455
Query Optimization 456
References 456
21 Kernel and Module Management 457
The Linux Kernel 458
The Linux Source Tree 459
Types of Kernels 461
Managing Modules 462
When to Recompile 464
Kernel Versions 465
Obtaining the Kernel Sources 466
Patching the Kernel 467
Compiling the Kernel 468
Using xconfig to Configure the Kernel 471
Creating an Initial RAM Disk Image 474
When Something Goes Wrong 475
Errors During Compile 475
Runtime Errors, Boot Loader Problems, and Kernel Oops 476
References 476
Part IV Ubuntu as a Server
22 Sharing Files and Printers 479
Using the Network File System 480
Installing and Starting or Stopping NFS 480
NFS Server Configuration 480
NFS Client Configuration 482
Putting Samba to Work 482
Manually Configuring Samba with /etc/samba/smb.conf 484
Testing Samba with the testparm Command 487
Starting, Stopping, and Restarting the smbd Daemon 488
Mounting Samba Shares 489
Network and Remote Printing with Ubuntu 489
Creating Network Printers 490
Using the Common UNIX Printing System GUI 491
Avoiding Printer Support Problems 493
References 494
23 Apache Web Server Management 495
About the Apache Web Server 495
Installing the Apache Server 496
Installing from the Ubuntu Repositories 496
Building the Source Yourself 498
Starting and Stopping Apache 500
Starting the Apache Server Manually 500
Using /etc/init.d/apache2 502
Runtime Server Configuration Settings 503
Runtime Configuration Directives 503
Editing apache2.conf 504
Apache Multiprocessing Modules 507
Using .htaccess Configuration Files 507
File System Authentication and Access Control 509
Restricting Access with allow and deny 510
Authentication 511
Final Words on Access Control 513
Apache Modules 514
mod_access 514
mod_alias 514
mod_asis 515
mod_auth 515
mod_auth_anon 515
mod_auth_dbm 516
mod_auth_digest 516
mod_autoindex 516
mod_cgi 516
mod_dir and mod_env 516
mod_expires 516
mod_headers 516
mod_include 517
mod_info and mod_log_config 517
mod_mime and mod_mime_magic 517
mod_negotiation 517
mod_proxy 517
mod_rewrite 518
mod_setenvif 518
mod_speling 518
mod_status 518
mod_ssl 518
mod_unique_id 518
mod_userdir 519
mod_usertrack 519
mod_vhost_alias 519
Virtual Hosting 519
Address-Based Virtual Hosts 519
Name-Based Virtual Hosts 520
Logging 521
HTTPS 523
References 525
24 Nginx Web Server Management 527
About the Nginx Web Server 527
Installing the Nginx Server 529
Installing from the Ubuntu Repositories 529
Building the Source Yourself 530
Configuring the Nginx Server 530
Virtual Hosting 533
Setting Up PHP 534
Adding and Configuring Modules 536
HTTPS 536
References 538
25 Other HTTP Servers 539
lighttpd 539
Yaws 540
Cherokee 541
Jetty 541
thttpd 542
Apache Tomcat 542
References 542
26 Remote File Serving with FTP 543
Choosing an FTP Server 543
Choosing an Authenticated or Anonymous Server 544
Ubuntu FTP Server Packages 544
Other FTP Servers 544
Installing FTP Software 545
The FTP User 546
Configuring the Very Secure FTP Server 548
Controlling Anonymous Access 549
Other vsftpd Server Configuration Files 550
Using the ftphosts File to Allow or Deny FTP Server Connection 551
References 552
27 Handling Email 553
How Email Is Sent and Received 553
The Mail Transport Agent 554
Choosing an MTA 556
The Mail Delivery Agent 556
The Mail User Agent 557
Basic Postfix Configuration and Operation 558
Configuring Masquerading 560
Using Smart Hosts 561
Setting Message Delivery Intervals 561
Mail Relaying 562
Forwarding Email with Aliases 562
Using Fetchmail to Retrieve Mail 563
Installing Fetchmail 563
Configuring Fetchmail 563
Choosing a Mail Delivery Agent 567
Procmail 567
Spamassassin 567
Squirrelmail 568
Virus Scanners 568
Autoresponders 568
Alternatives to Microsoft Exchange Server 568
Microsoft Exchange Server/Outlook Client 569
CommuniGate Pro 569
Oracle Beehive 570
Bynari 570
Open-Xchange 570
phpgroupware 570
PHProjekt 570
Horde 570
References 571
28 Proxying, Reverse Proxying, and Virtual Private Networks (VPN) 573
What Is a Proxy Server? 573
Installing Squid 574
Configuring Clients 574
Access Control Lists 575
Specifying Client IP Addresses 579
Sample Configurations 580
Virtual Private Networks (VPN) 582
Setting Up a VPN Client 583
Setting Up a VPN Server 585
References 587
29 Administering Relational Database Services 589
A Brief Review of Database Basics 590
How Relational Databases Work 592
Understanding SQL Basics 594
Creating Tables 594
Inserting Data into Tables 595
Retrieving Data from a Database 596
Choosing a Database: MySQL Versus PostgreSQL 598
Speed 598
Data Locking 599
ACID Compliance in Transaction Processing to
Protect Data Integrity 599
SQL Subqueries 600
Procedural Languages and Triggers 600
Configuring MySQL 601
Setting a Password for the MySQL Root User 602
Creating a Database in MySQL 602
Configuring PostgreSQL 604
Initializing the Data Directory in PostgreSQL 604
Creating a Database in PostgreSQL 605
Creating Database Users in PostgreSQL 606
Deleting Database Users in PostgreSQL 606
Granting and Revoking Privileges in PostgreSQL 607
Database Clients 607
SSH Access to a Database 608
Local GUI Client Access to a Database 609
Web Access to a Database 610
The MySQL Command-Line Client 611
The PostgreSQL Command-Line Client 612
Graphical Clients 613
References 613
30 NoSQL Databases 615
Key/Value Stores 618
Berkeley DB 618
Cassandra 619
Memcached and MemcacheDB 619
Redis 620
Riak 620
Document Stores 620
CouchDB 621
MongoDB 622
BaseX 622
Wide Column Stores 623
BigTable 623
HBase 623
Graph Stores 624
Neo4j 624
OrientDB 624
HyperGraphDB 624
FlockDB 625
References 625
31 Lightweight Directory Access Protocol (LDAP) 627
Configuring the Server 628
Creating Your Schema 628
Populating Your Directory 630
Configuring Clients 632
Evolution 632
Thunderbird 633
Administration 633
References 634
32 Linux Terminal Server Project (LTSP) 635
Requirements 636
Installation 639
Using LTSP 640
References 641
33 Virtualization on Ubuntu 643
KVM 645
VirtualBox 649
VMware 651
Xen 651
References 651
34 Ubuntu in the Cloud 653
Why a Cloud? 654
Software as a Service (SaaS) 655
Platform as a Service (PaaS) 655
Infrastructure as a Service (IaaS) 655
Metal as a Service (MaaS) 656
Before You Do Anything 656
Ubuntu Cloud and Eucalyptus 656
Deploy/Install Basics: Public, Private, or Hybrid? 656
Ubuntu Cloud and OpenStack 657
Compute Infrastructure (Nova) 658
Storage Infrastructure (Swift) 659
Networking Service (Neutron) 659
Identity Service (Keystone) 659
Imaging Service (Glance) 659
Dashboard (Horizon) 659
Learning More 659
Juju 660
Getting Started 660
Charms 663
The Juju GUI 665
Juju Quickstart 665
Juju on Mac OS X and Windows 665
Ubuntu Metal as a Service (MaaS) 666
Landscape 666
References 666
35 Managing Sets of Servers 669
Juju 669
Puppet 670
Chef 670
CFEngine 671
Ansible 671
Landscape 671
References 671
36 Name Serving with the Domain Name System (DNS) 673
Understanding Domain Names 675
DNS Servers 675
DNS Records 676
Setting Up a DNS Server with BIND 679
References 681
Part V Programming Linux
37 Using Programming Tools for Ubuntu 683
Programming with Linux 684
Using the C Programming Project Management Tools
Provided with Ubuntu 685
Building Programs with make 685
Using Makefiles 685
Using the autoconf Utility to Configure Code 687
Debugging Tools 688
Using the GNU C Compiler 689
Graphical Development Tools 690
Using the KDevelop Client 690
The Glade Client for Developing in GNOME 691
Use an IDE or SDK 692
References 694
38 Opportunistic Development 695
Version Control Systems 696
Managing Software Projects with Subversion 696
Managing Software Projects with Bazaar 697
Managing Software Projects with Mercurial 698
Managing Software Projects with Git 699
Introduction to Opportunistic Development 700
Launchpad 701
Quickly 703
Bikeshed and Other Tools 707
References 709
39 Helping with Ubuntu Development 711
Introduction to Ubuntu Development 712
Setting Up Your Development System 713
Install Basic Packages and Configure 713
Create a Launchpad Account 714
Set Up Your Environment to Work with Launchpad 714
Fixing Bugs and Packaging 716
Finding Bugs to Fix with Harvest 719
Masters of the Universe 719
References 719
40 Helping with Ubuntu Testing and QA 721
Community Teams 721
Ubuntu Testing Team 722
QA Team 722
Bug Squad 723
Test Drive 723
References 726
41 Using Perl 727
Using Perl with Linux 727
Perl Versions 728
A Simple Perl Program 728
Perl Variables and Data Structures 730
Perl Variable Types 731
Special Variables 731
Operators 732
Comparison Operators 732
Compound Operators 733
Arithmetic Operators 733
Other Operators 734
Special String Constants 734
Conditional Statements: if/else and unless 735
if 735
unless 736
Looping 736
for 736
foreach 737
while 737
until 738
last and next 738
do ... while and do ... until 738
Regular Expressions 739
Access to the Shell 740
Modules and CPAN 741
Code Examples 741
Sending Mail 741
Purging Logs 743
Posting to Usenet 744
One-Liners 745
Command-Line Processing 746
References 746
42 Using Python 749
Python on Linux 750
The Basics of Python 751
Numbers 751
More on Strings 753
Lists 756
Dictionaries 758
Conditionals and Looping 759
Functions 761
Object Orientation 762
Class and Object Variables 763
Constructors and Destructors 764
Class Inheritance 765
The Standard Library and the Python Package Index 767
References 767
43 Using PHP 769
Introduction to PHP 770
Entering and Exiting PHP Mode 770
Variables 770
Arrays 772
Constants 774
References 774
Comments 775
Escape Sequences 775
Variable Substitution 776
Operators 777
Conditional Statements 779
Special Operators 780
Switching 781
Loops 783
Including Other Files 785
Basic Functions 786
Strings 786
Arrays 789
Files 791
Miscellaneous 793
Handling HTML Forms 797
Databases 797
References 800
44 Using Other Popular Programming Languages 801
Ada 802
Clojure 803
COBOL 803
D 804
Erlang 804
Forth 805
Go 805
Fortran 806
Groovy 806
Dart 806
Haskell 807
Java 807
JavaScript 808
Lisp 808
Lua 809
Mono 809
OCaml 810
Ruby 810
Rust 811
Scala 811
Scratch 811
Vala 811
References 812
45 Beginning Mobile Development for Android 815
Introduction to Android 816
Hardware 816
Linux Kernel 816
Libraries 816
Android Runtime 816
Application Framework 816
Applications 817
Installing the Android SDK 817
Install Java 817
Install Eclipse 817
Install the SDK 817
Install the ADT Eclipse Plug-In 818
Install Other Components 818
Install Virtual Devices 819
Create Your First Application 820
References 821
46 Developing for Ubuntu Mobile/Touch 823
Install the SDK 824
Create Your First Application 824
Learn About Ubuntu Design 825
Study the User Interface Toolkit 825
References 826
Index 829