Elkezdtem letisztogatni a korábban gyűjtött hUbákat. Most az Update Manager problematikáját jártam körbe. Ímhol az eredmény:
Némi vadászkodás után megtaláltam, hogyan hívják a gnome alatt a jobb-felső sarokban megjelenő kis narancssárga csillag szerű izét, amire elvileg frissítene. Talán Synaptic Package Manager a neve? Vagy Update Manager 0.200? Az a jó, hogy a preferences menüpontra csak várakozik és nem jön be semmi... Legalább egy About ablak megjelenhetne. Az ikonok felrakásakor még a package manager névre tippeltem, de egy ps aux kimenetben való keresgélés után végül is azt találtam, hogy ez lesz az update-notifier. Ez az én user-em UID-jával fut. Amikor elindítom kér egy root jelszót, leszedi a firssítendő csomagokat, de a dpkg futtatásakor dob pár hibát. Ilyeneket:
dpkg: warning: 'ldconfig' not found on PATH.
dpkg: warning: 'start-stop-daemon' not found on PATH.
dpkg: warning: 'update-rc.d' not found on PATH.
dpkg: 3 expected program(s) not found on PATH.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
Megnéztem és root-ként látom a hiányolt programokat. Egy ideig úgy oldottam meg, hogy a hiba bejelentése után root ablakból indítottam kézzel egy apt-get dist-upgrade -et, ami felrakta az upgrade manager-rel leszedett csomagokat. Tuti, hogy valami környezeti beállítás nem stimmel.
Először is megkerestem, hogy hol is vannak ezek a programok: /sbin/ldconfig; /sbin/start-stop-daemon; /usr/sbin/update-rc.d . Gondoltam talán a dpkg nincs jól bekonfigurálva. Irány a man dpkg. E szerint a config file itt vagyon: /etc/dpkg/dpkg.cfg. Itt van egy /var/log/dpkg.log file. Talán ott látok valamit. De semmi. Beleírtam a /etc/dpkg/dpkg.cfg -be is, hogy többet logoljon. Ez sem nyert. A man írta még a /etc/login.defs -t, hogy tegyem bele az ENV_SUPATH, és az ENV_PATH-t, de az már benne volt. Ez akkor zsákutca.
Megnéztem a home könyvtáramban a .profile-t, .bashrc-t és a .bash_profile-t, mik vannak beállítva. Minden jónak tűnt. A .profile azt mondta magáról, hogy nem fut le, ha van bash van. Nézegettem a /etc/profile-t, de ott sem láttam semmit érdekfeszítőt. A /etc/profile root esetén beleteszi az sbin-es path-okat. Hát akkor próbáljuk meg at /etc/environment -be berakni a PATH="/usr/local/sbin:/usr/sbin:/sbin"-t. Semmi javulás. Hát akkor egy kicsit ássunk méllyebre.
Hogyan nézzük meg, hogy egy már futó programnak mik a környezeti változói? A neccen azt olvastam, hogy root-ként erre van lehetőségünk:
# ps aux | egrep update-notifier
# # ebből megtudjuk, hogy mi a PID-je. Hogy minek egrep, amikor az fgrep bőven elég lenne?
# cat /proc/XXXX/environ | tr '\0' '\n' | egrep '^PATH='
# # Ettől van herótom! Minek a cat??? Imádják ezeket a kígyókat! Ide elég lenne a grep!
Akkor egy javított kiadás:
# tr '\0' '\n' </proc/$(ps -o pid:1= -C update-notifier)/environ|grep "^PATH="
# # Sajnos nem sikerült awk-kal '\0' terminált string-et olvasni. :-( Marad a tr | grep kígyó.
# # Lehet, hogy a gsub megoldaná, de lehet, hogy az awk alapból nem olvassa be.
Ezt kaptam: PATH=/home/mine/bin:/home/mine/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
Az látszik, hogy a sbin-es path-ok hiányoznak. Miért van két /home/mine/bin??? Az egyiket a .bashrc állítja be, de ki teszi bele a másikat? Ezt minden esetre kiszedtem a .bashrc-ből.
Na jó, akkor berakom PATH-ba az sbin -eket. De hova? A /etc/profile-ben a root-nak be van téve, nekem meg nincs. Kipróbáltam, hogy az én UID-emre is állítsa be. Sikerült is. De nem szép. Valahol csak beállítja az update-notifier PATH-át!
Megvan, hogy kerül be a /home/mine/bin! A ~/.profile-ből!!! Az hívja meg a .bashrc-t! Pedig a doksiban az van, hogy a .profile nem hívódik meg, ha van .bashrc, vagy .bash_profile. Tuti, hogy nem bash-ban indul az update-notifier, hanem sima sh-val, ami meg a ~/.profile-t indítja. No akkor a .bashrc-ben jól beállítottam és már megy is!
A /home/mine/bin beállítását végül kiszedtem a ~/.profile-ből és átraktam a ~/.bashrc-be, mert amikor az előbbi lefut, akkor meghívja az utóbbit, de ha csak egy sima konzolt nyitok bash-sal, akkor csak a ~/.bashrc fut le. Nekem pedig kell a saját bin-em! :-)
Hurrá!
+jegyzések