greggh wrote:I've been thinking more about the naming controversy of Linux vs. GNU/Linux. Can someone tell me what essential GNU parts are in your standard distro? I'm talking about a very base server like install without X.
All of the MANY basic commands like ls, cd, pwd, cat, etc. here's a complete list of the GNU coreutils package:
Code: Select all
[troelsmj@earth ~]$ rpm -ql coreutils
/bin/basename
/bin/cat
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/cut
/bin/date
/bin/dd
/bin/df
/bin/echo
/bin/env
/bin/false
/bin/link
/bin/ln
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mv
/bin/nice
/bin/pwd
/bin/rm
/bin/rmdir
/bin/sleep
/bin/sort
/bin/stty
/bin/su
/bin/sync
/bin/touch
/bin/true
/bin/uname
/bin/unlink
/sbin/runuser
/usr/bin/[
/usr/bin/base64
/usr/bin/chcon
/usr/bin/cksum
/usr/bin/comm
/usr/bin/csplit
/usr/bin/cut
/usr/bin/dir
/usr/bin/dircolors
/usr/bin/dirname
/usr/bin/du
/usr/bin/env
/usr/bin/expand
/usr/bin/expr
/usr/bin/factor
/usr/bin/fmt
/usr/bin/fold
/usr/bin/groups
/usr/bin/head
/usr/bin/hostid
/usr/bin/id
/usr/bin/install
/usr/bin/join
/usr/bin/logname
/usr/bin/md5sum
/usr/bin/mkfifo
/usr/bin/nl
/usr/bin/nohup
/usr/bin/od
/usr/bin/paste
/usr/bin/pathchk
/usr/bin/pinky
/usr/bin/pr
/usr/bin/printenv
/usr/bin/printf
/usr/bin/ptx
/usr/bin/readlink
/usr/bin/runcon
/usr/bin/seq
/usr/bin/sha1sum
/usr/bin/sha224sum
/usr/bin/sha256sum
/usr/bin/sha384sum
/usr/bin/sha512sum
/usr/bin/shred
/usr/bin/shuf
/usr/bin/split
/usr/bin/stat
/usr/bin/sum
/usr/bin/tac
/usr/bin/tail
/usr/bin/tee
/usr/bin/test
/usr/bin/tr
/usr/bin/tsort
/usr/bin/tty
/usr/bin/unexpand
/usr/bin/uniq
/usr/bin/users
/usr/bin/vdir
/usr/bin/wc
/usr/bin/who
/usr/bin/whoami
/usr/bin/yes
/usr/sbin/chroot
Also, an amazingly critical and central GNU system component would be glibc, which is the C library, something that every single system that tries to be UNIX-like has. Writing a program without using glibc is really difficult as far as I have heard, not being a programmer I can't tell myself. Also, stuff like tar, bash, cpio, awk, screen, wget, sed, grep, fileutils, etc. are also GNU packages. GRUB, the bootloader is also from the GNU project.
The Single UNIX Specification, which a system must comply with to be "a UNIX system", has a list of commands and utilities that a system must have. Since GNU strives to just be UNIX-like, then it does not have to comply, but it still strives to be very much like UNIX, so most of what I just mentioned you could consider operating system parts, exceptions being stuff like screen and wget, I don't know about sed and grep, although both Solaris and all the *BSDs each have their own versions of those.
In addition to all that, you have got non-OS parts like GCC (Which is a huge-ass suite of tools), bison, automake, autoconf, diffutils, GnuPG, Emacs etc. etc.. Linus himself has stated that GCC was essential to his original development of the Linux kernel (Source: Revolution OS, the documentary). Another thing the GNU project has been doing, because of Sun's past (Let me stress, past!) unwillingness to free up Java, they have the GNU Classpath project to do a free Java platform. Also lately, they're doing GNU PDF which aims to fully implement the ISO standardized version of PDF etc.
I might add that GNOME is also part of the GNU project, I know you said just non-X parts, but it's just a "small" detail I thought you might get a kick out of.
greggh wrote:I've read that Linus thinks calling all distros GNU/Linux is silly, and one should only call a distro released by the GNU project GNU Linux.
Let me stress that Mr. Stallman does not want it to be "GNU Linux" but "GNU/Linux" or "GNU+Linux", the slash or plus indicates that the system is a combination of the GNU system and the Linux kernel. Omitting the slash or plus, makes the name mean that it's "GNU's version of Linux", like with GNU Emacs, but that's just non-sense because there are no clones of the Linux kernel.
greggh wrote:I'm trying to figure out who is telling more of the truth, Stallman or Linus.
I personally side with Richard Stallman on this one, but I personally don't really care all that much what people call it, however when talking about multiple systems in the same discussion (Eg. *BSD, Solaris etc.) I think the term GNU/Linux is very very useful to distinguish between the kernel and the entire system, because all the *BSDs and Solaris are "whole" operating systems, whereas GNU is an incomplete OS and Linux is just a kernel. This makes the conversation much more meaningful and easier to understand clearly in my opinion, there's nothing like a good, clear and meaningful conversation!
Also, another important aspect to keep in mind, is that the main reason why Richard wants the system called GNU/Linux is not just because that name gives credit to the GNU project, which did a
large part of the job, but it also makes a connection the GNU project which is all about giving freedom to computer users, which is the most important part.