6.16. Coreutils-6.9

El paquete Coreutils contiene utilidades para mostrar y establecer las características básicas del sistema.

Tiempo estimado de construcción: 1.0 SBU
Espacio requerido en disco: 72.4 MB

6.16.1. Instalación de Coreutils

La versión de la función “futimens” usada por Coreutils es incompatible con la versión actual proporcionada por Glibc. Por tanto, renombra la función:

sed -i 's/futimens/gl_&/' src/{copy,touch}.c lib/utimens.{c,h}

Un problema conocido en el programa uname de este paquete es que la opción -p siempre devuelve unknown (desconocido). El siguiente parche corrige este comportamiento en arquitecturas Intel:

patch -Np1 -i ../coreutils-6.9-uname-1.patch

Evita que Coreutils instale binarios que serán instalados más tarde por otros paquetes:

patch -Np1 -i ../coreutils-6.9-suppress_uptime_kill_su-1.patch

POSIX requiere que los programas de Coreutils reconozcan correctamente la amplitud de los caractéres incluso en locales multibytes. El siguiente parche corrigue este incumplimiento y otros errores relacionados con la internacionalización:

patch -Np1 -i ../coreutils-6.9-i18n-1.patch

Para poder superar la prueba añadida por este parche, deben cambierse los permisos del fichero de la prueba:

chmod +x tests/sort/sort-mb-tests
[Nota]

Nota

En el pasado se encontraron muchos errores en dicho parche. Cuando informes de nuevos fallos a los mantenedores de Coreutils, comprueba primero si estos son reproducibles sin el parche.

Prepara Coreutils para su compilación:

./configure --prefix=/usr

Compila el paquete:

make

Si decides no ejecutar el banco de pruebas, salta hasta “Instala el paquete”.

Ahora todo está preparado para ejecutar el banco de pruebas. Primero ejecuta las pruebas que requieren que se ejecuten como root:

make NON_ROOT_USERNAME=nobody check-root

Vamos a ejecutar el resto de pruebas como usuario nobody. Sin embargo, algunas pruebas necesitan que el usuario sea miembro de más de un grupo. Para que estas pruebas no sean saltadas añadiremos un grupo temporal y haremos al usuario nobody miembro suyo:

echo "dummy:x:1000:nobody" >> /etc/group

Ejecuta las pruebas:

su-tools nobody -s /bin/bash -c "make RUN_EXPENSIVE_TESTS=yes check"

Elimina el grupo temporal:

sed -i '/dummy/d' /etc/group

Instala el paquete:

make install

Mueve los programas a la localización especificada por el FHS:

mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

Algunos de los guiones del paquete LFS-Bootscripts dependen de head, sleep y nice. Como /usr puede no estar disponible en las primeras fases del arranque, es necesario que estos binarios se encuentren en la partición raíz:

mv -v /usr/bin/{head,sleep,nice} /bin

6.16.2. Contenido de Coreutils

Programas instalados: base64, basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami y yes

Descripciones cortas

base64

Codifica y decodifica datos según la especificación base64 (RFC 3548).

basename

Elimina cualquier ruta y sufijo indicado de un nombre de fichero.

cat

Concatena ficheros en la salida estándar.

chgrp

Cambia el grupo propietario de ficheros y directorios.

chmod

Cambia los permisos de cada fichero dado al modo indicado. El modo puede ser una representación simbólica de los cambios a hacer o un número octal que representa los nuevos permisos.

chown

Cambia el usuario y/o el grupo propietario de ficheros y directorios.

chroot

Ejecuta un comando usando el directorio especificado como directorio /.

cksum

Muestra la suma de comprobación CRC (Comprobación Cíclica Redundante) y cuenta los bytes de cada fichero especificado.

comm

Compara dos ficheros ordenados, sacando en tres columnas las líneas que son únicas y las líneas que son comunes.

cp

Copia ficheros.

csplit

Trocea un fichero en varios nuevos ficheros, separándolos de acuerdo a un patrón indicado o a un número de líneas, y muestra el número de bytes de cada nuevo fichero.

cut

Imprime fragmentos de líneas, seleccionando los fragmentos de acuerdo a los campos o posiciones indicadas.

date

Muestra la fecha y hora actual en un formato determinado o establece la fecha y hora del sistema.

dd

Copia un fichero usando el tamaño y número de bloques indicado, mientras que, opcionalmente, realiza conversiones en él.

df

Muestra la cantidad de espacio disponible (y usado) en todos los sistemas de ficheros montados, o solo del sistema de ficheros en el que se encuentran los ficheros seleccionados.

dir

Lista el contenido del directirio indicado (lo mismo que ls).

dircolors

Imprime comandos para modificar la variable de entorno LS_COLOR, para cambiar el esquema de color usado por ls.

dirname

Elimina los sufijos que no son directorios del nombre de un fichero.

du

Muestra la cantidad de espacio en disco usado por el directorio actual o por cada directorio indicado (incluyendo todos sus subdirectorios) o por cada fichero indicado.

echo

Muestra la cadena indicada.

env

Ejecuta un programa en un entorno modificado.

expand

Convierte las tabulaciones a espacios.

expr

Evalúa expresiones.

factor

Muestra los factores primos de los números enteros especificados.

false

No hace nada, infructuoso. Siempre termina con un código de estado que indica un fallo.

