📄 ckuins.txt
字号:
from the first installation CD. The makefile might need to be renamed from ckuker.mak to makefile. Directions: a. Type "make xxx" where xxx is the name of the makefile target most appropriate to your platform, e.g. "make linux", "make aix43", etc. Read the [78]comments at the top of the makefile for a complete list of available targets (it's a long list). b. Test the resulting 'wermit' file (see [79]Section 7 for suggestions). If it's OK, proceed; otherwise [80]notify us. NOTE: steps (c) through (e) can be accomplished using the [81]makefile 'install' target as described in [82]Section 5.4. c. Rename the 'wermit' file to 'kermit', copy it to the desired binary directory (such as /usr/local/bin or /opt/something), and if it is to be used for dialing out, give it the same owner, group, and permissions as the 'cu' program (IMPORTANT: read [83]Sections 10 and [84]11 for details). d. Install the man page, ckuker.nr, with your other man pages. e. Install the accompanying text files (see [85]Section 5). f. If you want C-Kermit to also offer a Telnet command-line personality, make a symbolic link as follows:cd directory-where-kermit-binary-isln -s kermit telnet If you want C-Kermit to be the default Telnet client, make sure the directory in which you created the symlink is in the PATH ahead of the where the regular Telnet client is. g. If you want C-Kermit to also offer an FTP command-line personality, make a symlink called "ftp" as in (f). h. If you want C-Kermit to also offer an FTTP command-line personality, make a symlink called "http" as in (f). i. If you want to offer an Internet Kermit Service, follow the directions in the [86]IKSD Administrator's Guide. ________________________________________________________________________ 4.0. Special Considerations for C-Kermit 8.0 [ [87]Top ] [ [88]Contents ] [ [89]Next ] Also see: [90]C-Kermit Configuration Options SECTION CONTENTS4.1. [91]The Unix Makefile4.2. [92]The C-Kermit Initialization File4.3. [93]The 2.x BSD Makefile4.4. [94]The Plan 9 Makefile4.5. [95]Makefile Failures (Also see the [96]Configurations Options document, [97]Section 8). Lots of new features have been added in versions 7.0 and 8.0 that require access to new symbols, APIs, libraries, etc, and this will no doubt cause problems in compiling, linking, or execution on platforms where 6.0 and earlier built without incident. This section contains what we know as of the date of this file. The first category concerns the new Kermit Service Daemon (IKSD; see the [98]IKSD Administrator's Guide for details): The wtmp File When C-Kermit is started as an IKSD (under inetd), it makes syslog and wtmp entries, and also keeps its own ftpd-like log. The code assumes the wtmp log is /var/log/wtmp on Linux and /usr/adm/wtmp elsewhere. No doubt this assumption will need adjustment. Use -DWTMPFILE=path to override at compile time (there is also a runtime override). See [99]iksd.html for details. UTMP, utsname(), etc C-Kermit 7.0 gets as much info as it can about its job -- mainly for IKSD logging -- from utmp. But of course utmp formats and fields differ, and for that matter, there can be two different header files, <utmp.h> and <utmpx.h>. Look for HAVEUTMPX and HAVEUTHOST in [100]ckufio.c and let me know of any needed adjustments. Password lookup IKSD needs to authenticate incoming users against the password list. In some cases, this requires the addition of -lcrypt (e.g. in Unixware 2.x). In most others, the crypt functions are in the regular C library. If you get "crypt" as an unresolved symbol at link time, add -lcrypt to LIBS. If your site has local replacement libraries for authentication, you might need a special LIBS clause such as "LIBS=-L/usr/local/lib -lpwent". These days most Unix systems take advantage of shadow password files or Plugable Authentication Modules (PAM). If your system uses shadow passwords you must add -DCK_SHADOW to the CFLAGS list. If your system requires PAM you must add -DCK_PAM to the CFLAGS and -lpam -ldl to LIBS. getusershell() This is called by the IKSD at login time to see if a user has been "turned off". But many Unix platforms lack this function. In that case, you will get unresolved symbol reports at link time for _getusershell, _endusershell; to work around, add -DNOGETUSERSHELL. initgroups() This is called by IKSD after successful authentication. But some platforms do not have this function, so obviously it can't be called there, in which case add -DNOINITGROUPS. setreuid(), setreuid(), setregid() not found or "deprecated" Find out what your Unix variety wants you to use instead, and make appropriate substitutions in routine zvpass(), module [101]ckufio.c, and [102]let us know. printf() IKSD installs a printf() substitute to allow redirection of printf-like output to the connection. However, this can conflict with some curses libraries. In this case, separate binaries must be built for IKSD and non-IKSD use. If you encounter difficulties with any of the above, and you are not interested in running C-Kermit as an IKSD, then simply add NOIKSD to CFLAGS and rebuild. Example:make sco286(get lots of errors)make cleanmake sco286 "KFLAGS=-DNOIKSD" Some non-IKSD things to watch out for: Return type of main() The main() routine is in [103]ckcmai.c. If you get complaints about "main: return type is not blah", define MAINTYPE on the CC command line, e.g.:make xxx "KFLAGS=-DMAINTYPE=blah (where blah is int, long, or whatever). If the complaint is "Attempt to return a value from a function of type void" then add -DMAINISVOID:make xxx "KFLAGS=-DMAINISVOID=blah DNS Service Records This feature allows a remote host to redirect C-Kermit to the appropriate socket for the requested service; e.g. if C-Kermit requests service "telnet" and the host offers Telnet service on port 999 rather than the customary port 23. If you get compile-time complaints about not being able to find <resolv.h>, <netdb.h>, or <arpa/nameser.h>, add -DNO_DNS_SRV to CFLAGS. If you get link-time complaints about unresolved symbols res_search or dn_expand, try adding -lresolve to LIBS. \v(ipaddress) If "echo \v(ipaddress)" shows an empty string rather than your local IP address, add -DCKGHNLHOST to CFLAGS and rebuild. <sys/wait.h> If this file can't be found at compile time, add -DNOREDIRECT to CFLAGS. This disables the REDIRECT and PIPE commands and anything else that needs the wait() system service. syslog() C-Kermit can now write syslog records. Some older platforms might not have the syslog facility. In that case, add -DNOSYSLOG. Others might have it, but require addition of -lsocket to LIBS (SCO OSR5 is an example). See [104]Section 15. putenv() If "_putenv" comes up as an undefined symbol, add -DNOPUTENV to CFLAGS and rebuild. "Passing arg1 of 'time' from incompatible pointer" This is a mess. See the mass of #ifdefs in the appropriate module, [105]ckutio.c or [106]ckufio.c. gettimeofday() Wrong number of arguments. On most platforms, gettimeofday() takes two arguments, but on a handful of others (e.g. Motorola System V/88 V4, SNI Reliant UNIX 5.43, etc) it takes one. If your version of gettimeofday() is being called with two args but wants one, add -DGTODONEARG. "Assignment makes pointer from integer without a cast" This warning might appear in [107]ckutio.c or [108]ckufio.c. (or elsewhere), and usually can be traced to the use of a system or library function that returns a pointer but that is not declared in the system header files even though it should be. Several functions are commonly associated with this error: + getcwd(): Add -DDCLGETCWD to CFLAGS and rebuild. + popen() : Add -DDCLPOPEN to CFLAGS and rebuild. + fdopen(): Add -DDCLFDOPEN to CFLAGS and rebuild. "Operands of = have incompatible types" "Incompatible types in assignment" If this comes from [109]ckcnet.c and comes from a statement involving inet_addr(), try adding -DINADDRX to CFLAGS. If that doesn't help, then try adding -DNOMHHOST. Complaints about args to get/setsockopt(), getpeername(), getsockname() These are all in [110]ckcnet.c. Different platforms and OS's and versions of the same OS change this all the time: int, size_t, unsigned long, etc. All the affected variables are declared according to #ifdefs within ckcnet.c, so find the declarations and adjust the #ifdefs accordingly. size_t In case of complaints about "unknown type size_t", add -DSIZE_T=int (or other appropriate type) to CFLAGS. 'tz' undefined Use of undefined enum/struct/union 'timezone' Left of 'tv_sec' specifies undefined struct/union 'timeval' And similar complaints in [111]ckutio.c: Add -DNOGFTIMER and/or -DNOTIMEVAL. Symlinks The new built-in DIRECTORY command should show symlinks like "ls -l" does. If it does not, check to see if your platform has the lstat() and readlink() functions. If so, add -DUSE_LSTAT and -DCKSYMLINK to CFLAGS and rebuild. On the other hand, if lstat() is unresolved at link time, add -DNOLSTAT to CFLAGS. If readlink() is also unresolved, add -DNOSYMLINK. realpath() Link-time complains about realpath() -- find the library in which it resides and add it to LIBS (example for Unixware 7.1: "-lcudk70") or add -DNOREALPATH to CFLAGS and rebuild. If built with realpath() but debug log file is truncated or mangled, ditto (some realpath() implementations behave differently from others). If built with realpath() and seemingly random core dumps occur during file path resolution, ditto. Failure to locate header file <term.h> Usually happens on Linux systems that have the C compiler installed, but not the ncurses package (see comments about selective installs above). Go back and install ncurses, or use "make linuxnc" (Linux No Curses). "Can't find shared library libc.so.2.1" "Can't find shared library libncurses.so.3.0", etc... You are trying to run a binary that was built on a computer that has different library versions than your computer, and your computer's loader is picky about library version numbers. Rebuild from source on your computer. Time (struct tm) related difficulties: Errors like the following:"ckutio.c", line 11994: incomplete struct/union/enum tm: _tm"ckutio.c", line 11995: error: cannot dereference non-pointer type"ckutio.c", line 11995: error: assignment type mismatch"ckutio.c", line 11997: warning: using out of scope declaration: localtime"ckutio.c", line 11997: error: unknown operand size: op "=""ckutio.c", line 11997: error: assignment type mismatch"ckutio.c", line 11998: error: undefined struct/union member: tm_year"ckutio.c", line 12000: error: undefined struct/union member: tm_mon"ckutio.c", line 12001: error: undefined struct/union member: tm_mday"ckutio.c", line 12002: error: undefined struct/union member: tm_hour"ckutio.c", line 12003: error: undefined struct/union member: tm_min"ckutio.c", line 12004: error: undefined struct/union member: tm_sec are due to failure to include the appropriate time.h header files. Unix platforms generally have one or more of the following: <time.h>, <sys/time.h>, and <sys/timeb.h>. Any combination of these might be required. Defaults are set up for each makefile target. The defaults can be corrected on the CC command line by adding the appropriate definition from the following list to CFLAGS:-DTIMEH Include <time.h>-DNOTIMEH Don't include <time.h>-DSYSTIMEH Include <sys/time.h>-DNOSYSTIMEH Don't include <sys/time.h>-DSYSTIMEBH Include <sys/timeb.h>-DNOSYSTIMEBH Don't include <sys/timeb.h> Note that <sys/timeb.h> is relatively scarce in the System V and POSIX environments; the only platform of recent vintage where it was/is used is OSF/1 and its derivatives (Digital Unix and Tru64 Unix). Struct timeval and/or timezone not declared: In some cases, merely including the appropriate time.h header files is still not enough. POSIX.1 does not define the timeval struct, and so the items we need from the header are protected against us by #ifndef _POSIX_SOURCE or somesuch. In this case, we have to declare the timeval (and timezone) structs ourselves. To force this, include -DDCLTIMEVAL in CFLAGS. Warnings about dn_expand() Argument #4 WARNING: argument is incompatible with prototyp. It's the old
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -