Emerge Portage – Multiple package instances within a single package resulting slot conflict

As usual at least once a month, I came across a bug in The Portage Tree of Gentoo Linux.
root@v-teq-laptop $ emerge -Dup world # --deep --update --pretend !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: sys-libs/readline:0 ('ebuild', '/', 'sys-libs/readline-5.2_p13', 'merge') pulled in by =sys-libs/readline-5* required by ('ebuild', '/', 'dev-lang/ghc-6.8.2', 'merge') (and 16 more) ('installed', '/', 'sys-libs/readline-6.0', 'nomerge') pulled in by sys-libs/readline:0 required by world sys-libs/readline required by system sys-libs/readline required by world (and 13 more) It may be possible to solve this problem by using package.mask to prevent one of those packages from being selected. However, it is also possible that conflicting dependencies exist such that they are impossible to satisfy simultaneously. If such a conflict exists in the dependencies of two different packages, then those packages can not be installed simultaneously. For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
To get rid of such package conflict you have to add package name into package.mask file. And even better is to put there only one version of those conflicted packages.
There you can see example solution of this kind of bug:
echo ">=sys-libs/readline-6.0" >> /etc/portage/package.mask
Firefox ‘already running’ bug -> delete .parentlock file

I came across a strange bug today, using CentOS Linux. The whole system suddenly froze up and I had to restart the whole computer (it was not even possible to change to any TTY using CTRL+ALT+F[0-8] or restart X by pushing CTRL+ALT+BACKSPACE). But after rebooting I couldn’t start Mozilla Firefox browser.
Error dialogue during a Firefox startup:
Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.
The solution is to delete .parentlock file in your firefox home directory.
$ rm ~/.mozilla/firefox/<session>.default/.parentlock # substitute <session> with your default session (or '*' should probably work too)
Soutěž k 10. výročí serveru Root.cz – řešení
V tomto článku naleznete řešení jednotlivých úkolů soutěže Root.cz, která je pořádána u příležitosti 10. výročí serveru
Nečtěte proto dále, pokud si chcete jednotlivé úkoly vyřešit sami! ![]()
Soutěž oficiálně trvá od 26. ledna do 5. dubna 2009.
Tento článek nebyl celý dopsán do ukončení soutěže, proto je ke konci ovlivněn oficiálními postupem k vyřešení všech dílčích úkolů.
Motivace
Proč jsem se rozhodl psát článek o této soutěži? To je jednoduché – ve zkouškovém období na VŠ člověk stále hledá spoustu důvodů, proč se neučit na zkoušky následujících dnů. Proto jsem během instalace mého nového systému Gentoo (2008-01-27), mezi vyhledáváním “kdejaký těch ptákovin” na internetu začal psát tento článek..![]()
Na dopsání dalších úkolů intenzivně pracuji.
Zadání
Úvodní stránka a kompletní zadání.

Tipy a dobré rady (viz 10.root.cz)
* důkladně prohledejte celou stránku
* nápovědy a důležité informace bývají skryté
* každý úkol je jiný
* hledejte opravdu důkladně, my jsme důkladně ukrývali
* nebojte se používat software, znalosti, Google, cokoliv…
* v každé stránce je sekce s měřícími kódy, tu ignorujte, neobsahuje žádnou nápovědu
..není tedy zakázané diskutovat, či shromažďovat řešení úkolů
![]()
První úkol – “chlapec s ukazováčkem”
Zdrojový kód prvního úkolu vám rozhodně nic nenapoví.
A nenapravíte to ani mnohonásobným prohledáním této části zdrojáku:
<!-- No jen přemýšlej! --> <!-- Měřící kódy - můžeš ignorovat --> <script src="..." type="text/javascript"><!--mce:0--></script> <!-- Konec kódů -->

..řešení je samozřejmě v něčem úplně jiném.
V bílém pruhu, na který ukazuje klučina prstem, lze zahlédnout tajuplný text, který má maličko odlišný odstín bílé barvy než okolí – nápis “URL?”
Tento Sherlocka-hodný titulek nás po chvilce dalšího bádání přivádí k druhému úkolu, jehož výsledné url je opravdovým oříškem.
Pro ty, kterým se nechce vůbec přemýšlet – http://10.root.cz/soutez/druhy/
Druhý úkol – “Tudy ne!”