fmt

Reformatea cada párrafo de los ficheros especificados.

fold

Reajusta la longitud de línea en cada fichero dado.

groups

Muestra los grupos a los que pertenece un usuario.

head

Imprime las 10 primeras líneas (o el número de líneas indicado) de un fichero.

hostid

Muestra el identificador numérico (en hexadecimal) de la máquina actual.

hostname

Muestra o establece el nombre de la máquina actual.

id

Muestra los identificadores efectivos de usuario y grupo, y los grupos a los que pertenece, del usuario actual o de un usuario dado.

install

Copia ficheros mientras establece sus permisos y, si es posible, su propietario y grupo.

join

Une a partir de dos ficheros las líneas que tienen campos de unión idénticos.

link

Crea un enlace duro con el nombre indicado de un fichero dado.

ln

Crea enlaces duros o blandos (simbólicos) entre ficheros.

logname

Muestra el nombre de acceso del usuario actual.

ls

Lista el contenido de cada directorio indicado.

md5sum

Muestra o verifica sumas de comprobación MD5 (Mensaje de Resúmen 5).

mkdir

Crea directorios con los nombres indicados.

mkfifo

Crea tuberías (FIFO, el primero en entrar, el primero en salir) con los nombres indicados.

mknod

Crea nodos de dispositivos con los nombres indicados. Un nodo de dispositivo es un fichero especial de caracteres o un fichero especial de bloques o una tubería.

mv

Mueve o renombra ficheros o directorios.

nice

Ejecuta un programa con una prioridad distinta.

nl

Numera las líneas de los ficheros dados.

nohup

Ejecuta un comando que no se interrumpe cuando se cierra la sesión, con su salida redirigida a un fichero de registro.

od

Vuelca ficheros en octal y otros formatos.

paste

Mezcla los ficheros indicados, uniendo secuencialmente las líneas correspondientes de uno y otro, separándolas con tabulaciones.

pathchk

Comprueba si los nombres de ficheros son válidos o portables.

pinky

Es un cliente finger ligero. Muestra algo de información sobre un determinado usuario.

pr

Pagina y encolumna el texto de un fichero para imprimirlo.

printenv

Muestra el entorno.

printf

Muestra los argumentos dados de acuerdo al formato indicado. Muy parecido a la función printf de C.

ptx

Genera un índice permutado de los contenidos de un fichero, con cada palabra clave en su contexto.

pwd

Muestra el nombre del directorio de trabajo actual.

readlink

Muestra el valor del enlace simbólico indicado.

rm

Elimina ficheros o directorios.

rmdir

Elimina directorios si están vacíos.

seq

Muestra una secuencia de números, dentro de un cierto rango y con un cierto incremento.

sha1sum

Muestra o verifica sumas de comprobación SHA1 de 160 bits.

sha224sum

Muestra o verifica sumas de comprobación SHA de 224 bits.

sha256sum

Muestra o verifica sumas de comprobación SHA de 256 bits.

sha384sum

Muestra o verifica sumas de comprobación SHA de 384 bits.

sha512sum

Muestra o verifica sumas de comprobación SHA de 512 bits.

shred

Sobreescribe los ficheros indicados repetidamente con patrones extraños, haciendo realmente difícil recuperar los datos.

shuf

Mezcla líneas de texto.

sleep

Hace una pausa por el tiempo indicado.

sort

Ordena las líneas de los ficheros indicados.

split

Divide un fichero en trozos, por tamaño o por número de líneas.

stat

Muestra el estado de ficheros o sistemas de ficheros.

stty

Establece o muestra los ajuste de línea del terminal.

sum

Muestra la suma de comprobación y el número de bloques para cada fichero dado.

sync

Refresca los almacenadores intermedios de los sistemas de ficheros. Fuerza el guardado de los bloques modificados al disco y actualiza el superbloque.

tac

Concatena en orden inverso los ficheros indicados.

tail

Imprime las últimas 10 líneas (o el número de líneas indicado) de cada fichero dado.

tee

Lee de la entrada estándar y escribe tanto en la salida estándar como en los ficheros indicados.

test

Comprueba el tipo de los ficheros y compara valores.

touch

Cambia las fechas de modificación o acceso de cada fichero especificado, poniéndole la fecha actual. Si un fichero no existe crea uno vacío.

tr

Convierte, altera y borra caracteres de la entrada estándar.

true

No hace nada, conseguido. Siempre termina con un código de estado que indica éxito.

tsort

Realiza una ordenación topológica. Escribe una lista totalmente ordenada de acuerdo con el orden parcial del fichero especificado.

tty

Muestra el nombre de fichero del terminal conectado a la entrada estándar.

uname

Muestra información del sistema.

unexpand

Convierte los espacios en tabulaciones.

uniq

Elimina líneas consecutivas duplicadas.

unlink

Elimina el fichero indicado.

users

Muestra los nombres de los usuarios conectados actualmente.

vdir

Es lo mismo que ls -l.

wc

Muestra el número de líneas, palabras y bytes de un fichero, y una línea con el total si se ha especificado más de uno.

who

Muestra quién está conectado.

whoami

Muestra el nombre de usuario asociado con el identificador de usuario efectivo actual.

yes

Muestra en pantalla “y” o una cadena de texto dada indefinidamente, hasta que es matado.