summaryrefslogtreecommitdiffstats
path: root/chapter_16.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter_16.xml')
-rw-r--r--chapter_16.xml722
1 files changed, 588 insertions, 134 deletions
diff --git a/chapter_16.xml b/chapter_16.xml
index 4da780b..3a16ac9 100644
--- a/chapter_16.xml
+++ b/chapter_16.xml
@@ -3,190 +3,644 @@
"/usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd">
<chapter>
-<title>Package Management</title>
+<title>Basic Networking Utilities</title>
<para>
-Package management is an essential part of any Linux distribution.
-Every piece of software included by Slackware, along with many
-third-party tools are distributed as source code that can be compiled,
-but compiling all those thousands of different applications and
-libraries is tedious and time consuming. That's why many people prefer
-to install pre-compiled software packages. In fact, when you installed
-Slackware, the <application>setup</application> program primarily
-worked by running package management tools on a list of packages. Here
-we'll look at the various tools used for handling Slackware packages.
+So you've finally managed to setup your network connection, now what?
+How do you know that it's working? How do you know that you set it up
+correctly? And just what do you do now that it's setup? Well this
+chapter is for you.
</para>
<section>
-<title><application>pkgtool</application></title>
+<title>Network Diagnostic Tools</title>
<para>
-The simplest way to perform package maintenance tasks is to invoke
-<application>pkgtool</application>(8), a menu-driven interface to some of
-the other tools. <application>pkgtool</application> allows you to
-install or remove packages as well as view the contents of those
-packages and the list of currently installed packages in a
-user-friendly ncurses interface.
+Slackware Linux includes a great many networking tools for
+troubleshooting and diagnosing network connection troubles, or just for
+seeing what's out there on the network. Most of these tools are
+command-line tools, so you can run them from a virtual terminal or in a
+console window on your graphical desktop. A few of them even have
+graphical front-ends, but we're going to deal almost exclusively with
+command-line tools for now.
</para>
+<section>
+<title>ping</title>
+
+<para>
+<application>ping</application>(8) is a handy tool for determining if a
+computer is operational on your network or on the Internet at large.
+You can think of as a type of sonar for computers. By using it, you
+send out a "ping" and listen for an echo to determine if another
+computer or network device is listening. By default,
+<application>ping</application> checks for the remote computer once per
+second indefinitely, but you can change the interval between checks and
+the total number of checks easily, just check the man page. You can
+terminate the application at any time with
+<keycap>CTRL</keycap>-<keycap>c</keycap>. When
+<application>ping</application> is finished, it displays a handy
+summary of its activity. <application>ping</application> is very useful
+for determining if a computer on your network or the Internet is
+available, but some systems block the packets
+<application>ping</application> sends, so sometimes a system may be
+functioning properly, but still not send replies.
+</para>
+
+
+<screen><prompt>darkstar:~# </prompt><userinput>ping -c 3 www.slackware.com</userinput>
+64 bytes from slackware.com (64.57.102.34): icmp_seq=1 ttl=47 time=87.1 ms
+64 bytes from slackware.com (64.57.102.34): icmp_seq=2 ttl=47 time=86.2 ms
+64 bytes from slackware.com (64.57.102.34): icmp_seq=3 ttl=47 time=86.7 ms
+
+--- slackware.com ping statistics ---
+3 packets transmitted, 3 received, 0% packet loss, time 2004ms
+rtt min/avg/max/mdev = 86.282/86.718/87.127/0.345 ms
+</screen>
+
+</section>
+
+<section>
+<title>traceroute</title>
+
+<para>
+<application>traceroute</application>(8) is a handy tool for determining
+what route your packets take to reach some other computer. It's mainly
+of use for determining which computers are "near" or "far" from you.
+This distance isn't strictly geographical, as your Internet Service
+Provider may route traffic from your computer in strange ways.
+<application>traceroute</application> shows you each router between
+your computer and any other machine you wish to connect to.
+Unfortunately, many providers, firewalls, and routers will block
+<application>traceroute</application> so you might not get a complete
+picture when using it. Still, it remains a handy tool for network
+troubleshooting.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>traceroute www.slackware.com</userinput>
+traceroute to slackware.com (64.57.102.34), 30 hops max, 46 byte
+packets
+ 1 gw.ctsmacon.com (192.168.1.254) 1.468 ms 2.045 ms 1.387 ms
+ 2 10.0.0.1 (10.0.0.1) 7.642 ms 8.019 ms 6.006 ms
+ 3 68.1.8.49 (68.1.8.49) 10.446 ms 9.739 ms 7.003 ms
+ 4 68.1.8.69 (68.1.8.69) 11.564 ms 6.235 ms 7.971 ms
+ 5 dalsbbrj01-ae0.r2.dl.cox.net (68.1.0.142) 43.859 ms 43.287 ms
+44.125 ms
+ 6 dpr1-ge-2-0-0.dallasequinix.savvis.net (204.70.204.146) 41.927 ms
+58.247 ms 44.989 ms
+ 7 cr2-tengige0-7-5-0.dallas.savvis.net (204.70.196.29) 42.577 ms
+46.110 ms 43.977 ms
+ 8 cr1-pos-0-3-3-0.losangeles.savvis.net (204.70.194.53) 78.070 ms
+76.735 ms 76.145 ms
+ 9 bpr1-ge-3-0-0.LosAngeles.savvis.net (204.70.192.222) 77.533 ms
+108.328 ms 120.096 ms
+10 wiltel-communications-group-inc.LosAngeles.savvis.net
+(208.173.55.186) 79.607 ms 76.847 ms 75.998 ms
+11 tg9-4.cr01.lsancarc.integra.net (209.63.113.57) 84.789 ms 85.436
+ms 85.575 ms
+12 tg13-1.cr01.sntdcabl.integra.net (209.63.113.106) 87.608 ms
+84.278 ms 86.922 ms
+13 tg13-4.cr02.sntdcabl.integra.net (209.63.113.134) 87.284 ms
+85.924 ms 86.102 ms
+14 tg13-1.cr02.rcrdcauu.integra.net (209.63.114.169) 85.578 ms
+85.285 ms 84.148 ms
+15 209.63.99.166 (209.63.99.166) 84.515 ms 85.424 ms 85.956 ms
+16 208.186.199.158 (208.186.199.158) 86.557 ms 85.822 ms 86.072 ms
+17 sac-main.cwo.com (209.210.78.20) 88.105 ms 87.467 ms 87.526 ms
+18 slackware.com (64.57.102.34) 85.682 ms 86.322 ms 85.594 ms
+</screen>
+</section>
+
+<section>
+<title>telnet</title>
+
+<para>
+Once upon a time, <application>telnet</application>(1) was the greatest
+thing since sliced bread. Basically, <application>telnet</application>
+opens an unencrypted network connection between two computers and hands
+control of the session to the user rather than some other application.
+Using <application>telnet</application>, people could connect to shells
+on other computers and execute commands as if they were physically
+present. Due to its unencrypted nature this is no longer recommended;
+however, <application>telnet</application> is still used for this
+purpose by many devices.
+</para>
+
+<para>
+Today, <application>telnet</application> is put to better use as a
+network diagnostic tool. Because it passes control of the session
+directly to the user, it can be used for a great variety of testing
+purposes. As long as you know what ASCII commands to send to the
+receiving computer, you can do any number of activies, such as read web
+pages or check your e-mail. Simply inform
+<application>telnet</application> what network port to use, and you're
+all set.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>telnet www.slackware.com 80</userinput>
+Trying 64.57.102.34...
+Connected to www.slackware.com.
+Escape character is '^]'.
+<userinput>HEAD / HTTP/1.1
+Host: www.slackware.com
+</userinput>
+HTTP/1.1 200 OK
+Date: Thu, 04 Feb 2010 18:01:35 GMT
+Server: Apache/1.3.27 (Unix) PHP/4.3.1
+Last-Modified: Fri, 28 Aug 2009 01:30:27 GMT
+ETag: "61dc2-5374-4a973333"
+Accept-Ranges: bytes
+Content-Length: 21364
+Content-Type: text/html
+</screen>
+
+</section>
+
+<section>
+<title>ssh</title>
+
<para>
-PICTURE OF PKGTOOL MAIN SCREEN.
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
-FILL THIS IN!!!!!!
+As we mentioned, <application>telnet</application> may be useful as a
+diagnostic tool, but its unencrypted nature makes it a security concern
+for shell access. Thankfully, there's the secure shell protocol. Nearly
+every Linux, UNIX, and BSD distribution today makes use of OpenSSH, or
+<application>ssh</application>(1) for short. It is one of the most
+commonly used network tools today and makes use of the strongest
+cryptographic techniques. <application>ssh</application> has many
+features, configuration options, and neat hacks, enough to fill its own
+book, so we'll only go into the basics here. Simply run
+<application>ssh</application> with the user name and the host and
+you'll be connected to it quickly and safely. If this is the first time
+you are connecting to this computer, <application>ssh</application>
+will ask you to confirm your desire, and make a local copy of the
+encryption key to use. Should this key later change,
+<application>ssh</application> will warn you and refuse to connect
+because it is possible that some one is attempting to hijack the
+connection using what is known as a man-in-the-middle attack.
</para>
+<screen><prompt>darkstar:~# </prompt><userinput>ssh alan@slackware.com</userinput>
+alan@slackware.com's password: <userinput>secret</userinput>
+<prompt>alan@slackware.com:~$ </prompt>
+</screen>
+
<para>
-<application>pkgtool</application> is a convenient and easy way to
-perform the most basic tasks, but for more advanced work more flexible
-tools are needed.
+The user and hostname are in the same form used by e-mail addresses.
+If you leave off the username part, <application>ssh</application> will
+use your current username when establishing the connection.
</para>
</section>
<section>
-<title>Installing, Removing, and Upgrading Packages</title>
-
-<para>
-While <application>pkgtool</application> scores points for convenience,
-<application>installpkg</application>(8) is much more capable of
-handling odd tasks, such as quickly installing a single package,
-installing an entire disk set of packages, or scripting an install.
-<application>installpkg</application> takes a list of packages to
-install, and simply installs them without asking any questions. Like
-all Slackware package management tools, it assumes that you know what
-you're doing and doesn't pretend to be smarter than you. In its
-simplest form, <application>installpkg</application> simply takes a
-list of packages to install, and does exactly what you would expect.
-</para>
-
-<screen><prompt>darkstar:~# </prompt><userinput>installpkg blackbox-0.70.1-i486-2.txz</userinput>
-Verifying package blackbox-0.70.1-i486-2.txz.
-Installing package blackbox-0.70.1-i486-2.txz:
-PACKAGE DESCRIPTION:
-# blackbox (Blackbox window manager)
-#
-# Blackbox is that fast, light window manager you have been looking for
-# without all those annoying library dependencies.
-#
-# Also included in this package is the bbkeys utility for controlling
-# keyboard shortcut commands from within Blackbox.
-#
-# The Blackbox home page is http://blackboxwm.sourceforge.net
-#
-Package blackbox-0.70.1-i486-2.txz installed.</screen>
-
-<para>
-You can of course install multiple packages at a time, and in fact use
-shell wild cards. The following installs all of the "N" series
-packages from a mounted CD-ROM.
-</para>
-
-<screen><prompt>darkstar:~# </prompt><userinput>installpkg /mnt/cdrom/slackware/n/*.txz</userinput></screen>
-
-<para>
-Removing a package is every bit as easy as installing one. As you might
-expect, the command to do this is
-<application>removepkg</application>(8). Simply tell it which packages
-to remove, and <application>removepkg</application> will check the
-contents of the package database and remove all the files and
-directories for that package with one caveat. If that file is included
-in multiple installed packages, it will be skipped and if a directory
-has new files in it, the directory will be left in place. Because of
-this, removing packages takes a good while longer than installing them.
-</para>
-
-<screen><prompt>darkstar:~# </prompt><userinput>removepkg blackbox-0.70.1-i486-2.txz</userinput>
+<title>tcpdump</title>
+
+<para>
+So far all the tools we've looked at have focused on making connections
+to other computers, but now we're going to look at the traffic itself.
+<application>tcpdump</application>(1) (which must be run as root)
+allows us to view all or part of the network traffic originating or
+received by our computer. <application>tcpdump</application> displays
+the raw data packets in a variety of ways with all the network headers
+intact. Don't be alarmed if you don't understand everything it
+displays, <application>tcpdump</application> is a tool for professional
+network engineers and system administrators. By default, it probes the
+first network card it finds, but if you have multiple interfaces,
+simply use the <arg>-i</arg> argument to specify which one you're
+interested in. You can also limit the data displayed using expressions
+and change the manner in which it is displayed, but that is best
+explained by the man page and other reference material.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>tcpdump -i wlan0</userinput>
+tcpdump: verbose output suppressed, use -v or -vv for full protocol
+decode
+listening on wlan0, link-type EN10MB (Ethernet), capture size 96 bytes
+13:22:28.221985 IP gw.ctsmacon.com.microsoft-ds > 192.168.1.198.59387:
+Flags [P.], ack 838190560, win 3079, options [nop,nop,TS val 1382697489
+ecr 339048583], length 164WARNING: Short packet. Try increasing the
+snap length by 140
+SMB PACKET: SMBtrans2 (REPLY)
+
+13:22:28.222392 IP 192.168.1.198.59387 > gw.ctsmacon.com.microsoft-ds:
+Flags [P.], ack 164, win 775, options [nop,nop,TS val 339048667 ecr
+1382697489], length 134WARNING: Short packet. Try increasing the snap
+length by 110
+SMB PACKET: SMBtrans2 (REQUEST)
+</screen>
+
+</section>
+
+<section>
+<title>nmap</title>
+
+<para>
+Suppose you need to know what network services are running on a
+machine, or multiple machines, or you wish to determine if multiple
+machines are responsive? You could <application>ping</application>
+each one individually, <application>telnet</application> to each port
+you're interested in, and note every detail, but that's very tedious
+and time consuming. A much easier alternative is to use a port scanner,
+and <application>nmap</application>(1) is just the tool for the job.
+<application>nmap</application> is capable of scanning TCP and UDP
+ports, determining the operating system of a network device, probing
+each located service to determine its specific type, and much much
+more. Perhaps the simplist way to use <application>nmap</application>
+is to "ping" multiple computers at once. You can use network address
+notation (CIDR) or specify a range of addresses and
+<application>nmap</application> will scan every one and return the
+results to you when it's finished. You can even specify host names as
+you like.
+</para>
+
+<para>
+In order to "ping" hosts, you'll have to use the <arg>-sP</arg>
+argument. The following command instructs
+<application>nmap</application> to "ping" www.slackware.com and the 16
+IP addresses starting at 72.168.24.0 and ending at 72.168.24.15.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>nmap -sP www.slackware.com 72.168.24.0/28</userinput>
+</screen>
+
+<para>
+Should you need to perform a port scan, <application>nmap</application>
+has many options for doing just that. When run without any arguments,
+<application>nmap</application> performs a standard TCP port scan on all
+hosts specified. There are also options to make
+<application>nmap</application> more or less aggressive with its
+scanning to return results quicker or fool intrusion detection
+services. For a full discussion, you should refer to the rather
+exhaustive man page. The following three commands perform a regular
+port scan, a SYN scan, and a "Christmas tree" scan.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>nmap www.example.com</userinput>
+<prompt>darkstar:~# </prompt><userinput>nmap -sS www.example.com</userinput>
+<prompt>darkstar:~# </prompt><userinput>nmap -sX www.example.com</userinput>
+</screen>
+
+<para>
+Be warned! Some Internet Service Providers frown heavily on port
+scanning and may take measures to prevent you from doing it.
+<application>nmap</application> and applications like it are best used
+on your own systems for maintenance and security purposes, not as
+general purpose Internet scanners.
+</para>
+
+</section>
+
+</section>
+
+<section><title>Web Browsers</title>
+
+<para>
+Slackware includes a variety of web browsers. If you're using a
+graphical desktop, you'll find Firefox, Seamonkey, and others you may
+already be familiar with, but what about console access? Fortunately,
+there are a number of capable web browsers here as well.
+</para>
+
+<section><title>lynx</title>
+
+<para>
+The oldest console-based web browser included with Slackware is
+definitely <application>lynx</application>(1), a very capable if
+somewhat limited web browser. <application>lynx</application> does not
+support frames, javascript, or pictures; it is strictly a text web
+browser. Navigation is performed using your keyboard's arrow keys and
+optionally, a mouse. While it lacks many features that other browsers
+support, <application>lynx</application> is one of the fastest web
+browsers you'll ever use for gathering information. For example, the
+<arg>-dump</arg> argument sends the formatted web page directly to the
+console, which can then be piped to other programs.
+</para>
+
+<para>
+PIC OF LYNX IN ACTION.
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+</para>
+
+</section>
+
+<section><title>links</title>
+
+<para>
+A more feature-rich alternative is the popular
+<application>links</application>(1), a console-based web browser that
+supports frames and has better table rendering than
+<application>lynx</application>. Like its predecessor,
+<application>links</application> is navigated with the arrow keys, and
+the use of a mouse is supported. Unlike,
+<application>lynx</application> it also includes a handy menu (simply
+click on the top line with your mouse to activate) and generally
+formats web pages better.
+</para>
+
+<para>
+PIC OF LINKS IN ACTION.
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+FILL THIS IN!!!!!!!
+</para>
+
+</section>
+
+<section><title>wget</title>
+
+<para>
+Unlike the other browsers we've looked at,
+<application>wget</application>(1) is non-interactive. Rather than display
+HTTP content, <application>wget</application> downloads it. This takes
+the "browsing" out of the web browser. Unlike the dump modes of other
+browsers, <application>wget</application> does not format its
+downloads; rather it copies the content in its exact form on the web
+server with all tags and binary data in place. It also supports several
+recursive options that can effectively mirror online content to your
+local computer. <application>wget</application> need not operate
+exclusively on HTTP content; it also supports FTP and several other
+protocols.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>wget ftp://ftp.osuosl.org/pub/slackware/slackware-current/ChangeLog.txt</userinput>
+--2010-05-01 13:51:19--
+ftp://ftp.osuosl.org/pub/slackware/slackware-current/ChangeLog.txt
+ => `ChangeLog.txt'
+Resolving ftp.osuosl.org... 64.50.236.52
+Connecting to ftp.osuosl.org|64.50.236.52|:21... connected.
+Logging in as anonymous ... Logged in!
+==> SYST ... done. ==> PWD ... done.
+==> TYPE I ... done. ==> CWD /pub/slackware/slackware-current ... done.
+==> SIZE ChangeLog.txt ... 75306
+==> PASV ... done. ==> RETR ChangeLog.txt ... done.
+Length: 75306 (74K)
+
+100%[======================================>] 75,306 110K/s in 0.7s
+
+2010-05-01 13:51:22 (110 KB/s) - `ChangeLog.txt' saved [75306]
</screen>
+</section>
+
+</section>
+
+<section>
+<title>FTP Clients</title>
+
<para>
-Finally, upgrading is just as easy with (you guessed it),
-<application>upgradepkg</application>(8) which first installs a new
-package, then removes whatever files and directories are left-over from
-the old package. One important thing to remember is that
-<application>upgradepkg</application> doesn't check to see if the
-previously installed package has a higher version number than the "new"
-package, so it can also be used to downgrade to older versions.
+Lots of data is stored on FTP servers the world over. In fact,
+Slackware Linux was first publically offered via FTP and continues to
+be distributed in this fashion today. Most open source software can be
+downloaded in source code or binary form via FTP, so knowing how to
+retrieve this information is a handy skill.
</para>
+<section><title>ftp</title>
+<para>
+The simplest FTP client included with Slackware is named simply,
+<application>ftp</application>(1) and is a reliable if somewhat simple
+means of sending and retrieving data. <application>ftp</application>
+connects to an FTP server, asks for your username and password, and
+then allows you to put or get data to and from that server.
+<application>ftp</application> has fallen out of favor with more
+experienced users do to a lack of features, but remains a handy tool,
+and much of the documentation you see online will refer you to it.
+</para>
-<screen><prompt>darkstar:~# </prompt><userinput>upgradepkg blackbox-0.70.1-i486-2.txz</userinput>
+<para>
+Once an FTP session has been initialized, you'll be placed at a prompt
+somewhat like a shell. From here you can change and list directories
+using the "cd" and "ls" commands, just like a shell. Additionally, you
+may issue the "put" command to send a file to the server, or a "get"
+command to retrieve data from the server. If you're connecting to a
+public FTP server, you'll want to use the "anonymous" username and
+simply enter your e-mail address (or a fake one) for the password.
+</para>
-+==============================================================================
-| Upgrading blackbox-0.65.0-x86_64-4 package using
-./blackbox-0.70.1-i486-2.txz
-+==============================================================================
+<screen><prompt>darkstar:~# </prompt><userinput>ftp ftp.osuosl.org</userinput>
+Name (ftp.osuosl.org:alan): <userinput>anonymous</userinput>
+331 Please specify the password.
+Password: <userinput>secret</userinput>
+230 Login successful.
+Remote system type is UNIX.
+Using binary mode to transfer files.
+ftp> <userinput>cd pub/slackware/slackware-current/</userinput>
+250 Directory successfully changed.
+ftp> <userinput>get ChangeLog.txt</userinput>
+local: ChangeLog.txt remote: ChangeLog.txt
+200 PORT command successful. Consider using PASV.
+150 Opening BINARY mode data connection for ChangeLog.txt (33967
+bytes).
+226 File send OK.
+33967 bytes received in 0.351 secs (94 Kbytes/sec)
+ftp> <userinput>bye</userinput>
+221 Goodbye.
+</screen>
-Pre-installing package blackbox-0.70.1-i486-2...
+</section>
-Removing package
-/var/log/packages/blackbox-0.65.0-x86_64-4-upgraded-2010-02-23,16:50:51...
- --> Deleting symlink /usr/share/blackbox/nls/POSIX
- --> Deleting symlink /usr/share/blackbox/nls/US_ASCII
- --> Deleting symlink /usr/share/blackbox/nls/de
- --> Deleting symlink /usr/share/blackbox/nls/en
- --> Deleting symlink /usr/share/blackbox/nls/en_GB
-...
-Package blackbox-0.65.0-x86_64-4 upgraded with new package
-./blackbox-0.70.1-i486-2.txz.</screen>
+<section><title>ncftp</title>
<para>
-All of these tools have useful arguments. For example, the
-<arg>--root</arg> to <application>installpkg</application> will install
-packages into an arbitrary directory. The <arg>--dry-run</arg> argument
-will instruct <application>upgradepkg</application> to simply tell you
-what it would attempt without actually making any changes to the
-system. For complete details, you should (as always) refer to the man
-pages.
+<application>ncftp</application>(1) (pronounced nick-f-t-p), is a more
+feature rich successor to <application>ftp</application>, supporting
+tab completion and recursive retrieval. It automatically connects to a
+server as the anonymous user, unless you specify a different username
+on the commandline with the <arg>-u</arg> argument. The primary
+advantage over <application>ftp</application> is the ability to send
+and retrieve multiple files at once with the "mput" and "mget"
+commands. If you pass the <arg>-R</arg> argument to either of them,
+they will recursively put or get data from directories.
</para>
+<screen><prompt>darkstar:~# </prompt><userinput>ncftp ftp.osuosl.org</userinput>
+Logging in...
+Login successful.
+Logged in to ftp.osuosl.org.
+ncftp / > <userinput>cd pub/slackware/slackware-current</userinput>
+Directory successfully changed.
+ncftp ...ware/slackware-current > <userinput>mget -R isolinux</userinput>
+isolinux/README.TXT: 4.63 kB 16.77 kB/s
+isolinux/README_SPLIT.TXT: 788.00 B 5.43 kB/s
+isolinux/f2.txt: 793.00 B 5.68 kB/s
+isolinux/initrd.img: 13.75 MB 837.91 kB/s
+isolinux/iso.sort: 50.00 B 354.50 B/s
+isolinux/isolinux.bin: 14.00 kB 33.99 kB/s
+isolinux/isolinux.cfg: 487.00 B 3.30 kB/s
+isolinux/message.txt: 760.00 B 5.32 kB/s
+isolinux/setpkg: 2.76 kB 19.11 kB/s
+ncftp ...ware/slackware-current > <userinput>bye</userinput>
+</screen>
+
+</section>
+
+<section><title>lftp</title>
+
+<para>
+The last client we're going to look at is
+<application>lftp</application>(1). Like
+<application>ncftp</application>, it supports tab completion and
+recursive activity, but has a more friendly license. Rather than user
+"mget" and "mput", all recursive operations are handled with the
+"mirror" command. "mirror" has many different options available, so
+I'll have to refer you to the man page and the built-in "help" command
+for complete details.
+</para>
+
+<screen><prompt>darkstar:~# </prompt><userinput>lftp ftp.osuosl.org</userinput>
+lftp ftp.osuosl.org:~> <userinput>cd /pub/slackware/slackware-current</userinput>
+cd ok, cwd=/pub/slackware/slackware-current
+lftp ftp.osuosl.org:/pub/slackware/slackware-current> <userinput>mirror isolinux</userinput>
+Total: 2 directories, 16 files, 1 symlink
+New: 16 files, 1 symlink
+14636789 bytes transferred in 20 seconds (703.7K/s)
+lftp ftp.osuosl.org:/pub/slackware/slackware-current> <userinput>bye</userinput>
+</screen>
+
+</section>
+
</section>
<section>
-<title>Package Compression Formats</title>
+<title>NNTP Clients</title>
<para>
-We won't go in depth into the details of package formats, but a few
-words should be given here. In the past, all Slackware packages were
-compressed with the <application>gzip</application>(1) compression
-utility, which was a good compromise between compression speed and
-size. Recently, new compression schemes have been added and the
-package management tools have been upgraded to handle these. Today,
-official Slackware packages are compressed with the
-<application>xz</application> utility and end with .txz extensions.
-Older packages (and many third party packages) still use the .tgz
-extension.
+Once upon a time when the Internet was young, before the World Wide Web
+was invented and no one had heard of hyperlinks, everyone retrieved
+their news and information through a service known as Usenet using the
+NNTP protocol. It remains today a useful knowledge base of information
+on an incredible variety of subjects, but if you wish to access this
+information, you're going to need a proper client. Slackware includes
+a number of NNTP clients with both console and graphical interfaces,
+but we'll only detail the console tools here. Popular graphical news
+readers include <application>knode</application> and
+<application>pan</application>.
</para>
+<section><title>tin</title>
+
+</section>
+
+<section><title>slrn</title>
+
+</section>
+
</section>
<section>
-<title><application>slackpkg</application></title>
+<title>rsync</title>
<para>
- The <application>slackpkg</application> is an automated tool for
-management of Slackware Linux Packages. It was in /extra for
-the release of slackware-12.1, and since the release of
-slackware-12.2 it is included in the ap/ series of a base
-installation.
+Ready to see something cool? Have you ever found yourself needing just
+a handful of files from a large directory, but you're not entirely sure
+which files you already have and which ones you need? You can download
+the entire directory again, but that's duplicating a lot of work. You
+can pick and chose, manually check everything, but that's very tedious.
+Perhaps you've downloaded a large file such as an ISO, but something
+went wrong with the download? It doesn't make sense that you should
+have to pull down the entire file again if only a few bits have been
+corrupted. Enter <application>rsync</application>(1), a fast and
+versatile copying tool for local and remote files.
</para>
+
+<para>
+<application>rsync</application> uses a handful of simple, but very
+effective techniques to determine what needs to be changed. By checking
+file size and time stamps, it can determine if two files are different.
+If something has changed, it can determine what bytes are different,
+and simply download that handfull of data rather than an entire file.
+It is truly a marvel of modern technology.
+</para>
+
<para>
- For more information see the <application>man</application> pages for
-slackpkg(8) and slackpkg.conf(5).
+In its simplist form, <application>rsync</application> connects to an
+rsync protocol server and downloads a list of files and directories,
+along with their sizes, timestamps, and other information. It then
+compares this to the local files (if any) to determine what it needs to
+transfer. Only files that are different will be synced. Additionally,
+it breaks up large files into smaller chunks and compares those chunks
+using a quick and simple hash function. Any chunks that match are not
+transferred, so the amount of data that must be copied can be
+dramatically reduced. <application>rsync</application> also supports
+compression, verbose output, file deletion, permission handling, and
+many other options. For a complete list, you'll need to refer to the
+man page, but I've included a small table of some of the more common
+options.
</para>
+
+<table pgwide="0">
+<title>rsync Arguments</title>
+<tgroup cols="2">
+ <thead>
+ <entry>Argument</entry>
+ <entry>Explaination</entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>-v</entry>
+ <entry>Increased verbosity</entry>
+ </row>
+ <row>
+ <entry>-c</entry>
+ <entry>Checksum all files rather than relying on file size and timestamp</entry>
+ </row>
+ <row>
+ <entry>-a</entry>
+ <entry>Archive mode (equivilant to -rlptgoD)</entry>
+ </row>
+ <row>
+ <entry>-e</entry>
+ <entry>Specify a remote shell to use</entry>
+ </row>
+ <row>
+ <entry>-r</entry>
+ <entry>Recursive mode</entry>
+ </row>
+ <row>
+ <entry>-u</entry>
+ <entry>Update - skip files that are newer on the receiving end</entry>
+ </row>
+ <row>
+ <entry>-p</entry>
+ <entry>Preserve permissions</entry>
+ </row>
+ <row>
+ <entry>-n</entry>
+ <entry>Dry-run - perform a trial run without making any changes</entry>
+ </row>
+ <row>
+ <entry>-z</entry>
+ <entry>Compress - handy for slow network connections</entry>
+ </row>
+ </tbody>
+</tgroup>
+</table>
+
<para>
-Homepage: <ulink url="http://www.slackpkg.org/">http://www.slackpkg.org/</ulink>
+Due to the power and versatility of <application>rsync</application>,
+it can be invoked in a number of ways. The following two examples
+connect to an rsync protocol server to retrieve some information and to
+another server via ssh to encrypt the transmission.
</para>
+<screen><prompt>darkstar:~# </prompt><userinput>rsync -avz rsync://ftp.osuosl.org/pub/slackware/slackware-current/ \
+/src/slackware-current/</userinput>
+<prompt>darkstar:~# </prompt><userinput>rsync -e ssh ftp.slackware.com:/home/alan/foo /tmp/foo</userinput>
+</screen>
+
</section>
</chapter>