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 67% complete.
Outdated translations are marked like this.
Other languages:
English • ‎español • ‎italiano • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

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

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

도움을 받을 곳

젠투는 풍부한 정보를 가지고 있는 몇가지 위키 문서를 보유하고 있습니다. 일부 글이 오래되어 한물간 내용이 있음을 참고하셔야겠지만, 젠투를 사용할 때 위키 글을 쉽게 읽어내려가다보면 항상 어려운 단계에 부딪힙니다.

#gentoo (webchat)는 일반 문제를 다루는 추천 대화방입니다. 답변을 가장 빨리 얻을 수 있는 곳일지도 모릅니다.

IRC 대화방은 접속한 상태로 있어야 하기 때문에, 일부 사용자는 포럼en 또는 브라우저를 닫아도 계속 살펴볼 수 있는 메일링 리스트en에 메시지를 남겨두는게 좋습니다.

모든 나머지 경우에 실패했고 젠투를 깨먹는 요소가 있는 것 같다면, 젠투 버그 추적 시스템은 어떤 버그를 이미 보고했는지 살펴보는 좋은 자료가 되거나, 필요한 경우 여기에 새로운 버그 보고서를 작성합니다. 이 방식은 젠투 개발자와 연락이 닿는 가장 효율적인 방법이며 문제 상황을 진전시키고 해결하는 과정에 주어진 실마리를 활용할 수 있습니다.

프로그램

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

꾸러미 관리

꾸러미 설명
app-portage/gentoolkit 젠투를 다루는 도구 모음을 제공합니다. 쓸모있는 `equery`, `eclean`, `euse`, `eshowkw`가 있으며 사용법은 맨 페이지를 살펴보십시오.
app-portage/eix 꾸러미 정보를 포티지에 요청하는 eix 도구입니다.
app-portage/pfl 주어진 파일을 제공하는 꾸러미가 무엇인지 확인 요청하는 도구 e-file을 제공합니다. 온라인에서 찾아보는 방식이므로 설치하지 않은 꾸러미에 대해서도 동작합니다.
app-portage/genlop 어떤 꾸러미를 설치, 업데이트 했을 때 이머지 로그를 해석하고 컴파일에 시간이 얼마나 걸렸는지 확인하는 도구인 genlop를 제공합니다.
app-portage/elogv 이머지 로그를 확인하는 ncurses 기반 인터페이스를 갖춘 elogv를 제공합니다.

하드웨어

꾸러미 설명
sys-apps/pciutils PCI 장치 정보를 수집하는 lspci 도구를 제공합니다.
sys-apps/usbutils USB 장치 정보를 수집하는 lsusb 도구를 제공합니다.

감시

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

기타

꾸러미 설명
app-text/wgetpaste 업로드할 텍스트를 pastebin에 바로 넣어주는 wgetpaste 도구를 제공합니다.
net-irc/weechat 단순 텍스트 기반 IRC 클라이언트 weechat을 제공합니다.

첫 단계

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

문제 인식

이 부분은 꽤 쉬워보이겠지만, 이 부분이 없다면 문제 발견 과정에서 다음으로 넘어갈 수 없습니다.

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

  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)

간편하게 줄인 표기 옵션 -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.

Collecting additional information

When seeking help, more times than never 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 IRC chat rooms, such as the Gentoo support channel on Freenode. That's where wgetpaste comes in handy - it allows users to post short links that contain long output.

app-text/wgetpaste를 설치했는지 확인하십시오:

root #emerge --ask wgetpaste

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

user $wgetpaste /etc/conf.d/net

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

root #lspci -nnk | wgetpaste

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

root #emerge -pv 2>&1 | wgetpaste

이 명령은 누군가에게 도움을 받기 위해 쉽게 공유할 수 있는 pastebin 사이트 페이지 링크를 반환합니다.

붙여넣을때 고려해야 할 사항은:

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

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