Troubleshooting/ko

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

이 페이지의 목적은 사용자에게, 약간의 새로운 기술과 도구로 자신 스스로에게 젠투 설정 과정에서 문제를 찾고 해결할 수 있도록 하는 실마리 제공에 있습니다. 게다가 더 복잡한 문제에 있어서도, 이 게시글은 사용자로 하여금 문제를 해결하는 과정에서 자신 스스로에게 도움을 줄 정보를 수집하는 기법을 제공하려 내용을 살펴봅니다.

이 글에서는 젠투 핸드북을 이미 읽었고 젠투 사용법의 기본을 이미 알고 있다고 가정합니다.

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

다음은 매우 권장하는 도구 목록입니다:

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

꾸러미 관리

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.

하드웨어

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

감시

꾸러미 설명
sys-process/htop 프로세스 감시 도구 htop을 제공합니다. top과 비슷하지만 좀 더 고급진놈입니다.
sys-process/iotop 프로세스의 입출력 활동을 감시하는 top 방식의 iotop도구를 제공합니다.
net-analyzer/net-top 프로토콜, 포트, 프로세스의 네트워크 트래픽을 점검하는 top 방식의 net-top 도구를 제공합니다.

| 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. |-

|}

문제 인식

문제 상황을 해결 생황으로 이끌어내려면 우선 문제를 잘 이해해야합니다. 해결책을 끌어올리는게 불가능한 일이 아닌 상황에서 문제를 제대로 이해하지 못하면 어려워집니다. 분명하게 말해서, 문제를 자세하게 설명하면, 문제에 대해 정확하게 맞는 해결책을 이끌어낼 수도 있습니다.

몇가지를 참고해 두십시오:

  1. 하드웨어의 문제인가? 프로그램의 문제인가?
  2. 이 문제가 일어나기 전에 어떤 동작을 취해서 바뀐 것이 있는가?
  3. 문제에 대한 추가 정보를 모을 수 있는가?

자세한 내용, 기록, 다른 사람이 겪은 적이 있는지 여부 등의 정보를 제공한다면 문제를 살펴보기 편하게 해줍니다.

하드웨어 문제

드라이버

하드웨어의 드라이버 이슈는 IRC에서 종종 회자되는 일반적인 문제 중 하나입니다.

무엇보다도 먼저, 어떤 하드웨어가 문제를 일으키는지 확인하십시오. lspcilsusb 명령은 이 용도에 따른 멋진 도구입니다. 목적을 시연하기 위해 문제있는 이더넷 카드 장치를 찾아보겠습니다.

적당한 드라이버 찾기

우선 lspci를 살펴보고 장치 정보를 찾아보겠습니다:

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)

간편하게 줄인 표기 옵션 -n을 사용할 수 있습니다(인터넷에서 검색하는 것보다 쉽습니다).

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

모델 이름(0200)과 제조사/모델 (11ab:436b) 은 리눅스에서 사용하는 올바른 드라이버를 찾을 수 있는 WikiDevi 또는 Debian HCL 사이트 같은 곳에서 장치를 찾아볼 때 사용할 수 있습니다.

드라이버 불러오기 유무 확인

드라이버를 가져오는 일은 반절의 사투도 채 안됩니다. 대부분 드라이버와 얽히는 문제는 제대로 불러와서 동작하는지 확인하는 과정입니다.

lspci에게 다시 기대보도록 하죠:

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

여기서 주목하실 점은, 드라이버가 사용중임을 나타내는 내용입니다. 만약 이 내용이 안나타난다면 이 드라이버를 동작하게 하는 드라이버를 띄우지 않았다는 이야기가 됩니다. 드라이버를 내장 빌드 형식이 아닌 모듈 형식으로 빌드했다면 modprobe <modulename> 명령으로 올바른 모듈을 불러와보십시오. 드라이버를 내장하여 빌드했다면 모듈로 만들어보십시오. 왜냐면 문제를 확인하는 동안 재부팅 횟수를 줄이고, 대신 여러번 modprobe로 모듈을 불러오고 modprobe -r 명령으로 불러온 모듈을 내릴 수 있기 때문입니다.

드라이버 문제 해결

드라이버를 모듈로 컴파일한 후 출력 내용을 찍어보시면 언제 모듈을 불렀는지 나타납니다. 우선 드라이버에 따라 모든 모듈을 제거했는지 확인하십시오(lsmod 확인).

다음 명령은 모듈을 제거한 후 dmesg 출력(예를 들어 r8169)과 모듈을 다시 추가했을 경우 출력을 비교하여 하드웨어를 추가했는지 나타내는 메시지를 효율적으로 보여드립니다(+로 시작하는 줄).

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

