join,sort,uniq: with -z, treat '\n' as a field separator
[coreutils.git] / README
blobefa1d2e79c6da6abb04c1ae09dc662e240dc4054
1 These are the GNU core utilities.  This package is the union of
2 the GNU fileutils, sh-utils, and textutils packages.
4 Most of these programs have significant advantages over their Unix
5 counterparts, such as greater speed, additional options, and fewer
6 arbitrary limits.
8 The programs that can be built with this package are:
10   [ arch base32 base64 basename cat chcon chgrp chmod chown chroot cksum comm
11   coreutils cp csplit cut date dd df dir dircolors dirname du echo env
12   expand expr factor false fmt fold groups head hostid hostname id install
13   join kill link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl
14   nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd
15   readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum sha384sum
16   sha512sum shred shuf sleep sort split stat stdbuf stty sum sync tac tail
17   tee test timeout touch tr true truncate tsort tty uname unexpand uniq
18   unlink uptime users vdir wc who whoami yes
20 See the file NEWS for a list of major changes in the current release.
22 If you obtained this file as part of a "git clone", then see the
23 README-hacking file.  If this file came to you as part of a tar archive,
24 then see the file INSTALL for compilation and installation instructions.
26 These programs are intended to conform to POSIX (with BSD and other
27 extensions), like the rest of the GNU system.  By default they conform
28 to older POSIX (1003.2-1992), and therefore support obsolete usages
29 like "head -10" and "chown owner.group file".  This default is
30 overridden at build-time by the value of <unistd.h>'s _POSIX2_VERSION
31 macro, and this in turn can be overridden at runtime as described in
32 the documentation under "Standards conformance".
34 The ls, dir, and vdir commands are all separate executables instead of
35 one program that checks argv[0] because people often rename these
36 programs to things like gls, gnuls, l, etc.  Renaming a program
37 file shouldn't affect how it operates, so that people can get the
38 behavior they want with whatever name they want.
40 Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
41 Kaveh Ghazi, and François Pinard for help with debugging and porting
42 these programs.  Many thanks to all of the people who have taken the
43 time to submit problem reports and fixes.  All contributed changes are
44 attributed in the commit logs.
46 And thanks to the following people who have provided accounts for
47 portability testing on many different types of systems: Bob Proulx,
48 Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
49 Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
50 Réjean Payette, Sam Tardieu.
52 Thanks to Michael Stone for inflicting test releases of this package
53 on Debian's unstable distribution, and to all the kind folks who used
54 that distribution and found and reported bugs.
56 Note that each man page is now automatically generated from a template
57 and from the corresponding --help usage message.  Patches to the template
58 files (man/*.x) are welcome.  However, the authoritative documentation
59 is in texinfo form in the doc directory.
62 *********************************************
63 On Mac OS X 10.5.1 (Darwin 9.1), test failure
64 ---------------------------------------------
66 Mac OS X 10.5.1 (Darwin 9.1) provides only partial (and incompatible)
67 ACL support, so although "./configure && make" succeeds, "make check"
68 exposes numerous failures.  The solution is to turn off ACL support
69 manually via "./configure --disable-acl".  For details, see
70 <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/12292/focus=12318>.
73 *****************************************
74 Test failure with NLS and gettext <= 0.17
75 -----------------------------------------
77 Due to a conflict between libintl.h and gnulib's new xprintf module,
78 when you configure with NLS support, and with a gettext installation
79 older than 0.17.1 (not yet released, at the time of this writing),
80 then some tests fail, at least on NetBSD 1.6.  To work around it in
81 the mean time, you can configure with --disable-nls.  For details,
82 see <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/12015/>.
85 *********************
86 Pre-C99 build failure
87 ---------------------
89 In 2009 we added this requirement:
90 To build the coreutils from source, you must have a C99-conforming
91 compiler, due to the use of declarations after non-declaration statements
92 in several files in src/.  There is code in configure to find and, if
93 possible, enable an appropriate compiler.  However, if configure doesn't
94 find a C99 compiler, it continues nonetheless, and your build will fail.
95 There used to be a "c99-to-c89.diff" patch you could apply to convert
96 to code that even an old pre-c99 compiler can handle, but it was too
97 tedious to maintain, so has been removed.
100 ***********************
101 HPUX 11.x build failure
102 -----------------------
104 A known problem exists when compiling on HPUX on both hppa and ia64
105 in 64-bit mode (i.e., +DD64) on HP-UX 11.0, 11.11, and 11.23.  This
106 is not due to a bug in the package but instead due to a bug in the
107 system header file which breaks things in 64-bit mode.  The default
108 compilation mode is 32-bit and the software compiles fine using the
109 default mode.  To build this software in 64-bit mode you will need
110 to fix the system /usr/include/inttypes.h header file.  After
111 correcting that file the software also compiles fine in 64-bit mode.
112 Here is one possible patch to correct the problem:
114 --- /usr/include/inttypes.h.orig        Thu May 30 01:00:00 1996
115 +++ /usr/include/inttypes.h     Sun Mar 23 00:20:36 2003
116 @@ -489 +489 @@
117 -#ifndef __STDC_32_MODE__
118 +#ifndef __LP64__
121 ************************
122 OSF/1 4.0d build failure
123 ------------------------
125 If you use /usr/bin/make on an OSF/1 4.0d system, it will fail due
126 to the presence of the "[" target.  That version of make appears to
127 treat "[" as some syntax relating to locks.  To work around that,
128 the best solution is to use GNU make.  Otherwise, simply remove
129 all mention of "[$(EXEEXT)" from src/Makefile.
132 *************************************************
133 "make check" failure on IRIX 6.5 and Solaris <= 9
134 -------------------------------------------------
136 Using the vendor make program to run "make check" fails on these two systems.
137 If you want to run all of the tests there, use GNU make.
141 **********************
142 Running tests as root:
143 ----------------------
145 If you run the tests as root, note that a few of them create files
146 and/or run programs as a non-root user, 'nobody' by default.
147 If you want to use some other non-root username, specify it via
148 the NON_ROOT_USERNAME environment variable.  Depending on the
149 permissions with which the working directories have been created,
150 using 'nobody' may fail, because that user won't have the required
151 read and write access to the build and test directories.
152 I find that it is best to unpack and build as a non-privileged
153 user, and then to run the following command as that user in order
154 to run the privilege-requiring tests:
156   sudo env PATH="$PATH" NON_ROOT_USERNAME=$USER make -k check-root
158 If you can run the tests as root, please do so and report any
159 problems.  We get much less test coverage in that mode, and it's
160 arguably more important that these tools work well when run by
161 root than when run by less privileged users.
164 ***************
165 Reporting bugs:
166 ---------------
168 Send bug reports, questions, comments, etc. to bug-coreutils@gnu.org.
169 To suggest a patch, see the files README-hacking and HACKING for tips.
171 If you have a problem with 'sort', try running 'sort --debug', as it
172 can can often help find and fix problems without having to wait for an
173 answer to a bug report.  If the debug output does not suffice to fix
174 the problem on your own, please compress and attach it to the rest of
175 your bug report.
177 IMPORTANT: if you take the time to report a test failure,
178 please be sure to include the output of running 'make check'
179 in verbose mode for each failing test.  For example,
180 if the test that fails is tests/df/df-P.sh, then you would
181 run this command:
183   make check TESTS=tests/df/df-P.sh VERBOSE=yes SUBDIRS=. >> log 2>&1
185 For some tests, you can get even more detail by adding DEBUG=yes.
186 Then include the contents of the file 'log' in your bug report.
189 ***************************************
191 There are many tests, but nowhere near as many as we need.
192 Additions and corrections are very welcome.
194 If you see a problem that you've already reported, feel free to re-report
195 it -- it won't bother me to get a reminder.  Besides, the more messages I
196 get regarding a particular problem the sooner it'll be fixed -- usually.
197 If you sent a complete patch and, after a couple weeks you haven't
198 received any acknowledgement, please ping us.  A complete patch includes
199 a well-written ChangeLog entry, unified (diff -u format) diffs relative
200 to the most recent test release (or, better, relative to the latest
201 sources in the public repository), an explanation for why the patch is
202 necessary or useful, and if at all possible, enough information to
203 reproduce whatever problem prompted it.  Plus, you'll earn lots of
204 karma if you include a test case to exercise any bug(s) you fix.
205 Here are instructions for checking out the latest development sources:
207   http://savannah.gnu.org/git/?group=coreutils
209 If your patch adds a new feature, please try to get some sort of consensus
210 that it is a worthwhile change.  One way to do that is to send mail to
211 coreutils@gnu.org including as much description and justification
212 as you can.  Based on the feedback that generates, you may be able to
213 convince us that it's worth adding.  Please also consult the list of
214 previously discussed but ultimately rejected feature requests at:
215 http://www.gnu.org/software/coreutils/rejected_requests.html
218 WARNING:  Now that we use the ./bootstrap script, you should not run
219 autoreconf manually.  Doing that will overwrite essential source files
220 with older versions, which may make the package unbuildable or introduce
221 subtle bugs.
224 WARNING:  If you modify files like configure.in, m4/*.m4, aclocal.m4,
225 or any Makefile.am, then don't be surprised if what gets regenerated no
226 longer works.  To make things work, you'll have to be using appropriate
227 versions of the tools listed in bootstrap.conf's buildreq string.
229 All of these programs except 'test' recognize the '--version' option.
230 When reporting bugs, please include in the subject line both the package
231 name/version and the name of the program for which you found a problem.
233 For general documentation on the coding and usage standards
234 this distribution follows, see the GNU Coding Standards,
235 http://www.gnu.org/prep/standards_toc.html.
237 For any copyright year range specified as YYYY-ZZZZ in this package
238 note that the range specifies every single year in that closed interval.
240 Mail suggestions and bug reports for these programs to
241 the address on the last line of --help output.
244 ========================================================================
246 Copyright (C) 1998-2016 Free Software Foundation, Inc.
248 Permission is granted to copy, distribute and/or modify this document
249 under the terms of the GNU Free Documentation License, Version 1.3 or
250 any later version published by the Free Software Foundation; with no
251 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
252 Texts.  A copy of the license is included in the "GNU Free
253 Documentation License" file as part of this distribution.