Navigating Linux Obstacles Working Outline
This outline provides a collection of issues, common to Linux users, and solutions for a possible Linux Troubleshooting book Navigating Linux Obstacles.
As of 10.27.03 this outline is based off of an estimated 3000+ suggestions from 1300+ people collected from various online forums such as Slashdot, ONLamp.com, a Linux Annoyances Mailing List and other resources.
The Obstacles keyword is a good potential for a series competing with the O'Reilly & Associates Annoyances series. Recommended covers involve obstacle courses.
Note: This outline, its previous forms and any derivation of work based in part of this outline is Copyrighted. This copyright belongs to Dee-Ann LeBlanc, Justin Davies and Paul Weinstein.
An introduction to cover what conventions are used and what the book is designed to cover.
Estimated Page Count: 8
Chapter 1: Troubleshooting and Getting Assistance
- About this Book
- What is a Linux Obstacle?
Chapter 1 will cover the wealth of information available on Linux by providing how to get the best bang for your support buck without getting annoyed, lost or confused by documentation that at times can seem too technical, answers that can be rude or arrogant and online forums that can seem hard to navigate. This chapter will also cover some of the common issues with understanding how to read log files, fix broken library files and recover a Linux-based system using rescue CDs.
Section 126.96.36.199 covers /proc
Section 1.1.3 includes all that fun library stuff like editing the appropriate files and running the appropriate commands. Sub-section 188.8.131.52 includes typical groupings (kernel libraries, X libraries and so on), 184.108.40.206 discusses things like /etc/ld.so.conf and other ways of solving problems of libraries that the system can't find. Sub-section 220.127.116.11 is on the dangers and tricks for having multiple versions of a library installed and 18.104.22.168 is on finding the right library, the right version and getting it installed.
Section 1.2 will cover the "doc" directory. Finding it in your distribution, what it's got, etc. This section should also cover how Debian tends to split a cofig file up and rebuilding to handle dependencies bettter. Another possible topic is to cover the trick of scanning the source code for open() functions to track what files the program touches.
Estimated Page Count: 20
Chapter 2: Software Obstacles
- 1.1 How the *bleep* do I fix this?
- 1.1.1 What just happened?
- 22.214.171.124 Introduction to common Linux log files
- 126.96.36.199 Finding log files
- 188.8.131.52 Understanding warning and error messages
- 184.108.40.206 Viewing other information about your system
- 1.1.2 Searching bug reports
- 1.1.3 What the heck's a library?
- 220.127.116.11 Introduction to Linux libraries
- 18.104.22.168 But it's already installed!
- 22.214.171.124 I need to have multiple versions installed
- 126.96.36.199 Tracking down missing libraries
- 1.1.4 Using specialty rescue CDs
- 1.2 Where's that config file?
Chapter 2 introduces the various software packaging methods available for various Linux distributions and covers core obstacles such as installing and ermoving software, dealing with software dependencies and working with source code.
Section 2.2 Will cover some of the basics of what "dependency hell" is, how to solve some of the issues by maintaining a library of local packages and limiting an online search to repositiories built around a specific packaging format and linux disitrbution. This section will also cover some of the more trying issues such as how to install an application that requires a newer version of some software dependency without breaking the software dependency of preinstalled software.
Each sub-section in Section 2.5 will talk about how to extract the package source, etc., and make adjustments in a smart way before rebuilding your own custom version of the package. Especially useful if you're using kickstart or an equivalent to automate installations or making your own NFS installation server for a lab environment
Section 2.6 will discuss when it maybe necessary to convert packages between package formats and how to do it. For example, there's alien for RPM <-> DEB, we could also maybe expand on the previous topic to explain how to roll your own from source code?
Section 2.7 is a chapter review trying bits and pieces together
Estimated Page Count: 40
Chapter 3: Interface Obstacles
- 2.1 How in the heck do I use tar?
- 2.2 Solving Software Dependencies
- 2.2.1 Solving RPM Dependencies
- 2.2.2 Solving Source Dependencies
- 2.2.3 Installing Packages out-of-sync
- 2.3 Keeping Installed Software Up-to-date
- 2.4 Removing installed software
- 2.5 Rolling and re-rolling your own software package
- 2.5.1 RPMS
- 2.5.2 DEBS
- 2.5.3 Source
- 2.5.4 Portage
- 2.6 Converting a package to another format
- 2.7 Bringing it all together: Managing your packages
Chapter 3 covers the obstacle of Linux having two methods to do everything, the CLI and GUI. It also covers how to select the method best suited to both the user and the task at hand and how to customize your interface for the ultimate fit.
Section 3.1 covers cmdline - GUI equivilents.
Section 3.2.1 explains POSIX arguments and what this means for the end user.
Section 3.3 covers keybindings issues
Section 3.5.3 covers how to have multiple logged on users via the GUI ala WinXP.
Estimated Page Count: 40
Chapter 4: Hardware Obstacles
- 3.1 Command Line and Graphical User tool equivalents
- 3.2 Solving Common Command Line Interface Obstacles
- 3.2.1 Understanding command line arguments and POSIX compliance
- 3.2.2 Creating shortcuts for commonly typed commands
- 3.3 Changing keyboard keys so they do what you expect
- 3.4 Solving Common Graphical User Interface Obstacles
- 3.4.1 Improving your font display
- 3.4.2 Cut and Paste between Windows
- 3.4.3 Adding Apps, docklets to GUI Menus
- 3.4.4 Speeding up your GUI
- 3.4.5 Creating new file type associations
- 3.4.6 Changing your refresh rate
- 3.5 Managing multiple sessions on a single monitor
- 3.5.1 Understanding multiple session for the Command Line Interface
- 3.5.2 Understanding multiple session for the Graphical User Interface
- 3.5.3 Switching sessions between users
- 3.6 Setting up one machine with multiple monitors
- 3.7 Smoothing out GNOME obstacles with customization
- 3.8 Smoothing out KDE obstacles with customization
Chapter 4 covers obstacles configuring and using Linux with various hardware architectures and devices.
Section 4.1 discusses that a lot of the hardware obstacles turn out to being problems with manufacturers not sticking with standards (like using non-standard USB devices) and not advertising this. They just say "we don't support Linux" when in fact the problem is that their hardware would work fine in Linux if they bothered to follow standards. So, this section will discuss this issue, and include ways someone can research whether something they want to buy (or have) is standards-compliant or not, and how to report to the best places that something is or isn't. There's a major computer vendor in the States that's selling non-USB-compliant mice, and there are lots of digital cameras that are non-USB-compliant.
Section 4.2 will cover how hotplug system works for USB and how to take advantage of it.
Section 4.3 will discuss storage devices such as floppies, cds, hds, flash cards, USB keychains, DVDs, etc. Sub-section 4.3.1 covers how to mount and unmount these devices, manually and automaticly. Sub-section 4.3.2 covers the differnt methods used to writing to various devices such as floppies, cds and hds.
Section 4.4.1 covers monitors and video cards. 4.4.4 should also cover the specific problem of many digital cameras being non-USB-standard compliant.
Section 4.5 needs to cover configuring printers via lpd and cups in local, stand-alone network and Windows Shared Printer setups.
Estimated Page Count: 56
Chapter 5: Desktop Obstacles
- 4.1 Understanding what's behind many hardware obstacles
- 4.2 Making smart use of USB hotplugging
- 4.4 Getting multimedia working
- 4.4.1 Why won't this video play?
- 4.4.2 My sound won't work!
- 4.4.3 How do I set up and use my scanner?
- 4.4.4 How do I grab files from my digital camera
- 4.4.5 Playing DVDs and Legal Issues
- 4.5 Troubleshooting printer problems?
- 4.6 Setting up non-mouse input devices
- 4.6.1 Drawing Tablets
- 4.6.2 Game Controllers
- 4.6.3 Remote Controls
- 4.6.4 Trackballs
- 4.7 Taking Linux on the Road
- 4.7.1 Laptops and Tablet PCs
- 188.8.131.52 Getting Power Management to On a Portable to Work
- 184.108.40.206 Managing Mulitple Network Configurations
- 220.127.116.11 Adding hardware via PC CARD (PCMCIA)
- 4.8 Communications
- 4.8.1 Getting the dreaded Linmodem to work
- 4.8.2 Wireless: WiFi
- 4.8.3 Wireless: Bluetooth
- 4.8.4 Wireless: Infrared
- 4.8.5 Hotplug
- 4.8.6 Firewire
- 4.9 CPUs
- 4.9.1 PowerPC
- 4.9.2 64-bit
- 4.9.3 Mulitple Processors (SMP)
Chapter 5 covers obstacles with running common applications on a Workstation/Desktop Linux system. Such obstacles include accessing IE only websites, using IM clients and exchanging Office documents without loosing important formating information.
Section 5.1 will cover software equivalaents between Windows and Linux. For example MS Office to OpenOffice.org or Abiword, MS Outlook to Ximian Evolution.
Section 5.2 will cover system equivalaents between Windows and Linux. For example, in Windows NT/Win2K/Win2003, an admin/user can stop and start a serivce either by using the GUI Service panel or by issuing a "Net Start" and a "NetStop". In Linux the concept is different. kill -HUP`path/to/pid/service.pid`, Another example is Linux is very scriptdriven. Hence Windows has various startup directories/registryentries/Serivce pannel. Linux has RC scripts.
Section 5.4 will include compression issues (i.e zip files) as will Section 5.5.
Sub-Section 5.4.5 will cover how to work with Microsoft Office docuemnts with "breaking them." That is OpenOffice.org can open and process Office documents, but can mess up formating, fonts within a file that may go back to a MS Office user. This section or 5.3 can also cover methods of trasfer files from using cd or floppies to using the network via samba, scp, ftp, etc.
Estimated Page Count: 56
Chapter 6: Workstation Obstacles
- 5.1 Linux equivalents to Windows programs
- 5.2 Linux equivalents to Windows features
- 5.2.1 Getting Java to work
- 5.2.2 Getting MP3s to work
- 5.2.3 Listening to streaming broadcasts
- 5.2.4 Instant Messaging
- 5.2.5 Reading, Creating PDFs
- 5.3 Browsing Other Filesystems
- 5.3.1 Browsing Windows shares over a network
- 5.3.2 Browsing Macintosh shares over a network
- 5.3.3 Browsing other Unix shares over a network
- 5.3.4 Accessing partitions from "The other OS" on a multi-boot system
- 5.4 Exchanging files with Windows users
- 5.4.1 Zip Files
- 5.4.2 Address Books and vCards
- 5.4.3 Email Archives and mbox Format
- 5.4.4 Reading TNEF and RTF files
- 5.4.5 Office Documents Formats
- 5.5 Exchanging files with Macintosh users
- 5.6 Not Missing out on Web Content
- 5.6.1 Accessing "Internet Explorer Only" websites
- 5.6.2 Dealing with plugins for Quicktime, Java and other common web media.
- 5.7 When you have to use that Windows program
- 5.7.1 Why won't my Windows game run?
- 5.7.2 Selecting the best solution
- 5.7.3 Installing and configuring WINE
- 5.7.4 Using WINE
- 5.8 How to access and Office VPN
- 5.9 How to use a broadband connection with PPP
Chapter 6 covers the obstacle of using various development tools to mangage, build and test code on Linux. This chapter also covers known "gotchas" for building custom Linux kernels and touches a bit more on understanding the open source community with an eye to direct participation.
Section 6.1 and section 2.1 in Chapter 2 are in part related to each other as they cover how to get the most out of being involved in the community. This section should also deal with the technical and methodological side of programming, and will give a good introduction to the whole process.
Section 6.4.2 and 6.4.3 covers dealing with missing libraries from a developer point of view is a bit more advanced in dealing with this issue then the previous missing library sections in chapter 2.
Section 6.5 is not a how-to, more of a "Beware of these gotchas." Warnings about trying to patch vendor kernel source with patches meant for the main kernel's source. Sub-section 6.5.2 is pluses and minuses, strategies, etc. on replacing a vendor kernel with a raw kernel. 6.5.4 will explain how file operations work from the kernel perspective, e.g. what happens when you "mv" a file
Section 6.6 will be about the various characteristics of programming languages and how they relate such to avoid obstacles for developers. For example Perl's anything goes to Python's more refined structure. Or PHP's Apache Module design for speed for web programming to Perl's having to fork a new process (and interpreter).
Estimated Page Count: 62
Appendix A: References and Resources
- 6.1 I want to help!
- 6.1.1 Is this a bug, a feature or an obstacle?
- 6.1.2 Is this just user error?
- 6.1.3 Where should I report this bug?
- 6.1.4 Has this already been submitted?
- 6.1.5 Understanding Bugzilla
- 6.1.6 Understanding development life cycles
- 6.1.7 Giving Feedback on Pre-Release Software
- 6.2 Integrated Development Environment versus Assorted Tools
- 6.2.1 Linux Programming For Windows Developors
- 6.2.2 Kylix
- 6.2.3 kdevelop code-forge
- 6.3 Common Linux Development Tools
- 6.3.1 Version control with RCS
- 6.3.2 Version control with CVS
- 6.3.3 Keeping track of the build process with make
- 6.3.4 Debugging the gdb and valgrind debuggers
- 6.3.5 Building a configure script with autoconf
- 6.3.6 Applying and creating patches with patch and diff
- 6.3.7 Testing syntax with bison, yacc, lexx and lint
- 6.3.8 Tracking down memory leaks
- 6.4 Dealing with...
- 6.4.1 Missing Header Files
- 6.4.2 Missing Static Libraries
- 6.4.3 Out of date libraries and tools
- 6.4.4 Linking C++ code from different gcc versions
- 6.5 Kernel Obstacles
- 6.5.1 Upgrading your kernel
- 6.5.2 Replacing your vendor's kernel with a raw kernel
- 6.5.3 Configuring kernel source for PPC
- 6.5.4 Understanding file operations
- 6.5.5 Understanding Bitkeeper
- 6.5.6 Common kernel patches
- 6.6 Which Scripting Language is Right for Problem X?
Estimated Page Count: 10
Appendix B: Getting Help in the Open Source World
Estimated Page Count: 10
Appendix C: Using and Giving in an Open Source Project
Estimated Page Count: 10
The isolation of every human soul and the
necessity of self-dependence must give each
individual the right, to choose his own
surroundings. The strongest reason for giving
woman all the opportunities for higher
education, for the full development of her
faculties, forces of mind and body; for giving
her the most enlarged freedom of thought and
action; a complete emancipation from all forms
of bondage, of custom, dependence,
superstition; from all the crippling influences of
fear, is the solitude and personal responsibility
of her own individual life. The strongest reason
why we ask for woman a voice in the
government under which she lives; in the
religion she is asked to believe; equality in
social life, where she is the chief factor; a place
in the trades and professions, where she may
earn her bread, is because of her birthright to
self-sovereignty; because, as an individual, she
must rely on herself. No matter how much
women prefer to lean, to be protected and
supported, nor how much men desire to have
them do so, they must make the voyage of life
alone, and for safety in an emergency they
must know something of the laws of navigation.
To guide our own craft, we must be captain,
pilot, engineer; with chart and compass to
stand at the wheel; to match the wind and
waves and know when to take in the sail, and to
read the signs in the firmament over all. It
matters not whether the solitary voyager is
man or woman. Nature having endowed them
equally, leaves them to their own skill and
judgment in the hour of danger, and, if not
equal to the occasion, alike they perish. To
appreciate the importance of fitting every
human soul for independent action, think for a
moment of the immeasurable solitude of self.
From: Solitude of Self, Elizabeth Cady Stanton