대부분의 일반적인 문제는 펌웨어가 빠져있는 상태입니다. 메시지에서 펌웨어가 빠져있다고 관리자에게 나타나면 sys-kernel/linux-firmware 또는 포티지에서 특정 펌웨어 꾸러미를 발견하고 설치하십시오. 펌웨어를 설치한 후에는 커널 모듈을 내렸다가 다시 불러와서 문제를 해결했는지 확인하십시오.

프로그램 문제

포티지 문제

의존성 그래프 슬롯 중복

때로는 꾸러미를 이머지할 때 이런 메시지가 뜨는 경우가 있습니다:

코드 의존 그래프 오류
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

보통 의존성 그래프에서 요청한 버전이 여러개가 있다는 의미입니다. 다행히도 대부분의 경우에는 이게 전부가 아니라면 요청한 버전 중 가장 최신 버전으로 직접 업그레이드 하여 해결할 수 있습니다. 따라서 다음 메시지를 받았다면:

코드 의존성 그래프 오류 예제
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)

최근 버전은 20120520 입니다. 따라서:

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

주로, 원샷(--oneshot 또는 -1) 옵션을 부여하여 모든 중복 문제를 간편하게 한번에 해결하는데 중복 꾸러미가 다른 꾸러미에 의존할 수도 있기 때문입니다.

또 다른 블록 예제가 있습니다:

코드 블록 중복 예제
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

poppler 버전을 바꾸는데 문제가 없어야합니다. luatex와 cups-filter는 지정 버전의 poppler가 필요하지 않지만 어떤 버전을 쓰든지 간에 다시 빌드해야합니다:

root #emerge --ask --oneshot =app-text/poppler-0.24.3 dev-tex/luatex net-print/cups-filters

Here is another example that could have resulted in a blockage:

도움을 요청할 때, 단 한번도 어떤 내용을 요구받지 않는다기보다는 어떤 추가 정보든 명령 출력 내용 같은 걸 여러번 요구받습니다. 이 문제는 수십줄 내지는 백여줄의 텍스트가 있습니다. 프리노드의 젠투 지원 채널 같은 IRC 대화방에 적당히 붙여넣기에는 너무 많습니다. 때문에 이 문제를 간편하게 해주는 wgetpaste를 도입했습니다. 사용자로 하여금 긴 출력 내용을 간단한 링크로 어딘가에 게시할 수 있게 해줍니다.

코드 Example of an update conflict
sys-power/cpupower:0
 
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
 
Total: 0 packages, Size of downloads: 0 KiB
 
WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:
 
sys-power/cpupower:0
 
  (sys-power/cpupower-4.9.0-r1:0/0::gentoo, ebuild scheduled for merge) conflicts with
    <sys-power/cpupower-4.7 required by (mate-base/mate-applets-1.12.1-r4:0/0::gentoo, installed)
    ^                   ^^^
 
Nothing to merge; quitting.

Portage warns about an update that can not be performed, however, there is no issue because this update is not required by a package. More precisely, the update must be skipped because mate-base/mate-applets-1.12.1-r4 requires a version of sys-power/cpupower package lower than 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.

Collecting additional information

When seeking help, often additional information will be asked, such as the output of a command. Some of these produce dozens or hundreds of lines of text - too much to be suitable for pasting into chat rooms, such as the Gentoo IRC support channel.

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

예를 들어 /etc/conf.d/net의 내용을 보여주려면 wgetpaste를 활용하여 다음과 같이 단순화할 수 있습니다:

user $wgetpaste /etc/conf.d/net

또는 lspci 명령의 자세한 출력을 누군가가 필요하다고 한다면:

root #lspci -nnk | wgetpaste

가끔은 표준 오류를 표준 출력으로 나타나게끔 하여 오류 메시지 마찬가지로 붙여넣을 수 있도록 해야 합니다. 다음과 같이 하시면 처리할 수 있습니다:

root #emerge -pv 2>&1 | wgetpaste

하드웨어 문제 또는 커널 문제일 경우:

user $wgetpaste /usr/src/linux/.config
user $wgetpaste /usr/src/linux/.config
  • 포티지 문제일 경우:
root #emerge --verbose --info | wgetpaste
root #emerge --verbose --info | wgetpaste
  • 꾸러미 설치 문제일 경우:
root #wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
root #wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
  • Xorg 문제일 경우:
user $wgetpaste /var/log/Xorg.0.log
user $wgetpaste /var/log/Xorg.0.log
  • 시스템에 설치한 모든 꾸러미를 제공해야 할 경우:
root #eix-update && eix-installed all
root #eix-update && eix-installed all

함께 다듬어 놓기

아래 내용은 각각의 명령을 실행하고 단일 wgetpaste 명령으로 출력을 처리하여 사용자 또는 문제 상황에서 구제하려는 개발자에게 제공해야 할 URL을 뽑아낼 때 사용할 수 있습니다:

root #
execv(){ for cmd in "$@"; do echo -e "\n=== $cmd ===\n"; $cmd; done; }
(execv "cat /etc/*-release" "uname -a" "lspci -nnk" "lsusb" "eselect profile list"\
 "emerge --info" "cat /usr/src/*$(uname -r)/.config" "cat /var/log/Xorg.0.log" "dmesg"\
 "eix-update" "eix-installed all")\
 | wgetpaste

젠투 사용자 메일링 리스트에서는 pastebin 서비스를 활용하지 마십시오

여러곳에서 메일링 리스트 메시지를 보관하고 연 단위로 참조하겠지만서도 대부분 pastebin 서비스는 붙여넣기 내용이 오래된 경우 주기적으로 정리합니다(pastebin 서비스가 상당히 적당하지 않으며, 언제든 서버를 내린다고 하진 않았습니다). 적절한 출력 내용이 짧거나 앞뒤로 자를 수 있다면, 전자메일 본문에 복사하여 붙여넣으십시오. 긴 출력 내용은 텍스트 파일로 넘길 수 있으며 일반 첨부 파일로 추가할 수 있습니다.

해결책 정리

문제 설명문을 알기 쉽게 작성하고, 동작에 대한 모든 기록, 모든 종류의 디버깅 데이터(세부 문제, 하드웨어 / 소프트웨어 정보, 로그, 백트레이스 등) 를 포함한 쓸만한 데이터 모음을 바람직하게 모아두면 해결책을 찾아볼 수 있습니다:

해결책을 찾으려면 다음 과정을 반복합니다:

  • 어디에 문제가 있는지 고민하고, 가능한 원인에 대해 생각하기.
  • 문제를 살펴볼 명백한 구석이 없다면, 관련 영역을 통해 이미 알고 있는 부분을 좀 더 살펴보거나 이 문제에 대해 전문가인 사용자에게 질문하기.
  • 가끔 진행하는데 몇가지를 가정해볼 필요가 있습니다. 가설을 세웠다면 시험에 적용해보십시오. 잘못된 가설 성립은 사용자 및 개발자가 다른 원인을 가려내지 못하게 합니다.
  • 문제 범위내에서 추가 디버깅 정보를 가져오거나 시험을 진행하십시오.

종종 가능한 원인이 여러가지일 수도 있습니다. (실제 원인인지 아닌지)문제를 시험하는게 중요하므로 개별적으로 시험해보십시오. 나누어 해결하기(분할 및 정복)로 보통 알려져 있습니다.

부팅하고 나서 브라우저가 가끔 희멀건 페이지를 보여준다 같은 문제가 나타났다 치고 구체적인 많은 상황에 대해 이미 파악했다면, 가능한 원인 몇가지는 다음과 같습니다:

  • 시스템을 다시 부팅할 때 브라우저를 제대로 닫지 않았습니까?
프로세스를 강제로 끝내보시고 여러번 연결해보신 후 다시 부팅했을 경우 페이지가 희멀겋게 뜨는지 각각의 경우 마다 확인하십시오. 이게 원인이라면 실제 원인인지 다른 원인인지 확인하십시오.
  • 일부 버전의 브라우저가 깨져있는게 아닙니까?
이전에 올라온 버전 또는 새 버전을 사용하든지, 그래도 깨졌다면 다시 부팅하고 확인해보십시오.

등등...

추가 정보를 통해 더 확실한 원인을 생각해볼 수 있습니다:

  • 플러그인 Y를 불러오는 어떤 고정 탭 X가 시스템에 문제를 일으키는가?
탭 고정을 해제하여 실행시 더이상 열지 못하게 하거나 플러그인을 비활성화하십시오, 여전히 문제가 지속되는지 확인하십시오.
  • 그래픽 문제 마찬가지 보고됐는데, 아마도 비디오 카드 드라이버가 문제를 일으키는 것 같다?
드라이버를 다른 버전으로 바꿔보거나, 다른 드라이버가 있다면 그 드라이버를 시도해보십시오.

가능한 갖가지 원인을 찾았다면, 실제 문제의 원인을 좀 더 확실하게 찾아보실 수 있을겁니다.

그럼에도 끄끝내 문제를 못찾았다면, 문서 상단의 도움을 받을 곳 자료에서 도움을 구할 사람이 있는 여러 곳을 찾아볼 수 있습니다. 문제를 상세하게 설명하고, 마찬가지로 무얼 시도했는지 확실하게 언급하여 설명하는 이들이 납득하기 쉽게 하면, 여러분을 구제하는데 도움이 됩니다.

See also