====== gDebug ======
{{.:tip.png}} **gDebug** - skript, který za vás vyhledá informace při problémech se zvukem, flashem a instalačními programy - [[Synaptic]], [[Centrum softwaru pro Ubuntu]], [[Aktualizace programů|Automatická aktualizace]] apod.
===== Postup =====
==== Stručně ====
Skript se spouští přes //gksudo//, a výsledný soubor **výsledky.txt** se zkopíruje do fóra.
==== Přesnější popis ====
Níže uvedený skript zkopírujte, uložte a spusťte podle návodu na [[Řešení problémů:Jak dodat informace do fóra]].
Vyberte problémovou oblast dle své situace.
{{ .:gDebug-vyber_oblast.png }}
Nechte skript pracovat.
{{ .:gDebug-progress.png }}
Nakonec skript vytvoří soubor **výsledky.txt** s uloženými výpisy. Buď si ho otevřete sami, nebo vám gDebug nabídne, že ho otevře za vás.
{{ .:gDebug-otevrit.png }}
===== Text skriptu ke zkopírování =====
#! /bin/bash
# angličtina je lepší
# protože výstupy jsou pak dohledatelnější
LANG=en_US.UTF-8
# co je možné debugovat
# pokud se něco doplní sem, je třeba pak doplnit i příkazy do case níže
# ZM je seznam potřebný do zenity
moznosti=( zvuk flash instalace )
for i in $(seq 0 $((${#moznosti[@]} - 1))); do
ZM="$ZM FALSE ${moznosti[$i]}"
done
# nechat vybrat
while :; do
CoDebugovat="`zenity --title 'gDebug' --list --radiolist --text 'Problém s čím?' --column 'Vyber jednu' --column 'oblast' $ZM`"
# zmáčkl cancel?
[[ $? -eq 1 ]] && exit 1
# zadal něco?
[[ -n $CoDebugovat ]] && break
zenity --error --text "Vyber jednu problémovou oblast!"
done
# zde je možné doplňovat příkazy pro jednotlivé oblasti
# příkaz je potřeba zadat tak, aby jeho provádění netrvalo
# déle než cca 45 sekund (viz $CasLimitPrikaz)
case $CoDebugovat in
zvuk)
prikazy=( "aplay -l" "grep Codec /proc/asound/card0/codec#*"
"lspci -v | awk '/Audio/,/Kernel\ modules/'" "lsof /dev/dsp* /dev/snd/*"
"amixer info" "amixer scontents | grep -E 'mixer|\['" "uname -a"
"df -Th" "cat /etc/lsb-release" )
;;
flash)
prikazy=( "dpkg -l | egrep 'flash|swfdec|gnash'"
"ls -al /home/*/.macromedia" "find /usr -name libflashplayer.so -ls"
"uname -a" "df -Th" "cat /etc/lsb-release" )
;;
instalace)
prikazy=( "dpkg --configure -a" "dpkg -l | grep -Ev '^ii|^rc'"
"tail -20 /var/log/dpkg.log"
"find /etc/apt -type f -name '*.list' -exec grep -H '^deb ' '{}' \;"
"ls -l /var/backups/{apt,dpkg}*"
"ls -l /var/lib/dpkg" "lsof /var/lib/dpkg/*"
"df -Th" "cat /etc/lsb-release" )
;;
*)
# TODO: něco ukecanějšího by nebylo?
exit 1
esac
TempSoubor=`mktemp`
# jak dlouho dát max. čas pro provedení příkazu
# nesmí být moc, uživatel je netrpělivý
# sekundy = asi CasLimitPrikaz/5
CasLimitPrikaz=250
# adresář, z kterého spouštíme skript
AktAdresar=$(cd $(dirname "$0");pwd)
# existuje AktAdresar?
# pokud ne, předpokládej $HOME nebo /tmp
[[ -z $AktAdresar ]] && AktAdresar="$HOME"
[[ -z $AktAdresar ]] && AktAdresar=/tmp
PocetPrikazu=$((${#prikazy[@]}))
exec 3> >(zenity --progress --title="gDebug" --percentage=0 --auto-close --width=300 || echo cancel > $TempSoubor)
# výstup do souboru výsledky.txt
exec &> "${AktAdresar}/výsledky.txt"
for (( i=0; i<$PocetPrikazu; i++ )); do
prikaz=${prikazy[$i]}
echo "# $(($i + 1))/${PocetPrikazu} - ${prikaz}" >&3
echo
echo $prikaz
echo ---------------------------
eval "${prikaz} &"
ChildPID=$!
# příkaz se spouští na pozadí
# když uživatel klikne Cancel, nebo se příkaz provádí dlouho
# je nemilosrdně zabit
for ((j=0;j<=$CasLimitPrikaz;j++)); do
kill -0 $ChildPID &> /dev/null || break
[[ -s $TempSoubor ]] && exit 1
echo $(((($i * $CasLimitPrikaz + $j) * 100) / ($PocetPrikazu * $CasLimitPrikaz))) >&3
sleep 0.2
done
kill -0 $ChildPID &> /dev/null && { echo "zabíjím $ChildPID - $prikaz"; kill $ChildPID; }
echo $((($i + 1) * 100 / $PocetPrikazu)) >&3
done
if zenity --question --title="gDebug" --text="Hotovo.\n\nByl vytvořen soubor $AktAdresar/výsledky.txt.\n\nChceš ho rovnou otevřít?"; then
editor="gnome-text-editor"
which "$editor" &> /dev/null || editor=gedit
$editor "$AktAdresar/výsledky.txt" &
fi
exit 0
===== Příklad možného obsahu souboru výsledky.txt =====
{{.:example.png}} Výstup skriptu při volbě //flash//:
dpkg --configure -a
---------------------------
dpkg: error processing adobe-flashplugin (--remove):
Package is in a very bad inconsistent state - you should
reinstall it before attempting a removal.
Errors were encountered while processing:
adobe-flashplugin
dpkg -l | grep -Ev '^ii|^rc'
---------------------------
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=====================================-==========================================-============================================
rFR adobe-flashplugin 10.0.22.87-1 Adobe Flash Player plugin version 10
tail -20 /var/log/dpkg.log
---------------------------
2010-02-04 16:27:33 startup packages remove
2010-02-04 16:27:33 status installed libreadline5 5.2-6
2010-02-04 16:27:33 remove libreadline5 5.2-6 5.2-6
2010-02-04 16:27:33 status half-configured libreadline5 5.2-6
2010-02-04 16:27:33 status half-installed libreadline5 5.2-6
2010-02-04 16:27:33 status triggers-pending libc-bin 2.10.1-0ubuntu16
2010-02-04 16:27:33 status config-files libreadline5 5.2-6
2010-02-04 16:27:33 status config-files libreadline5 5.2-6
2010-02-04 16:27:33 trigproc libc-bin 2.10.1-0ubuntu16 2.10.1-0ubuntu16
2010-02-04 16:27:33 status half-configured libc-bin 2.10.1-0ubuntu16
2010-02-04 16:27:33 status installed libc-bin 2.10.1-0ubuntu16
find /etc/apt -type f -name '*.list' -exec grep '^deb ' '{}' \;
---------------------------
deb http://ppa.launchpad.net/jonoomph/openshot-edge/ubuntu karmic main
deb http://dl.google.com/linux/deb/ stable main
deb http://deb.opera.com/opera/ stable non-free
deb http://cz.archive.ubuntu.com/ubuntu/ karmic main restricted
deb http://cz.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb http://cz.archive.ubuntu.com/ubuntu/ karmic universe
deb http://cz.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb http://cz.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://cz.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb http://security.ubuntu.com/ubuntu karmic-security main restricted
deb http://security.ubuntu.com/ubuntu karmic-security universe
deb http://security.ubuntu.com/ubuntu karmic-security multiverse
deb http://ppa.launchpad.net/xsisqox/ppa/ubuntu karmic main
ls -l /var/backups/{apt,dpkg}*
---------------------------
-rw-r--r-- 1 root root 2271643 2009-10-30 20:27 /var/backups/aptitude.pkgstates.0
-rw-r--r-- 1 root root 1254290 2010-02-01 00:37 /var/backups/dpkg.status.0
-rw-r--r-- 1 root root 346435 2010-01-30 23:57 /var/backups/dpkg.status.1.gz
-rw-r--r-- 1 root root 345971 2010-01-29 19:50 /var/backups/dpkg.status.2.gz
-rw-r--r-- 1 root root 345671 2010-01-28 21:53 /var/backups/dpkg.status.3.gz
-rw-r--r-- 1 root root 345458 2010-01-26 23:56 /var/backups/dpkg.status.4.gz
-rw-r--r-- 1 root root 345052 2010-01-25 20:32 /var/backups/dpkg.status.5.gz
-rw-r--r-- 1 root root 344752 2010-01-24 22:13 /var/backups/dpkg.status.6.gz
ls -l /var/lib/dpkg
---------------------------
total 5164
drwxr-xr-x 2 root root 4096 2010-02-02 10:58 alternatives
-rw-r--r-- 1 root root 1250240 2010-02-04 23:57 available
-rw-r--r-- 1 root root 1250240 2010-02-04 23:55 available-old
-rw-r--r-- 1 root root 8 2009-10-30 20:22 cmethopt
-rw-r--r-- 1 root root 338 2010-01-26 20:27 diversions
-rw-r--r-- 1 root root 186 2009-11-20 23:53 diversions-old
drwxr-xr-x 2 root root 225280 2010-02-04 16:27 info
-rw-r----- 1 root root 0 2010-02-04 23:57 lock
drwxr-xr-x 2 root root 4096 2009-09-20 10:23 parts
-rw-r--r-- 1 root root 112 2010-01-14 22:18 statoverride
-rw-r--r-- 1 root root 152 2010-01-14 22:18 statoverride-old
-rw-r--r-- 1 root root 1254290 2010-02-04 23:57 status
-rw-r--r-- 1 root root 1254290 2010-02-04 23:55 status-old
drwxr-xr-x 2 root root 4096 2010-02-04 16:27 triggers
drwxr-xr-x 2 root root 4096 2010-02-04 23:57 updates
lsof /var/lib/dpkg/alternatives /var/lib/dpkg/available /var/lib/dpkg/available-old /var/lib/dpkg/cmethopt /var/lib/dpkg/diversions /var/lib/dpkg/diversions-old /var/lib/dpkg/info /var/lib/dpkg/lock /var/lib/dpkg/parts /var/lib/dpkg/statoverride /var/lib/dpkg/statoverride-old /var/lib/dpkg/status /var/lib/dpkg/status-old /var/lib/dpkg/triggers /var/lib/dpkg/updates
---------------------------
df -Th
---------------------------
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda8 ext4 15G 3.7G 10G 28% /
udev tmpfs 497M 312K 497M 1% /dev
none tmpfs 497M 136K 497M 1% /dev/shm
none tmpfs 497M 76K 497M 1% /var/run
none tmpfs 497M 8.0K 497M 1% /var/lock
none tmpfs 497M 0 497M 0% /lib/init/rw
/dev/sdb1 ext3 78G 39G 36G 53% /home
cat /etc/lsb-release
---------------------------
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.10
DISTRIB_CODENAME=karmic
DISTRIB_DESCRIPTION="Ubuntu 9.10"