Cap 11
Cap 11
Cap 11
2 Administración de Paquetes
Administración de Paquetes es un sistema que instala, actualiza, consulta o elimina software dentro de un sistema de archivos. En Linux hay muchos sistemas de administración de
paquetes de software diferentes, pero los dos más populares son Debian y Red Hat
La herramienta de nivel más bajo para administrar estos archivos es el comando dpkg. Este comando puede ser complicado para los usuarios de Linux principiantes, por lo que una
herramienta de paquetes avanzada, apt-get, un programa front-end para la herramienta dpkg, facilita más la administración de los paquetes. Existen otras herramientas de la línea de
comandos que sirven como front-end de dpkg, tales como aptitude, así como front-ends de GUI como synaptic y software-center (tal como se muestra abajo).
Previous
Next
Para buscar palabras clave dentro de estos paquetes, puedes utilizar el comando sudo apt-cache search keyword.
Cuando hayas encontrado el paquete que quieres instalar, puedes instalarlo con el comando sudo apt-get install package.
Importante: Para ejecutar estos comandos tu sistema necesitará acceso a Internet. El comando apt-cache busca repositorios de estos programas de software en Internet.
Previous
Next
Si ya tienes instalada una versión anterior del paquete, entonces se actualizará. De lo contrario se ejecuta una nueva instalación.
Si quieres actualizar todos los paquetes posibles, tienes que ejecutar el comando sudo apt-get upgrade.
Los usuarios que inicien sesión con una interfaz gráfica pueden ver en el área de las notificaciones un mensaje del update-manager («administrador de actualizaciones» en español) que
indica que las actualizaciones están disponibles tal como se muestra a continuación:
Previous
Next
Si quieres eliminar todos los archivos de un paquete de software, excepto los archivos de configuración, puedes ejecutar el comando sudo apt-get remove package.
Si quieres eliminar todos los archivos de un paquete de software, incluyendo los archivos de configuración, puedes ejecutar el comando sudo apt-get --purge remove package.
Puede que quieras guardar los archivos de configuración en caso de que vuelvas a instalar el paquete de software en un momento posterio
Para listar los archivos que componen un paquete especial, puedes ejecutar el comando de dpkg -L package.
Para consultar un paquete y obtener información o su estado usa el comando de dpkg - s package.
Para determinar si un determinado archivo fue puesto en el sistema de archivos como el resultado de la instalación de un paquete utiliza el comando dpkg -S /path/to/file. Si el archivo
era parte de un paquete, podría proporcionarse el nombre del paquete. Por ejemplo:
En el ejemplo anterior se muestra que el archivo /usr/bin/who es parte del paquete coreutils.
RPM utiliza un archivo .rpm para cada paquete de software. Este sistema es el que usan las distribuciones derivadas de Red Hat (como Red Hat, Centos y Fedora) para administrar
software. Además, varias otras distribuciones que no son derivadas de Red Hat (como SUSE, OpenSUSE y Mandriva) también utilizan RPM.
Nota: Los comandos de RPM no están disponible dentro del entorno de la máquina virtual de este curso.
Al igual que el sistema Debian, los sistemas de administración de paquetes RPM rastrean dependencias entre paquetes. Las dependencias rastreadas aseguran que cuando se instala un
paquete, el sistema también instalará los paquetes que el paquete necesita para funcionar correctamente. Las dependencias también garantizan que las actualizaciones de software y las
eliminaciones se realicen correctamente.
La herramienta de back-end más comúnmente utilizada para la administración de paquetes RPM es el comando rpm. Mientras que el comando rpm puede instalar, actualizar, consultar y
eliminar paquetes, las herramientas front-end de línea de comandos como yum y up2date automatizan el proceso de resolución de los problemas con las dependencias.
Además, existen herramientas de front-end basadas en GUI tales como yumex y gpk-application (ver abajo) que también facilitan la administración de paquetes RPM.
Debes tener en cuenta que muchos de los comandos siguientes requieren privilegios de root. La regla es que si un comando afecta el estado de un paquete, necesitarás tener acceso
administrativo. En otras palabras, un usuario normal puede realizar una consulta o una búsqueda, pero agregar, actualizar o eliminar un paquete requiere que el comando lo ejecute un
usuario root.
Previous
Next
11.2.2.1 RPM - Agregando paquetes
Para buscar un paquete desde los repositorios configurados, ejecuta el comando yum search keyword.
Para instalar un paquete, junto con sus dependencias, ejecuta el comando yum install package.
Los comandos RPM no están disponibles dentro del entorno de la máquina virtual de este curso.
Si quieres actualizar todos los paquetes, puedes ejecutar el comando yum update.
Si las actualizaciones están disponibles y el usuario está utilizando una GUI, entonces el gpk-update-viewer puede mostrar un mensaje en el área de las notificaciones de la pantalla
indicando que las actualizaciones están disponibles.
Los comandos RPM no están disponibles dentro del entorno de la máquina virtual de este curso.
Previous
Next
Mientras que puedes quitar los paquetes de software con el comando rpm, éste no eliminará automáticamente los paquetes de dependencia.
Los comandos RPM no están disponibles dentro del entorno de la máquina virtual de este curso.
Previous
Next
Los comandos RPM no están disponibles dentro del entorno de la máquina virtual de este curso.
Para obtener una lista de todos los paquetes que están instalados actualmente en el sistema ejecuta el comando rpm -qa.
Para listar los archivos que componen un paquete especial, puedes ejecutar el comando de rpm -ql package.
Para consultar un paquete y obtener información o su estado ejecuta el comando rpm -qi package.
Para determinar si un archivo en particular fue puesto en el sistema de archivos como el resultado de la instalación de un paquete utiliza el comando rpm -qf /path/to/file.
Previous
Next
La implementación del kernel de Linux incluye muchos subsistemas que forman parte del kernel y otros que se pueden cargar de manera modular cuando sea necesario. Algunas de las
funciones principales del kernel de Linux incluyen una interfaz de invocación del sistema, administración de procesos, administración de memoria, sistema de archivos virtual, redes y
controladores de dispositivos.
En resumen, el kernel acepta comandos del usuario y gestiona los procesos que llevan a cabo los comandos, dándoles acceso a los dispositivos como memoria, discos, interfaces de red,
teclados, ratones, monitores y mucho más.
El kernel proporciona acceso a la información sobre la ejecución de los procesos a través de un pseudo-sistema de archivos que es visible bajo el directorio /proc. Los dispositivos de
hardware están a disposición a través de unos archivos especiales bajo el directorio /dev, mientras que la información sobre tales dispositivos se encuentra en otro pseudo-sistema de
archivos bajo el directorio /sys.
El directorio /proc no sólo contiene la información sobre la ejecución de los procesos, como su nombre sugiere (proceso), sino también contiene la información sobre el hardware del
sistema y la configuración actual del kernel. A continuación puedes ver un ejemplo de salida:
Ten en cuenta que la información mostrada en los ejemplos siguientes será diferente de lo que puedes ver dentro del entorno de la máquina virtual de este curso.
La salida de la ejecución de ls /proc muestra más de cien directorios numerados. Hay un directorio numerado por cada proceso en ejecución en el sistema, donde el nombre del
directorio coincide con el PID (ID del proceso) del proceso en ejecución.
Como el proceso de /sbin/init siempre es el primer proceso, tiene un PID de 1 y la información del proceso /sbin/init se puede encontrar en el directorio /proc/1 .Como verás
después en este capítulo, hay varios comandos que te permiten ver información sobre procesos en ejecución, por lo que raramente es necesario para los usuarios tener que ver los
archivos para cada proceso en ejecución directamente.
Quizá también veas que hay un número de archivos regulares en el directorio /proc, como /proc/cmdline, /proc/meminfo y /proc/modules. Estos archivos proporcionan información
sobre el kernel en ejecución:
El archivo /proc/cmdline puede ser importante porque contiene toda la información que le fue pasada al kernel cuando fué iniciado.
El archivo /proc/meminfo contiene información sobre el uso de memoria por el kernel.
El archivo /proc/modules contiene una lista de módulos que están cargados actualmente en el kernel para agregar funcionalidad extra.
De nuevo, raramente es necesario ver estos archivos directamente, ya que otros comandos ofrecen una salida más amigable para el usuario y una manera alternativa de ver esta
información.
Mientras que la mayoría de los “archivos” bajo el directorio /proc no se pueden modificar, incluso por el usuario root, los “archivos” bajo el directorio /proc/sys pueden modificarse por
el usuario root. Modificar estos archivos cambiarán el comportamiento del kernel de Linux.
Una modificación directa a estos archivos solo causa cambios temporales al kernel. Para hacer cambios permanentes, se le pueden agregar entradas al archivo /etc/sysctl.conf.
Por ejemplo, el directorio /proc/sys/net/ipv4 contiene un archivo llamado icmp_echo_ignore_all. Si ese archivo contiene un cero 0 , como lo hace normalmente, entonces el sistema
responderá a solicitudes icmp. Si ese archivo contiene un uno 1 , entonces el sistema no responderá a solicitudes icmp: ”
[user@localhost ~]$ su -
Password:
[root@localhost ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@localhost ~]# ping -c1 localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.026 ms
Como el proceso /sbin/init inicia otros procesos, a su vez éstos pueden iniciar procesos, que pueden poner en marcha otros procesos, y así sucesivamente. Cuando un proceso inicia
otro proceso, el proceso que lleva a cabo la puesta en marcha se llama proceso padre y el proceso que se inicia se denomina el proceso hijo. Al visualizar los procesos, el padre será
marcado como PPID.
Cuando el sistema ha estado funcionando durante mucho tiempo, eventualmente alcanzará el máximo valor de PID, que puedes ver y configurar a través del
archivo /proc/sys/kernel/pid_max. Una vez que se ha utilizado el PID más grande, el sistema se «volteará» y reanudará asignando valores de PID que están disponibles en la parte inferior
de la gama.
Los gráficos siguientes proporcionan un ejemplo y la explicación del comando pstree. La salida variará de los resultados que verás si introduces el comando en el entorno de la máquina
virtual de este curso.
Puedes acomodar los procesos en un árbol familiar de las parejas de padre e hijo. Si quieres ver este árbol, el comando pstree lo mostrará:
Si quieres examinar la relación de procesos padre e hijo, usando la salida del comando anterior, podrías considerar que es como:
11.5 El Comando ps (proceso)
Otra forma de visualizar los procesos es con el comando ps. De forma predeterminada, el comando ps sólo mostrará los procesos actuales en el shell actual. Irónicamente, verás
el ps ejecutándose cuando quieras ver qué otra cosa se está ejecutando en el shell:
sysadmin@localhost:~$ ps
PID TTY TIME CMD
6054 ? 00:00:00 bash
6070 ? 00:00:01 xeyes
6090 ? 00:00:01 firefox
6146 ? 00:00:00 ps
sysadmin@localhost:~$
De manera similar al comando pstree, si ejecutas ps con la opción --forest, verás las líneas indicando la relación de padre e hijo:
sysadmin@localhost:~$ ps --forest
PID TTY TIME CMD
6054 ? 00:00:00 bash
6090 ? 00:00:02 \_ firefox
6180 ? 00:00:00 \_ dash
6181 ? 00:00:00 \_ xeyes
6188 ? 00:00:00 \_ ps
sysadmin@localhost:~$
Para poder ver todos los procesos del sistema, puedes ejecutar el comando ps aux o ps -ef:
La salida de todos los procesos ejecutándose en un sistema sin duda puede ser abrumador. En el ejemplo la salida del comando ps se filtró por el comando head, por lo que se ven sólo los
diez primeros procesos. Si no filtras la salida del comando ps, es probable que tengas que recorrer cientos de procesos para encontrar lo que te interesa.
Una forma común de ejecutar el comando ps es utilizando el comando grep para filtrar la salida que muestre las líneas que coincidan con una palabra clave, como el nombre del proceso.
Por ejemplo, si quieres ver la información sobre el proceso de firefox, puede ejecutar un comando como:
Como usuario root te pueden interesar más los procesos de otro usuario que tus propios procesos. Debido a los varios estilos de opciones que soporta el comando ps, hay diferentes
formas de ver los procesos de un usuario individual. Utilizando la opción tradicional de UNIX, para ver los procesos del sysadmin (o «administrador del sistema» en español), ejecuta el
siguiente comando:
sysadmin@localhost:~$ top
De forma predeterminada, la salida del comando top se ordena por el % del tiempo de CPU que cada proceso está utilizando actualmente, con los valores más altos en primer lugar. Esto
significa los procesos que son los «CPU hogs» aparecen primero:
top - 16:58:13 up 26 days, 19:15, 1 user, load average: 0.60, 0.74, 0.60
Tasks: 8 total, 1 running, 7 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.0%us, 2.5%sy, 0.0%ni, 90.2%id, 0.0%wa, 1.1%hi, 0.2%si, 0.0%st
Mem: 32953528k total, 28126272k used, 4827256k free, 4136k buffers
Swap: 0k total, 0k used, 0k free, 22941192k cached
Hay una extensa lista de comandos que se pueden ejecutar dentro del top:
Teclas Significado
ho? Ayuda
Una de las ventajas del comando top es que se puede dejar correr para permanecer al «pendiente» de los procesos para propósitos de monitoreo. Si un proceso comienza a dominar o
«huye» con el sistema, entonces por defecto aparecerá en la parte superior de la lista presentada por el comando top. Un administrador que está ejecutando el comando top puede
entonces tomar una de dos acciones:
Terminar el proceso «corrido»: Apretando la tecla k mientras se ejecuta el comando top pedirá al usuario que proporcione el PID y un número señal. Enviar la señal
predeterminada le pedirá al proceso que termine, pero enviando el número 9 de la señal, la señal KILL, forzará el cierre del proceso.
Ajustar la prioridad del proceso: Apretando la tecla r mientras se ejecuta el comando top pedirá al usuario que ejecute el renice del proceso seguido por el valor del
discernimiento (o «niceness» en inglés). Los valores de niceness pueden ser del -20 al 19 y afectan la prioridad. Sólo el usuario root puede utilizar un «niceness» menor que el
valor actual de niceness o un valor de niceness negativo, que hace que el proceso se ejecute con una prioridad mayor. Cualquier usuario puede proporcionar un valor de
niceness que es mayor que el valor actual de niceness y hará que el proceso se ejecute con una prioridad baja.
Otra ventaja del comando top es que puede darte una representación general de lo ocupado que está el sistema actualmente y la tendencia en el tiempo. Los promedios de carga se
muestran en la primera línea de la salida del comando top e indican que tan ocupado ha estado el sistema durante los últimos uno, cinco y quince minutos. Esta información también
puede verse ejecutando el comando uptime o directamente mostrando el contenido del archivo /proc/loadavg:
Los tres primeros números de este archivo indican la carga media sobre los intervalos pasados uno, cinco y quince minutos. El cuarto valor es una fracción que muestra el número de los
procesos ejecutando código actualmente en la CPU 1 y el número total de los procesos 254. El quinto valor es el último valor de PID que ejecutó código en la CPU.
El número reportado como un promedio de carga es proporcional al número de los núcleos de CPU capaces de ejecutar procesos. En una CPU de un solo núcleo un valor de uno significaría
que el sistema está totalmente cargado. En una CPU de cuatro núcleos un valor de uno significaría que 1/4 o el 25% del sistema está cargado.
Otra razón por la que los administradores mantienen ejecutado el comando top es la capacidad para monitorear el uso de la memoria en tiempo real. Ambos comandos el top y
el free muestran las estadísticas del uso general de la memoria.
El comando top también puede mostrar el porcentaje de memoria utilizado por cada proceso, así pues, se puede identificar rápidamente un proceso que está consumiendo una cantidad
excesiva de memoria.
Previous
Next
Si quieres supervisar el uso de la memoria en el tiempo con el comando free, puedes ejecutarlo con la opción -s y especificar el número de segundos. Por ejemplo, ejecutando free -s
10 actualizaría la salida cada 10 segundos.
Para hacer más fácil la interpretación de la salida del comando free, las opciones -m o -g pueden ser útiles para mostrar la salida en megabytes o gigabytes, respectivamente. Sin estas
opciones, se muestra la salida en bytes:
sysadmin@localhost:~$ free
total used free shared buffers cached
Mem: 32953528 26171772 6781756 0 4136 22660364
-/+ buffers/cache: 3507272 29446256
Swap: 0 0 0
sysadmin@localhost:~$
Si la cantidad de memoria y swap que está disponible es muy baja, el sistema comenzará automáticamente a cerrar los procesos. Esta es una razón por la que es importante supervisar el
uso de la memoria del sistema. Un administrador que se da cuenta que el sistema se va quedando sin memoria libre, puede utilizar el comando top o kill para cerrar los procesos que
quiere, en lugar de dejar que el sistema elija por él.
Estos archivos de registro son muy importantes por un número de razones; pueden ser útiles en la solución de los problemas y pueden ser utilizados para la determinación de si o no ha
habido intentos de acceso no autorizado.
Algunos procesos son capaces de «registrar» sus propios datos en estos archivos, otros procesos dependen de otro proceso (un demonio) para manejar estos archivos de registro de
datos.
Estos demonios de registro pueden variar de una distribución a otra. Por ejemplo, en algunas distribuciones, los demonios que se ejecutan en segundo plano para realizar el registro se
llaman syslogd y klogd. En otras distribuciones, un demonio como el rsyslogd en Red Hat y Centos o systemd journald en Fedora puede servir para esta función de registro.
Independientemente del nombre del proceso de demonio, los archivos de registro se colocan casi siempre en la estructura del directorio /var/log. Aunque algunos de los nombres de
archivo pueden variar, aquí están algunos de los archivos más comunes en este directorio:
Archivo Contenido
boot.log Mensajes generados cuando servicios se inician durante el arranque del sistema.
cron Mensajes generados por el demonio crond para las tareas que se deben ejecutar en forma recurrente.
maillog Mensajes producidos por el demonio de correo para mensajes de correo electrónico enviados o recibidos
messages Mensajes del kernel y otros procesos que no pertenecen a ninguna otra parte. A veces se denomina dsyslog en lugar de messages cuando el demonio
haya grabado este archivo.
secure Mensajes de los procesos que requieren autorización o autenticación (por ejemplo, el proceso de inicio de sesión).
Los archivos de registro se rotan, lo que significa que los archivos de registro antiguos cambiaron de nombre y fueron reemplazados por nuevos archivos de registro. Los nombres de
archivo que aparecen en la tabla anterior pueden tener un sufijo numérico o fecha añadida al nombre, por ejemplo: secure.0 o secure-20131103
La rotación de un archivo de registro por lo general se ocurre en forma programada, por ejemplo, una vez por semana. Cuando se rota un archivo de registro, el sistema deja de escribir en
el archivo de registro y agrega un sufijo. Entonces se crea un nuevo archivo con el nombre original y el proceso de registro sigue usando este nuevo archivo.
Con los demonios modernos normalmente se utiliza un sufijo de fecha. De esta manera, al final de la semana que termina el 03 de noviembre de 2013, el demonio de registro podría dejar
de escribir en el archivo /var/log/messages, lo podría renombrar a /var/log/messages-20131103 y comenzar a escribir en un nuevo archivo /var/log/messages.
Aunque la mayoría de los archivos de registro contienen texto como su contenido, que puede verse de forma segura con muchas herramientas, otros archivos
como /var/log/btmp y /var/log/wtmp contienen un binario. Mediante el comando file (o «archivo» en español), puedes comprobar si el tipo de contenido del archivo es seguro para ver.
Para los archivos que contienen datos binarios, normalmente hay comandos disponibles que leen los archivos, interpretan su contenido y luego muestran texto. Por ejemplo, los
comandos lastb y last se pueden usar para ver los archivos /var/log/btmp y /var/log/wtmp respectivamente.
Por razones de seguridad, la mayoría de los archivos encontrados no son legibles por los usuarios normales, así que asegúrate de ejecutar los comandos que interactúan con estos
archivos teniendo los privilegios de root.
Aunque el kernel normalmente no tiene su propio archivo de registro, se puede configurar uno para ellos por lo general mediante la modificación de los
archivos /etc/syslog.conf o /etc/rsyslog.conf. Además, el comando dmesg puede utilizarse para ver el kernel ring buffer, que contendrá un gran número de mensajes generados por el
kernel.
En un sistema activo, o en uno que tiene muchos errores de kernel, es posible que se haya sobrepasado la capacidad de este búfer y podrían perderse algunos mensajes. El tamaño de
este búfer se establece en el momento que el kernel es compilado, por lo que no es sencillo cambiarlo.
Ejecutar el comando dmesg puede producir hasta 512 kilobytes de texto, así que se recomienda filtrar el comando con una barra vertical a otro comando como less o grep. Por ejemplo, si
estuvieras resolviendo problemas con tu dispositivo USB, entonces buscando el texto «USB» con el comando grep siendo sensible a mayúsculas y minúsculas, puede ser de ayuda: