2011-07-13

Peklo s dash

Tak jsem se konečně rozhodl, začít migrovat s Debian Lenny na Debian Sqeeze.
Tak trochu jsem k tomu byl přinucen.

Některé věci mne nepřestávají udivovat.  Konkrétně začínám být velmi ale velmi předpojatý k programu dash.  Po tom co jsem si zažil se mi začíná dělat zle už když slyším ten název.

V čem je problém? v DashAsBinSh

Prostě v Sqeeze je /bin/sh odkazem na /bin/dash.
Jenže některé programy, "zcela nečekaně" při své práci volají /bin/sh.  Já mám třeba nějaké Makefile, které jsem sestavoval už před dlouho dobou a jsem s nimi spokojen.  Tedy byl jsem až do pokusu spustit make na Debian Sqeeze.  najednou nic nefungovalo.  Ještě že mě napadlo, udělat takový malý příklad a odtrasovat si ho strace.  Toto je obsah Makefile:


do-copy:
-cp book.{ps,pdf} dir/
-echo $$BASH_VERSION


na Lenny funguje pěkně

radek@vanor:~/work/make-problem$ strace -o lenny make do-copy


cp file dir/
cp book.{ps,pdf} dir/
echo $BASH_VERSION
3.2.39(1)-release


Ale na Sqeeze jsem se se zlou potázal

radek@ulys:/vol/HOME/radek/work/make-problem$ strace -f -o sqeeze2 make do-copy
cp book.{ps,pdf} dir/
cp: nelze získat informace o „book.{ps,pdf}“: Adresář nebo soubor neexistuje
make: [do-copy] Error 1 (ignored)
echo $BASH_VERSION

prázdný řádek tam kde má být verze bashe mi napověděl, ale strace potvrdil.

2586  execve("/bin/sh", ["/bin/sh", "-c", "echo $BASH_VERSION"], [/* 40 vars */]) = 0



# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 13. čec 22.04 /bin/sh -> dash


Při spatření posloupnosti písmen "dash" mi začaly zvonit všechny výstražné zvonky v hlavě.  Toto už jsem někde zahlédl a ne zrovna v pěkné souvislosti.


Najít pomocí Google  DashAsBinSh pak bylo snadné.  A nastavit /bin/sh na něco použitelného (t.j. bash) pak jendoduché

# dpkg-reconfigure dash

a odpovědět ne, opravdu nechci dash jako shell.  Ve skutečnosti bych s s dash nejradši už nikdy v životě nepotkal.

DODATEK:
Ano, hned po té, co jsem tento příspěvek publikoval, mne napadlo prozkoumat dokumentaci make.  Nalezl jsem další řešení.  Pokud je v Makefile nastavena proměnná SHELL, použije se.  Bohužel nestačí mít proměnnou SHELL v prostředí, musí být nastavena v Makefile.

V každé případě považuji změnu /bin/sh na /bin/bash za vhodnější, protože kdo ví, co všechno jiného by se ještě "rozsypalo".

2011-02-21

Google Chrome a Adobe Flash

Tak jsem dneska upgradoval Chrome, on se vlastně k upgradu vybízel sám. Začala na mě svítit ikonka aktualizací. Protože jsem měl chrome spuštěný, tak jsem si ničeho nevšiml. Až po opětovném spuštění začaly problémy s Adobe Flash Playerem. Chrome mne upozorňoval že Flash Player je starý a že jej má aktualizovat. Aktualizace standardním způsobem samozřejmě není možná, protože Adobe žádné repositáře nenabízí. Po chvilce bádání se mi podařilo vyhledat řešení a aplikovat na mém počítači.

Nejdříve nový Flash. Ten jsem našel jako balíček flashplayer10_2_p3_64bit_linux_111710.tar.gz na stránce Adobe Flash Player "Square" Preview Release. Rozbalil jsem jej do adresáře /tmp/0. Balíček obsahoval jen jeden soubor libflashplayer.so.

Nyní jsem podle postupu How to Enable Flash Support in Google Chrome in Ubuntu umístnil libflashplayer.so do Chrome pluginů.


# cd /opt/google/chrome
# mkdir plugins
# cp /tmp/0/libflashplayer.so plugins/


Zbývalo jen nastavit spouštěč Chrome tak aby akceptoval pluginy. Klepneme pravým tlačítkem myši na spouštěč a zvolíme volbu Vlastnosti. V poli Command na konec přidáme volbu --enable-plugins. Po zavření a opětovném spuštění Chrome si již na Flash nestěžuje.



Snad to chvíli vydrží, uvidíme co s tím udělá další upgrade Chrome. Každopádně už vím kde jsou jeho pluginy a kde vzít Flash Player.


Dodatek:
   Tak to nepřežilo upgrade Chrome! Zkoumal jsem co se stalo, všechny soubory na svém místě. Až pak jsem objevil problém, z nějakého důvodu se použil jiný flashplayer než jsem chtěl. Stačilo do chrome zadat adresu about:plugin a deaktivovat ten špatný.