Making C-Kermit 8.0 Install Packages for Unix

As of: C-Kermit 8.0
This page last updated: 14 March 2003

Before reading this short document, please look over the Unix C-Kermit Installation Instructions page, especially Section 5.

The C-Kermit Binary
Lots of C-Kermit binaries are available prebuilt, mainly for the benefit of platforms like Solaris that don't necessarily come with C compilers. However, when making a C-Kermit install package, it's usually better to build a fresh binary on the target platform, if only to make sure of the library linkages. The resulting binary should be called "kermit" and should be put in a directory that is (a) in the PATH of all the users who need to use it, and (b) not likely to be wiped out when installing an OS upgrade. typical choices might be /usr/local/bin, /opt/local/bin, /opt/kermit/, or /opt/kermit/bin.

The binary must be given execute permission, of course, and if it is to be used for dialing out, it will need to have the same owner and group and permissions (possibly including setuid and/or setgid) as the "cu" program. If the install package is to take care of all this, then it probably needs to run as root. See the Installation Instructions, especially sections 10 and 11, for details and more thorough discussion.

When the install package builds from source code, it is important to check all the dependencies. Are the C compiler, linker, header files, and libraries installed? Are the TCP/IP sockets library and headers installed? Are the curses (or ncurses) library and headers installed?

The C-Kermit Man Page
The man page for C-Kermit 8.0 is entirely new and different from previous versions. C-Kermit 6.0 and 7.0 came with a ckuker.cpp file to be run through CPP to produce ckuker.nr, an nroff source file customized by the preprocessor for various platforms (HP-UX, Solaris, etc).

For version 8.0, the "man page" was done in HTML. Since there is no tool (that I know of) for converting HTML to nroff, I did it by hand. Somebody else might want to convert it to Info (TexInfo?) for Linux, and who knows what other format we're using for documentation in Linux these days. It strikes me that HTML might be a good choice, since HTML interpreters are practically universal now, even for text sessions (Lynx), and this way you get links for free, and a wide choice of tools to access them.

Anyway, the C-Kermit man page is presently available as:

ckuker.nr: Traditional nroff man page source.
ckututor.html: HTML.
ckututor.txt: Plain ASCII text (dumped from the HTML).
ckututor.pdf: Adobe PDF format (by PDF-O-Matic).

The remaining files are not necessary for C-Kermit's operation; they are just documentation and samples. All of this (and much more besides) can be found at the Kermit website, and the information on the website is probably more current too. Should you wish to install these files on your own computer, however, feel free to do so. If the computer is on the Internet, it might be preferable to visit the Kermit website to consult these files.

License
The COPYING.TXT file (plain text). The license is also displayed by C-Kermit's LICENSE command.

Initialization files
In previous releases, each user would have to copy the initialization file into her own home directory in order to use it, or else Kermit would have to be configured specially to execute a common, central one. However, the initialization file is largely unnecessary in C-Kermit 8.0 (CLICK HERE for an explanation) but you can install it if you wish:

  ckermit.ini   Standard initialization file
  ckermod.ini   Sample individual customization file
Text Files
Many of the former *.txt files have been converted to HTML and placed on the Kermit website:

ckcbwr.txt ckcbwr.html General C-Kermit hints and tips
ckubwr.txt ckubwr.html Unix-specific C-Kermit hints and tips
ckuins.txt ckuins.html Unix installation instructions
ckcplm.txt ckcplm.html C-Kermit program logic manual
ckccfg.txt ckccfg.html C-Kermit configuration options

The current text files are dumped from the HTML ones. If you put these text (.txt) files in any of the directories listed below, C-Kermit will find them and refer to them in its HELP text.

  /usr/local/doc/kermit/
  /usr/share/lib/kermit/
  /usr/share/doc/kermit/
  /usr/local/lib/kermit/
  /usr/local/share/kermit/
  /usr/local/share/doc/kermit/
  /usr/local/share/lib/kermit/
  /usr/doc/kermit/
  /opt/kermit/
  /doc/kermit/
  /usr/local/doc/
  /usr/share/lib/
  /usr/share/doc/
  /usr/local/lib/
  /usr/local/share/
  /usr/local/share/doc/
  /usr/local/share/lib/
  /usr/doc/
  /opt/
  /doc/

So what really needs to go into the package? Here are some suggestions for package contents:

  1. The C-Kermit binary, the nroff-format man page, and the license.
  2. Same as (1), plus text files.
  3. Same as (2), plus text files and html files.
  4. Same as (3), plus source code and makefile.

Obviously other combinations are possible, as long as they include the binary and man page.

What directories to use? It depends on which files you want to keep and the conventions used by your OS, file system, or site. A minimal installation might put the Kermit binary in /usr/local/bin and the man page in /usr/man/man1.

At the other extreme, what if you want to install everything? Most Unix platforms don't have a natural location for storing plain-text information files. Where to put them? One example, that's used commonly at Solaris sites, would be:

  /opt/kermit             (Root of Kermit tree)
  /opt/kermit/bin/        (Binary and init file)
  /opt/kermit/src/        (Source code)
  /opt/kermit/doc/        (Text and info files)

The advantage of this scheme is that it provides a nice grouping for an application and its files. And its extensible too: you could add an html subdirectory, an examples subdirectory (for scripts), etc. The disadvantage is that the /opt/kermit/bin/ directory must be added to the PATH, but that can be fudged with symlinks from /opt/local/bin/. But in either case, the installer must take some action beyond just putting the Kermit binary in a directory that is already in everybody's PATH. Anyway, the C-Kermit makefile 'install' target lets you set up this structure or most any other kind you want: CLICK HERE for details and examples.

What about security? You can't build a secure version of C-Kermit (or any other program that embodies strong encryption) and package it for general distribution without considering USA export law. We (the Kermit Project) do not distribute secure binaries or packages, only source code, for this reason: any binaries or packages that we distribute are not built with encryption code. What you or your company does is up to you, but be aware of the issues and rules.

Finally... a small matter. "kermit" is the name for TCP service (socket) number 1649, just as "telnet" is the name for service 23, "ftp" is the name for service 21, and so on. If a "kermit" entry does not appear in your /etc/services file, please add one:

  kermit     1649/tcp     # Internet Kermit Service


C-Kermit 8.0 Packages / The Kermit Project / Columbia University / kermit@columbia.edu / 14 March 2003