Hned při vstupu na tuto stránku jsme odrazováni fotkou brečícího chlapce, s titulkem špatně.
Na první pohled je zdrojový kód HTML dokumentu opět nezajímavý.
Ovšem, nenecháme-li se odradit ani varovným nadpisem Nene, to by bylo moc jednoduché
), tak si můžete povšimnout, že je dokument jaksi enormně dlouhý.
Na samém konci souboru (odděleném tajuplným množstvím znaků EOL) můžete spatřit tento řádek:
<!-- A hele, tady něco je! 24ea1163ea6c9f5dae77de8c49ee7c03 (s -) -->Můžeme si tedy všimnout posloupnosti hexa číslic, že by nějaká šifra? ..ano, vypadá to jako md5 hash jakéhosi textu.
A zdá se, že je tento md5 hash na Googlu docela profláklý .. jednoduchým dotazem ve vyhledávači tedy zjistíme, že se jedná o md5-sum obrazu CD ubuntu-8.10-desktop-i386.iso.
..co dál? ..inu, těžko říct. Neměli bychom opomenout řetězec (s -), možná to nějak souvisí s konzolí v linuxu, s regulárními výrazy – např. s by mohl mít význam stringu a pomlčka (-) by mohla značit url-oddělovač..
Po mnoha zoufalých pokusech (které byly často velmi podobné finálnímu řešení) a s částečnou dopomocí diskuze na Webtrhu jsem dospěl k výsledku. ![]()
Mýtický (s -) měl znamenat lower-case řetězec (s pomlčkou jako oddělovačem): /soutez/intrepid-ibex. Je až nepochopitelné, jak dlouho jsem kroužil kolem správného výsledku (varianty /soutez/…, /soutez/druhy/.., /soutez/treti/… s řetězci typu Ubuntu-8.10, Ubuntu-8.10-Inrepid-Ibex, Ubuntu-Intrepid-Ibex, Intrepid-Ibex, …). Ve výsledku mi tedy Unix-like server root.cz defacto odolával hlavně svými case-sensitive názvy souborů.
Třetí úkol – tajemný dokument s názvem formátu FAT16

Na stránce nového úkolu se nachází obrázek závěsu, na jehož pravém horním okraji se nachází tento textový řetězec: (8 + 3) – 3. Otázkou tedy je, co tento řetězec znamená. To ale není zas až tak těžké, naprostá většina ajťáků to pozná hned na první pohled. Jedná se o název souboru ve FAT16 – podle dokumentace je vyhrazeno 8B pro název a 3B pro příponu.
Řetězec (8 + 3) – 3 tedy bude znamenat substring názvu souboru – tj. pouze jméno souboru bez přípony. Takže z původního http://10.root.cz/soutez/intrepid-ibex/zavesobr.jpg získáme http://10.root.cz/soutez/intrepid-ibex/zavesobr. Titulek tohoto odstavce je, jak jste si mohli povšimnout, mírně zavádějící a ne zcela správný z pohledu IT – proto se za něj dodatečně omlouvám.
Posledně zmíněný odkaz nás zavede na stránku plnou textu, speciálních znaků a binárního kódu. Díky úvodní sekvenci %PDF-1.4 ale samozřejmě zjistíme, že se jedná o dokument ve formátu PDF. V tomto dokumentu ale vidíme naprosto totéž, co na předchozím obrázku JPG. Dalším krokem tedy musí být úprava tohoto dokumentu.
Já jsem pro úpravu použil textový editor ViM, smazal jsem pouze defacto objekt do této doby viditelného obrázku a výsledek jsem opět uložil. Modifikovaný soubor již tedy není překrytý nepotřebným obrázkem a konečně poskytuje námi hledanou informaci, a to url dalšího úkolu – tím je tedy http://10.root.cz/soutez/deset-let-linuxu/.
Třetí úkol – “Wed 14 Feb”

