Resolución de problemas

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Troubleshooting and the translation is 39% complete.
Outdated translations are marked like this.

El objetivo de esta página es brindar a los usuarios, en particular a los nuevos, un conjunto de técnicas y herramientas para permitirles diagnosticar y resolver problemas en sus instalaciones de Gentoo con sus propios medios. Adicionalmente, para aquellos problemas que son más complicados, este artículo busca proveer a los usuarios de la habilidad de recolectar información que los ayudará, tanto a ellos como a quienes les den soporte, a resolver sus problemas con mayor facilidad.

Este artículo asume que Gentoo Handbook ha sido leído y que se posee una comprensión básica del uso de Gentoo.

Consejo
If a solution cannot be found after troubleshooting, see the support article about asking for help.

Esta es una lista de herramientas que son "altamente" recomendadas:

Consejo
wgetpaste is a handy tool to share snippets, files, command output etc. when discussing troubleshooting issues online.

Gestión de paquetes

Package Description
gentoolkit A collection of tools for interacting with Gentoo, includes the valuable equery, eclean, euse, etc.
eix A tool for querying portage for packages.
Portage File List Provides e-file, a tool for querying what package contains a given file, it also works for packages that aren't installed since it uses an online lookup.
genlop A tool for parsing emerge logs, handy to figure out when certain packages were installed, updated and to see how long they took to compile.
elogv An ncurses based interface for browsing emerge logs.

Hardware

Package Description
pciutils A tool for gathering information about PCI devices.
usbutils A tool for gathering information about USB devices.

Monitoreo

Paquete Descripción
sys-process/htop provee htop, una herramienta para monitorear procesos. Como top, pero más avanzado.
sys-process/iotop provee iotop, una herramienta al estilo de top para monitorear la actividad de IO (entrada/salida) de los diferentes procesos.
net-analyzer/nettop provee nettop, una herramienta al estilo de top para examinar el tráfico de red por protocolo, puerto y proceso.

| htop | A tool for monitoring processes, like top, but more advanced. |-

| iotop | A top-like tool for monitoring IO activity by process. |-

| net-analyzer/nettop | A top-like tool for examining network traffic by protocol, port, and process. |-

|}

Identificando el problema

En función de solucionar un problema, en primer lugar es necesario tener una buena comprensión del mismo. Si el problema no es claro, entonces será difícil, sino imposible, obtener una solución. Una descripción detallada y acertada del mismo es más apta para obtener la mejor solución posible.

Toma nota de algunas cosas:

  1. ¿Es un problema relacionado con el hardware o con el software?
  2. ¿Se ha cambiado o realizado algo recientemente, que pueda ser la causa de este problema?
  3. ¿Se puede recolectar información adicional sobre el problema?

Guardar cualquier clase de detalle, información yexperiencia de otras personas puede ser valioso y otorgar buenos puntos de vista.

Problemas de hardware

Controladores

Problemas con los controladores de hardware es uno de los problemas más comunes que son reportados en IRC.

En primer lugar, hay que identificar qué pieza de hardware es la que está ocasionando problemas. lspci y lsusb son valiosas herramientas para este propósito. Para ejemplificar, vamos a utilizar la tarjeta Ethernet como el dispositivo con problemas.

Determinando el controlador correcto

Primero utilizamos lspci para buscar la información del dispositivo:

root #lspci
 03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16)
root #lspci
 03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16)

También es posible usar la opción -n para obtener una notación abreviada (la que puede resultar más fácil para buscar en Internet):

root #lspci -n
 03:00.0 0200: 11ab:436b (rev 16)

El nombre de modelo (0200) y el fabricante fabricante/modelo (11ab:436b) pueden ser utilizados para buscar el dispositivo en lugares como WikiDevi o Debian HCL, a fin de buscar el controlador correcta a utilizar en Linux.

Verificando que el controlador está cargado

Obtener el controlador es menos de la mitad de la batalla. Debemos estar seguros de que el controlador está cargado y operando correctamente.

Utilizando nuevamente a nuestro amigo lspci, ejecutar:

root #lspci -k
 03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16)
 	Subsystem: Acer Incorporated [ALI] Device 014e
 	Kernel driver in use: sky2

Notar que acá tenemos un indicador de que el controlador está en uso ("Kernel driver in use: sky2"). En caso de no ser así, es porque ningún controlador se ha hecho cargo de este hardware. Asumiendo que el controlador fue compilado como módulo y no dentro del kernel, intenta ejecutar modprobe <modulename> para cargar el módulo correcto. Si el driver fue compilado dentro del núcleo, considera compilarlo como módulo, ya que los módulos pueden cargarse con modprobe o descargarse con modprobe -r, lo que ahorra reiniciar el sistema mientras estamos depurando el problema.

Resolviendo problemas con el driver

