Kod: Zaznacz cały
-1. Zanim zaczniesz czytać
0. Wstęp
1. Pytania wstępne
2. Opis problemu
3. Zbieranie materiałów
3.1. Problemy sprzętowe
3.2. Problemy softwarowe
3.3. Problemy z siecią
4. Wyslanie zapytania
5. Odnośniki hipertekstowe
W drodze do rozwiązania problemu, przed zadaniem pytania na forum, wypadałoby wykazać się inicjatywą i poszukać na własną rękę odpowiedzi zamiast zadawać powtarzające się miliony razy pytania. Wiele rozwiązań można przecież samemu wygrzebać w internecie za pomocą google, lub chociaż wyszukać czy nie było rozwiązania na tym forum. Przecież to nic trudnego, a pamiętajcie, że nikt za Was nie rozwiąże problemu. Jeżeli sami nie będziecie chcieli sobie pomóc, to nie liczcie na czyjąś pomoc.
Więc w kolejności:
A teraz zapraszam do lektury.
0. Wstęp
Problem. Pojawia się nagle, nieoczekiwanie. Zaskakuje nas, zwala z nóg i osłabia. Staramy się sami go usunąć, jednak nie zawsze jest to możliwe. Wtedy zgłaszamy się na forum, tworzymy nowy temat i... i dalej już jest tylko płacz. Informacje od części użytkowników są wyciągane jak na przesłuchaniu, inni zaś nie potrafią poprawnie sformułować swoich potrzeb. Niektórzy za to wklejają cała zawartość /var/log/, co utrudnia analizę problemu i opóźnia pomoc.
Tekst ten ma na celu zapoznanie userów z przejrzystym i klarownym formułowaniem pytań o zaistniałe problemy oraz przybliżenie "eliksirów prawdy", czyli programów, które wyciągną potrzebne informacje z naszego komputera.
1. Pytania wstępne
Przed przystąpieniem do pisania wątku należy się zastanowić czego dotyczy nasz problem. Czy jest to problem sprzętowy czy może oprogramowania, pracujemy na desktopie czy może też konfigurujemy serwer. Odpowiedź na to pytanie pomoże nam w wyborze odpowiedniego działu na forum, zaś innym (którzy np. przeglądają tylko wybrane działy) nie przysporzy bałaganu i nie zabierze zbędnego czasu.
Po wybraniu odpowiedniego działu następną czynnością jest...
2. Opis problemu
Przy opisywaniu swojego problemu nie używamy słów "coś", "gdzieś", "jakoś". Starajmy się pisać konkretnie "co zrobiliśmy", "gdzie wpisaliśmy", "jak próbowaliśmy rozwiązać problem". Pisanie tak ogólnie, jakbyśmy się wstydzili własnych prób rozwiązania problemu mija się z celem. Jeżeli było ok, da to innym informację, że nie tędy droga. Jeżeli czynności były błędne to we własnym interesie każdego leży, aby ktoś te błędy wytknął.
W przypadku gdy nie poczyniliśmy własnych kroków ku rozwiązaniu problemu, należy wrócić się przed punkt 0 tego tekstu i to poprawić :)
Pisanie "długo szukałem na google, ale nie znalazłem" nie jest dobrym pomysłem. Nie jesteśmy dziećmi i nikt w to nie uwierzy, a takie sformułowania trochę irytują (zapewne nie tylko Autora tego poradnika).
3. Zbieranie materiałów
Problem należy odpowiednio udokumentować. Dzięki temu ułatwimy innym odkrycie "w czym rzecz" i na pewno przyczynimy się do szybszego rozwiązania danego zagadnienia. Pamiętajmy, że jak wklejamy wynik jakiegoś polecenia, kawałek pliku konfiguracyjnego czy też logu to umieszczamy to bezwzględnie w znacznikach
Kod: Zaznacz cały
[code]
Katalog gdzie zapisywane są logi z działania systemu i niektórych daemonów to /var/log/ - pamiętajmy o tym szukając błędów.
3.1 Problemy sprzętowe
Po opisaniu swojego problemu, należy dać wynik polecenia
Kod: Zaznacz cały
# lspci
Przydatnym narzędziem przy diagnozowaniu problemów jest także
Kod: Zaznacz cały
# dmesg
Jeżeli rzecz dotyczy dysków twardych warto dołączyć (w zależności od problemu) plik /etc/fstab i/lub wynik polecenia
Kod: Zaznacz cały
# fdisk -l
Kod: Zaznacz cały
# hdparm -i -d -m -c /dev/<urzadzenie>
lub:
# hdparm -I /dev/<urzadzenie>
W przypadku kart graficznych pomocny może okazać się plik /var/log/Xorg.0.log względnie Xorg.0.log.old w którym wyszukujemy linijek oznaczonych (EE) oznaczających błąd (error), lub linijek z oznaczeniem (WW) oznaczających ostrzeżenie (warning). Choć (WW) nie są tak ważne jak (EE), czasami mogą pomóc.
Innym plikiem który określa używaną konfigurację X jest /etc/X11/xorg.conf.
Przy umieszczaniu (wklejaniu) starajmy się wklejać (umieszczać) tylko te sekcje które odpowiadają naszym problemom, co nie jest zadaniem zbyt trudnym ze względu na formę tego pliku.
Przy problemach z akceleracją do diagnozowania problemów można użyć
Kod: Zaznacz cały
$ glxinfo
$ glxgears
3.2 Problemy softwarowe
Najczęstsze problemy dotyczą kompilacji oraz konfiguracji i uruchamiania danego oprogramowania.
W przypadku kompilacji błędy mogą pojawić się już na poziomie konfiguracji przy wydawaniu polecenia ./configure. W takim wypadku skrypt konfigurujący często przekazuje nam wyczerpujące informacje o możliwości zażegnania problemu
Kod: Zaznacz cały
checking for libgnutls - version >= 1.0.0... no
*** The libgnutls-config script installed by LIBGNUTLS could not be found
*** If LIBGNUTLS was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the LIBGNUTLS_CONFIG environment variable to the
*** full path to libgnutls-config.
configure: WARNING:
***
*** libgnutls was not found. You may want to get it from
*** ftp://ftp.gnutls.org/pub/gnutls/
Częstym przypadkiem przy samej już kompilacji jest takie podawanie błędu:
Kod: Zaznacz cały
make[3]: *** [ioctld.o] Błąd 1
make[3]: Opuszczenie katalogu `/usr/src/ekg2/plugins/ioctld'
make[2]: *** [all-recursive] Błąd 1
make[2]: Opuszczenie katalogu `/usr/src/ekg2/plugins'
make[1]: *** [all-recursive] Błąd 1
make[1]: Opuszczenie katalogu `/usr/src/ekg2'
make: *** [all] Błąd 2
Kod: Zaznacz cały
/usr/include/asm/byteorder.h:28: error: syntax error before "___arch__swab64"
/usr/include/asm/byteorder.h:28: error: syntax error before "val"
/usr/include/asm/byteorder.h: In function `___arch__swab64':
/usr/include/asm/byteorder.h:32: error: syntax error before "__u64"
/usr/include/asm/byteorder.h: At top level:
/usr/include/asm/byteorder.h:34: error: syntax error before '.' token
/usr/include/asm/byteorder.h:42: error: syntax error before string constant
In file included from /usr/include/linux/byteorder/little_endian.h:12,
from /usr/include/asm/byteorder.h:57,
from /usr/include/linux/cdrom.h:14,
from ioctld.c:40:
/usr/include/linux/byteorder/swab.h:160: error: syntax error before "__fswab64"
/usr/include/linux/byteorder/swab.h:160: error: syntax error before "x"
/usr/include/linux/byteorder/swab.h: In function `__fswab64':
/usr/include/linux/byteorder/swab.h:167: error: `x' undeclared (first use in this function)
/usr/include/linux/byteorder/swab.h:167: error: (Each undeclared identifier is reported only once
/usr/include/linux/byteorder/swab.h:167: error: for each function it appears in.)
/usr/include/linux/byteorder/swab.h: At top level:
/usr/include/linux/byteorder/swab.h:170: error: syntax error before "__swab64p"
/usr/include/linux/byteorder/swab.h:170: error: syntax error before '*' token
/usr/include/linux/byteorder/swab.h: In function `__swab64p':
/usr/include/linux/byteorder/swab.h:172: error: `x' undeclared (first use in this function)
/usr/include/linux/byteorder/swab.h: At top level:
/usr/include/linux/byteorder/swab.h:174: error: syntax error before '*' token
/usr/include/linux/byteorder/swab.h: In function `__swab64s':
/usr/include/linux/byteorder/swab.h:176: error: `addr' undeclared (first use in this function)
In file included from /usr/include/asm/byteorder.h:57,
from /usr/include/linux/cdrom.h:14,
from ioctld.c:40:
/usr/include/linux/byteorder/little_endian.h: At top level:
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before "__cpu_to_le64p"
/usr/include/linux/byteorder/little_endian.h:43: error: syntax error before '*' token
/usr/include/linux/byteorder/little_endian.h: In function `__cpu_to_le64p':
/usr/include/linux/byteorder/little_endian.h:45: error: `__le64' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h:45: error: `p' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h: At top level:
/usr/include/linux/byteorder/little_endian.h:47: error: syntax error before "__le64_to_cpup"
/usr/include/linux/byteorder/little_endian.h:47: error: syntax error before '*' token
/usr/include/linux/byteorder/little_endian.h: In function `__le64_to_cpup':
/usr/include/linux/byteorder/little_endian.h:49: error: `__u64' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h:49: error: `p' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h: At top level:
/usr/include/linux/byteorder/little_endian.h:67: error: syntax error before "__cpu_to_be64p"
/usr/include/linux/byteorder/little_endian.h:67: error: syntax error before '*' token
/usr/include/linux/byteorder/little_endian.h: In function `__cpu_to_be64p':
/usr/include/linux/byteorder/little_endian.h:69: error: `__be64' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h:69: error: syntax error before "__swab64p"
/usr/include/linux/byteorder/little_endian.h: At top level:
/usr/include/linux/byteorder/little_endian.h:71: error: syntax error before "__be64_to_cpup"
/usr/include/linux/byteorder/little_endian.h:71: error: syntax error before '*' token
/usr/include/linux/byteorder/little_endian.h: In function `__be64_to_cpup':
/usr/include/linux/byteorder/little_endian.h:73: error: `__u64' undeclared (first use in this function)
/usr/include/linux/byteorder/little_endian.h:73: error: syntax error before ')' token
make[3]: *** [ioctld.o] Błąd 1
make[3]: Opuszczenie katalogu `/usr/src/ekg2/plugins/ioctld'
make[2]: *** [all-recursive] Błąd 1
make[2]: Opuszczenie katalogu `/usr/src/ekg2/plugins'
make[1]: *** [all-recursive] Błąd 1
make[1]: Opuszczenie katalogu `/usr/src/ekg2'
make: *** [all] Błąd 2
Warto dołączyć też wersje kompilatora użytego do kompilacji:
Kod: Zaznacz cały
$ gcc -v
$ gcc --version
Dzięki temu możemy się dowiedzieć o brakujących bibliotekach, które to są przyczyną częstego niedziałania programów (szczególnie tych z paczki, te kompilowane potrafią się zastroszczyć o siebie już na etapie kompilacji).
W takim wypadku do wyszukiwania potrzebnych bibliotek używa się narzędzia:
Kod: Zaznacz cały
# ldd <nazwa_pliku>
W przypadku wykrycia jakiegoś brakującego pliku, np.
Kod: Zaznacz cały
libhal.so.1 => not found
Przy problemach z konfiguracją, gdy plik konfiguracyjny nie jest zbyt długi, wklejamy go w całości, opisując co chcemy osiągnać. Jeżeli plik jest długi, starajmy się wyciąć tylko te najistotniejsze linijki. Z bezwzględną stanowczością pozbywamy się zbędnych komentarzy. Pomocne może być narzędzie grep. Jeżeli znakiem komentarza jest #:
Kod: Zaznacz cały
grep -ve "^#" <nazwa_pliku>
3.3 Problemy z siecią
Przy problemach z siecią najważniejsze jest podanie aktualnej konfiguracji twojego komputera:
Kod: Zaznacz cały
# ifconfig
# route
# cat /etc/resolv.conf
Kod: Zaznacz cały
# cat /etc/rc.d/rc.inet1.conf
Kod: Zaznacz cały
# iwconfig
Kod: Zaznacz cały
ping
4. Wysłanie zapytania
Zanim wyślemy nowego posta wypadałoby sprawdzić czy nigdzie nie ma literówki, błędów (szczególnie ortokrafidżnyh), czy zamieściliśmy wyczerpujący opis problemu i - najważniejsze - czy jest on zrozumiały. Nikt na forum nie jest wróżka (choć kilka osobników ma predyspozycje, pzdr dla nich :P) i nie ma obowiązku domyślać się o co Autorowi posta chodzi lub co ma na myśli.
Kiedy jednak będziemy pewni co do poprawności zadanego pytania, możemy śmiało kliknąć "Wyślij"
5. Odnośniki hipertekstowe
http://rtfm.killfile.pl
http://ag.bocznica.org
http://www.google.pl
http://packages.slackware.it
Autor: Radek_R
Przy udziale: Dawidmo, M4jkel, Sayetan