Další indicii můžeme nalézt z článků, které vyšly na root.cz právě v toto datum – ve středu 14. února (tj. rok 2007).
Na konci tohoto článku můžeme nalézt větu:
Hodiny? Číňané nám dali také mnoho užitečných věcí. Například první mechanické hodiny vymyslel Číňan s krátkým příjmením…
Odpovědí na tuto hádanku je jméno http://10.root.cz/soutez/Xing.
Čtvrtý úkol – bludiště
Krásné (D)HTML/JavaScriptové bludiště, v němž se můžete pohybovat klávesovými šipkami je sice pěkné, ale než byste se dostali k nějakému výsledku, mohli byste bez problému zešedivět. Tak proč na to nejít trochu programátorsky? ..stačí přece otevřít zdrojáky ![]()
A kde jinde bysme hledali bitmapy, než přímo ve zdrojáku bludiště samotného (psaném v JavaScriptu):
img.src = (window.opera ? "walls19.png" : "walls.png");
Na bitmapě zdí, které můžete vidět v jiných prohlížečích, než je Opera (že by diskriminace?), můžete vidět několik indicií. Po chvíli trápení a “gůglení” mi došlo, že se bude jednat o jazyk Python (had – “ssss”, Rossum – “RUR”, jazyk ABC – “ABC++”).
Pátý úkol – GPS
Tento úkol mi sebral minimálně hodinu mého cenného času.. Člověk se musí pořádně podívat kam jinam, než do zdrojového kódu – ovšem nesmí zbytečně hledat nějaké šifry a schované GPS souřadnice, ale musí si všimnout jedné, na první pohled neviditelné, maličkosti:
<img src="image2.gif" alt="[IMG]" /> <a href="GPS.jpeg">GPS.jpg</a> 14-Feb-2009 15:30 21K
Odkaz totiž nevede na obrázek GPS.jpg, ale na obrázek GPS.jpeg. Když tedy zadáme do prohlížeče GPS.jpg, na který jsme se z odkazu nedostali, zobrazí se nám konečně toliko hledané souřadnice 28 23 46 N, 81 34 42 W.
Když zadáme dané souřadnice např. do Google Maps, můžeme si ze satelitního snímku všimnout obrysu Mickey Mouse.
Šestý úkol – Mickey Mouse
To, že třetí z obrázků naznačuje něco víc – indicii, mi došlo až poté, co jsem prozkoumal tip přímo ve zdrojovém kódu:
Po stažení souboru egg.egg vidíme podle prvních několika bajtů defacto odpověď :
OggS���������_�...
..jedná se o soubor .ogg, v němž můžeme slyšet ptačí zpívání. Tudíž máme několik indicií – všechny vedou na ptačí pípání..
Poenta tohoto úkolu je v tom, že si musíme přeložit slovo “pípání”/”cvrlikání” do angličtiny – to nás totiž nasměruje na twitter.com, kde si root.cz založil vlastní účet.
Sledování tohoto účtu na Twitteru vedlo badatele k přijetí soukromé zprávy se zakódovaným textem – ten šlo snadno po několika minutách rozluštit do finální podoby: linux-rulez.
Na dopsání dalších úkolu intenzivně pracuji.
Networking notes
How to change MAC (hardware) address of NIC (network interface card)
$ ifconfig eth0 down $ ifconfig eth0 hw ether 00:ab:cd:ef:12:34 # new MAC address $ ifconfig eth0 up $ ifconfig eth0 | grep HWaddr # check new MAC address
Sparse files
How to create ~20GB sparse file
A few days ago, I wanted to download some files using DC network via Linux DC++. The problem was, that I had a borrowed laptop with no files to share, so I decided to create a faked file – in my case sparse file.
This Unix-like command creates ~20GB sparse file. To be clear, it’s file size seems to be 20GB for most of applications (including Linux DC++), but in real it’s only about a few bytes long, just because of “seek”. Zeros needn’t to be physically stored in the harddisk, they’re simply seeked.
$ dd if=/dev/zero of=<FILE> bs=1 count=0 seek=20480M
Sparse files are available on most of Unix-like file systems. Microsoft implements sparse files since release of NTFS (fsutil).