Compilar el controlador como módulo y luego capturar la información generada cuando el módulo es cargado. Asegurarse primero de remover todos los módulos que depende del controlador (ver lsmod).

El siguiente comando compara la salida de dmesg después de remover el módulo (en este ejemplo, r8169) con la salida posterior a cargar el módulo nuevamente, mostrando los mensajes que se agregaron (las líneas que comienzan con +).

root #diff -u <(modprobe -r r8169; dmesg) <(sleep 1; modprobe r8169; dmesg) | grep ^+

El problema más común es algún firmware faltante. Si se muestra un mensaje que informa al administrador acerca de algún firmware faltante, instala sys-kernel/linux-firmware o el paquete con el firmware específico desde Portage. Luego de la instalación del firmware, remueve el módulo y vuelva a cargarlo nuevamente para ver si esto soluciona el problema.

Problemas de software

Problemas de Portage

Conflictos en el gráfico de dependencias

Ocasionalmente, mensajes como este se obtienen al intentar realizar emerge de un paquete:

CÓDIGO Error en el gráfico de dependencias
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

Generalmente, esto significa que los paquetes listados tienen múltiples versiones requeridas en el gráfico de dependencias. Afortunadamente la mayoría, sino todos los casos, permiten ser resueltos actualizando manualmente a la mayor versión requerida. Entonces, asumiendo que el siguiente mensaje fue recibido:

CÓDIGO Ejemplo de error en gráfico de dependencias
app-emulation/emul-linux-x86-xlibs:0 
(app-emulation/emul-linux-x86-xlibs-20120127::gentoo, installed) pulled in by 
~app-emulation/emul-linux-x86-xlibs-20120127 required by (app-emulation/emul-linux-x86-medialibs-20120127::gentoo, installed) 
(and 2 more with the same problem) 
 
(app-emulation/emul-linux-x86-xlibs-20120520::gentoo, ebuild scheduled for merge) pulled in by 
>=app-emulation/emul-linux-x86-xlibs-20120520 required by (net-im/skype-2.2.0.35-r99::gentoo, ebuild scheduled for merge) 
~app-emulation/emul-linux-x86-xlibs-20120520 required by (app-emulation/emul-linux-x86-medialibs-20120520::gentoo, ebuild scheduled for merge)

La versión deseada más reciente es 20120520, entonces:

root #emerge --ask --oneshot =app-emulation/emul-linux-x86-xlibs-20120520

A menudo, es ventajoso realizar one-shot (--oneshot o -1) de todos los conflictos a la vez, ya que a veces dependen unos de otros (ver también World set).

Acá hay otro bloque de ejemplo:

CÓDIGO Ejemplo de un conflicto de bloque
app-text/poppler:0
 
 (app-text/poppler-0.24.5::gentoo, installed) pulled in by
   app-text/poppler:0/44=[xpdf-headers(+)] required by (dev-tex/luatex-0.76.0::gentoo, installed)
   app-text/poppler:0/44=[cxx,jpeg,lcms,tiff,xpdf-headers(+)] required by (net-print/cups-filters-1.0.43::gentoo, installed)
 
 (app-text/poppler-0.24.3::gentoo, ebuild scheduled for merge) pulled in by
   >=app-text/poppler-0.12.3-r3:0/43= required by (app-text/texlive-core-2013-r1::gentoo, installed)
   poppler:0/43

No debería haber ningún problema cambiando las versiones de poppler. Observe que app-text/texlive-core no requiere una versión específica de poppler, pero se necesita recompilar con cualquier versión que se utilice:

root #emerge --ask --oneshot =app-text/poppler-0.24.5 app-text/texlive-core

A continuación se muestra otro ejemplo que podría resultar en bloqueo:

root #emerge --ask --verbose --update --newuse --deep @world

{{CodeBox|title=Example of an update conflict|1= sys-power/cpupower:0

Portage advierte sobre una actualización que no se puede realizar, sin embargo, no hay ningún problema ya que esta actualización no es requerida por un paquete. Más exactamente, al actualización se debe saltar ya que mate-base/mate-applets-1.12.1-r4 requiere una versión del paquete sys-power/cpupower previa a la 4.7.

System limitations prevent a proper build

When compiling with n jobs parallel the requirement of RAM grows approximately by a factor n. Unfortunately we can not predict the exact amount of RAM needed nor we can predict how much RAM will be consumed by other programs.

Debug a binary

Trouble shoot a compiled binary by Debugging with powerful tools.

Recolectando información adicional

Cuando busque ayuda, la mayoría de las ocasiones se solicitará más información como la salida de una orden. Algunas de ellas producen docenas o cientos de líneas de texto, demasiada información para publicar en las salas de chat IRC, como el canal de soporte de Gentoo en Freenode. Aquí es donde wgetpaste se vuelve útil ya que permite a los usuarios publicar enlaces cortos que contienen una salida voluminosa.

Wgetpaste allows users to post short links to a website that contains long output.

Por ejemplo, para mostrar el contenido de app-text/wgetpaste, usar wgetpaste es tan simple como:

user $wgetpaste /etc/conf.d/net

O digamos que alguien necesita la salida detallada de lspci:

root #wgetpaste -c 'lspci -nnk'

A veces es necesario redirigir stderr a stdout para que también los mensajes de error sean copiados. Esto puede realizarse así:

root #wgetpaste -c 'emerge -pv <package>'
  • En caso de problemas de hardware o del kernel:
user $wgetpaste /usr/src/linux/.config
user $wgetpaste /usr/src/linux/.config
  • En caso de problemas con portage:
root #emerge --verbose --info | wgetpaste
root #emerge --verbose --info | wgetpaste
  • En caso de fallos en la instalación de paquetes:
root #wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
root #wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
  • En caso de problemas con Xorg:
user $wgetpaste /var/log/Xorg.0.log
user $wgetpaste /var/log/Xorg.0.log
  • En los casos en que es necesario brindar todos los paquetes instalados en el sistema:
root #eix-update && eix-installed all
root #eix-update && eix-installed all

Juntando cosas

Debajo tenemos una función shell que puede ser utilizada para ejecutar varios comandos y procesar su salida con un solo wgetpaste, de forma que solo sea necesario proveer una URL a quien nos está ayudando:

root #
wgetpaste -i -c "lspci -nnk" -c "lsusb" -c "cat /usr/src/*$(uname -r)/.config"\
 -c "cat /var/log/Xorg.0.log" -c "dmesg" -c "eix-update" -c "eix-installed all"

Por favor no utilice servicios de pastebin en la lista de correo gentoo-user

La mayoría de los servicios de pastebin expiran viejas urls de forma periódica (por no mencionar que los servicios de pastebin son apenas rentables y cierran todo el tiempo), mientras que los mensajes de las listas de correo son archivadas en diferentes lugares y son referenciados por años. Si la salida relevante es corta, o puede ser recortada, entonces copia y pégala en el cuerpo del email - salidas más largas pueden ir directamente adjuntadas en archivos de texto plano.

Formando una solución

Con una buena descripción del problema, un historial completo de acciones y toda clase de información (detalles del problema, información de software y hardware, logs, backtraces y más), tenemos disponible un buen conjunto de información para buscar una solución.

Generalemente, hay que repetir los siguientes pasos para llegar a la solución:

  • Obtener una idea de cuál puede ser el problema y pensar en las posibles causas.
  • Si no tenemos lugares obvios para investigar, buscar en las áreas realcionadas o preguntar a algún experto sobre eso.
  • A veces es necesario realizar suposiciones para continuar. Cuando realizamos suposiciones, hay que ponerlas a prueba: suposiciones falsas no deben hacer que usuarios y desarrolladores dejen de ver otras causas.
  • Obtener información adicional de depurado dentro del marco del problema, o realizar pruebas.

A veces esto nos guía a múltiples posibles causas. Es importante probarlas individualmente para verificar si efectivamente son las causas del problema: esto es conocido como "divide y vencerás".

Digamos que tenemos un problema como "mi navegador a veces muestra páginas en blanco al iniciar" y que conocemos un montón de detalles sobre eso, entonces tenemos varias causas posibles:

  • ¿Es porque el navegador fue cerrado de forma incorrecta cuando el sistema fue reiniciado?
Podemos verificar esto matando el proceso y reniciándolo varias veces, cada vez chequeando si las páginas vuelven a estar en blanco al iniciar. Si esta es una causa, ¿es la causa actual o hay otras?
  • ¿Es porque una versión específica del navegador está rota?
Probar versiones nuevas o viejas por algunas días (o reinicios) y ver si tienen el mismo comportamiento.

Y así sucesivamente...

Con la información adicional, podemos pensar en causas más específicas:

  • ¿Hay alguna pestaña determinada X que carga el complemento Y que esté rompiendo el sistema?
Desmarca la pestaña para que no se siga abriendo al inicio o deshabilita el complemento, y observar si esto evita el problema.
  • También se reportaron problemas gráficos, ¿puede quizás ser causado por problemas con los controladores de video?
Prueba una nueva versión de los contoladores, o controladores alternativas si están disponibles.

A medida que cada causa posible es investigada, la verdadera causa del problema estará cada vez más cerca.

Al final, si la causa sigue sin ser encontrada, los recursos listados en Dónde conseguir ayuda al comienzo de este artículo llevan a una multitud de lugares donde hay gente esperando para ayudar; hágalos felices con una escripción cuidadosa del problema y mencionando lo que ya has intentado para resolverlo, eso los ayudará a ayudarle.

Vea también