Portál AbcLinuxu, 26. května 2024 22:54

Zajímavosti ze světa Linuxu - 2

27. 6. 2003 | Robert Krátký
Články - Zajímavosti ze světa Linuxu - 2  

Chceme se zbavit autoconfu? Filtrování spamu pomocí gzip. Instalace software a nedostatky současných balíčkovacích systémů.

Chceme se zbavit autoconfu?

freshmeat Andrew McCall se v editoriálu na freshmeat.net pustil do autoconf utilit, které jsou používány distributory naprosté většiny zdrojového kódu na *nixových systémech.

V úvodu demonstruje nepraktičnost tohoto build systému úsměvným příběhem o běžném, přiměřeně zdatném uživateli Linuxu, který se snaží prokousat zdánlivě banální procedurou ./configure && make && make install. Naráží přitom na hromadu problémů, které je nutno řešit, aby se člověk dopracoval kýženého výsledku - totiž zkompilovaného, funkčního a nainstalovaného programu. Je sice pravda, že s některým z popisovaných zádrhelů se pravděpodobně většina z nás také setkala, ale na druhou stranu je také fakt, že Andrewův fiktivní uživatel působí malinko natvrdlým dojmem. To však prvním několika odstavcům neubírá na vtipnosti.

Pak se dozvíme, v čem podle autora tkví problém pro samotné vývojáře. Protože autoconf používá pro sestavování configure skriptů makro procesor m4, tak chcete-li opravdu porozumět tomu, co se pod kapotou děje, je třeba se v m4 orientovat. A to prý není žádná sranda. Říkám "prý", protože já sám takové ambice vůbec nemám, takže nemohu soudit.

Nakonec Andrew načrtne, proč si myslí, že v celém systému vládne takový zmatek (alespoň on to tak vidí...). Jádrem pudla jsou Makefiles. Abychom se předlouhých a komplikovaných Makefilů zbavili, je nutno nalézt efektivnější způsob řízení celého build procesu. Několik "řešení" také nabízí (SCons, CONS, A-A-P). Je si sice vědom jejich nedostatků (např. mizivé portability), ale soudí, že za pokus by jejich masovější rozšíření stálo.

Reakce

Neméně zajímavé čtení nabízí kopec odpovědí na hlavní článek. Mohli bychom je rozdělit do dvou hlavních skupin. Převládají ti, kteří s Andrewem více méně souhlasí a také si stěžují na všelijaké zákeřnosti, které jim autoconf/automake, apod. provedly. Druhou partu tvoří názory těch, kdo sice netvrdí, že autoconf je dokonalost sama, ale že:

a) Nemáme nic, co by tomuto řešení sahalo alespoň po kotníky.
b) Kdyby se autor a ostatní trochu snažili se něco přiučit, poznali by, jak silný nástroj to mají v rukou.

Článek najdete zde.

Filtrování spamu pomocí gzip

kuro5hin Již v lednu tohoto roku vyšel na serveru kuro5hin.org krátký článek o využití komprimačního algoritmu gzip pro identifikaci spamu. Nenajdete v něm žádná převratná zjištění, přesto je však myšlenka zajímavá.

LZ (Zip) a příbuzné kompresní algoritmy (gzip) v textu hledají opakované výskyty částí slov, celých slov nebo i frází. Každý takový opakovaný výskyt je nahrazen odkazem na první. Čím více se v textu nalézá totožných prvků, tím lepší poměr komprese získáme.

Této techniky lze využít ke zjištění podobnosti dvou různých textů. Tyto dva texty spojíme, zkomprimujeme a podle dosaženého kompresního poměru můžeme posoudit jejich podobnost. Je samozřejmé, že chceme-li mít možnost získanou informaci vyhodnotit, potřebujeme pro srovnání provést stejný pokus, při kterém jeden z textů nahradíme za jiný.

V případě identifikace spamu tedy postupujeme následovně: připravíme si blok textu, který lze považovat za jasný spam. Stejně tak vytvoříme "šablonu" pro ne-spam. Autor postupoval tak, že si opatřil příklady spamu a ne-spamu z archívu SpamAssassinu. Z takto získaných emailových zpráv odstranil hlavičky a sloučil je do souborů o velikosti mezi 1 a 2 megabajty. Posledním krokem je samotné porovnání. V článku je vyřešeno jednoduchými příkazy:

cat spam.txt text-nove-zpravy.txt |gzip - |wc -c
cat ne-spam.txt text-nove-zpravy.txt |gzip - |wc -c

Ačkoliv výsledky potvrdily hypotézu, že kombinace spamu a ne-spamu bude mít horší kompresní poměr (a naopak), nelze takový postup určitě považovat za odpověď na problém spamu. Nicméně v kombinaci s dosud používanými metodami (které využívají počítání slov a přidělují jim různou statistickou významnost) by tento nápad mohl zlepšit účinnost dostupných filtrů. Přečtěte si původní článek.

Instalace software a nedostatky současných balíčkovacích systémů

Na serveru LinuxWorld.com vyšel rozsáhlý čtyřdílný seriál zabývající se instalací software na Linuxu. Z nadpisu je patrné, že autor, Nicholas Petreley, se stávající situací není moc spokojený. Postupně proto vymezuje výhody a nevýhody balíčkového přístupu a nakonec se i snaží o navrhnutí změn, které by dané problémy mohly řešit.

Přestože spousta uživatelů by jistě pohotově vyzdvihla a na příkladech doložila, kterak jsou balíčky právě té jejich distribuce odpovědí na nářky ostatních (musím se přemáhat, abych sem sám nenapsal, jak je ta "moje" distribuce nejlepší...), Nicholas tvrdí, že žádný z již existujících systémů prosazovat nechce. Žádný není tak jednoduchý a bezchybný, jak by si představoval.

Jednotlivé díly se zabývají následujícími věcmi:

  1. Vyjmenovány přednosti (stručně ;-) ): a nevýhody balíčků. Zápory jsou podrobněji rozepsány:
  2. Peklo závislostí, které způsobují sdílené knihovny.
  3. Stanovuje cíle, kterých chceme dosáhnout:
    1. Instalace by měla být tak jednoduchá, aby ji zvládla vaše babička, ale zároveň tak flexibilní, aby si ji profesionál mohl upravit dle svých potřeb.
    2. Instalace by měla být časově nenáročná.
    3. Instalace a aktualizace by neměly způsobit selhání stávajících aplikací nebo funkcí systému.
    4. Aktualizace a údržba by měla být co nejvíce automatizovatelná.
    5. Proces instalace by neměl být závislý na distribuci (možnost bez problému nainstalovat tentýž balíček na různé distribuce).
    6. Proces instalace by neměl být závislý na verzi distribuce.
    A jako možné řešení vidí kombinaci schopností Gentoo portage systému a GNU Libtool nástrojů (konkrétně libldtl).
  4. Návrh pravidel, kterými by se měli řídit vývojáři aplikací a správci balíčků.

Přečtěte si celý seriál zde.

A nakonec...

Opravdu se nenajde nikdo, kdo by se chtěl spolupodílet na vzniku těchto článků?

Související články

Zajímavosti ze světa Linuxu
MessageWall - kladivo nejen na spam

Seriál Zajímavosti ze světa Linuxu (dílů: 6)

První díl: Zajímavosti ze světa Linuxu, poslední díl: Zajímavosti ze světa Linuxu - 6.
Předchozí díl: Zajímavosti ze světa Linuxu
Následující díl: Zajímavosti ze světa Linuxu - 3

Odkazy a zdroje

KWillets: Spam Filtering with gzip, kuro5hin.org
Andrew McCall: Stop the autoconf insanity! Why we need a new build system., freshmeat.net
Nicholas Petreley: Time for a new installation paradigm, linuxworld.com

Další články z této rubriky

Týden na ITBiz: Výkonný elektromagnet z 3D tiskárny
Týden na ScienceMag.cz: Neutronové molekuly – neutrony se mohou vázat na kvantové tečky
Týden na ITBiz: Polovina českých firem si není jistá blízkou budoucnosti svého oboru, většina ale počítá s velkým vlivem AI
Týden na ScienceMag.cz: Působivá simulace pádu do černé díry
Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek

Diskuse k tomuto článku

27.6.2003 07:36 Samael
Rozbalit Rozbalit vše Souhlas
Souhlasim s nazorem...Jsem pro jednotne balicky a hlavne funkcni...Nekdy je hodne tezke nainstalovat neco jineho nez oficialni balicek...Tohle odrazuje mnouho useru M$ od prechodu k Linuxu...Ja jsem presel (nelituju) ale nekdy z tech balicku nadsenej nejsem...Proc to nesjednotit?Je to jen muj nazor tak me za nej laskave nekamenujte...
27.6.2003 08:43 met | skóre: 9 | Praha
Rozbalit Rozbalit vše Souhlas
A pokud nekdo ma Lindows, tak ma "So much software for one click, folks at Microsoft are sick..." ;-) Jak se zpiva v jejich reklamnim shotu
27.6.2003 09:10 Petr Krčmář | skóre: 60 | Liberec
Rozbalit Rozbalit vše Gzip
To s tím gzipem je naprosto geniální. Přemýšlel jsem, že si vyrobím nějaký antispamový filtr a už mám inspiraci. Díky. Ahoj Peter
Amatéři postavili Noemovu archu, profesionálové Titanic ...
27.6.2003 16:13 Ferš | skóre: 11 | Plzeň
Rozbalit Rozbalit vše spamassassin
A co takhle pouzit existujici spamassassin?
FlexiBee - internetový ekonomický systém i pro Linux
27.6.2003 09:18 Karel Zak
Rozbalit Rozbalit vše dreams of paradise
Mam jeste par bodu. ktere autor toho clanku o package systemu zapomel:

- lidi na celem svete by se meli mit radi
- kazdy by mel byt bohaty a zdravy
- na celem svete by mel byt mir
- a pokud mozno by vsichni meli verit v jednoho boha

... presne do takoveho sveta se hodi ten vysneny system pro profesionalni linuxare a jejich babicky.

K tomu autoconf/make, Makefile umoznuje includovat takze staci mit jeden Makefile se zakladnima pravidlama a promennyma kde vse potrebne nastavuje ./configure a dalsi Makefiles mohou mit cca 15 radek. Takze zadne dlouhe a neprehledne soubory.
27.6.2003 09:32 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Jakarta Ant
Chudak Andrew asi nezna Ant. Ach jo. Je mi ho tak lito...
Later --- Lukáš Zapletal
27.6.2003 09:48 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Jakarta Ant
jenze ant neni zadny drobecek (vlastne mravenecek) - jestli se nepletu, tak pro plnou funkcnost vyzaduje JDK (nikoliv pouze JRE); to neni zrovna skromny pozadavek, ne?
27.6.2003 10:24 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Jakarta Ant
nicmene ant je skvely a vsechny ty unixove make, configure atd. na nej zdaleka nemaji ;-)
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
27.6.2003 18:49 gmmns
Rozbalit Rozbalit vše Jakarta Ant
Ale dokud neni mozne distribuovat JDK jako soucast distribuci, tezko se Ant stane standardnim buildovacim nastrojem...
1.7.2003 12:15 kato
Rozbalit Rozbalit vše Jakarta Ant
Jenomze napsat v automake je prace relativne na chvili a jdou tam delat i takove veci, jako je zjistovani chyb v pouzivanych knihovnach a pripadne zakompilovani work-aroundu. Configure.in muzu pouzit uz z nejakeho sveho podobneho projektu, to celou vec jeste urychli. Makefile.am maji jen nekolik radek, kde se pise, co se preklada, cim a jestli je vysledek program/knihovna a jestli se instaluje. Hlavni vyhodu vydim prave v te delce a v tom, ze neni problem se v tom zorientovat. Udelat antove deskriptory mi trva vzdycky delsi dobu (a nedelam to zrovna prvne), vysledek je docela dlouhy, hodne neprehledny (a to i kdyz se snazim pouzivat pro zkraceni entitovy zapis). Krom toho si nejsem vedom toho, ze by out-of-box ant umel jednoduse resit zavislosti mezi soubory (aby se prekladalo jenom to, co fakt musi) nebo ze by sel pouzit i s necim jinym nez s javou. V enterprise sfere pak navic ant pokracuje nekompatibilitou -- viz asant, jagant a buhvijaky jeste ant s novymi/jinymi vestavenymi cily. Proti antu celkem nic nemam, celkove mi tam myslenka ale neprijde nijak prevratna -- grafove zavislosti buildu jsou reseny sice XML syntaxi, ale vlastne stejne jako v make, prikazy shellu nahrazuji kousky javy. Slusnej nastroj, ale tak na to, aby sedel schovanej za nejakym generatorem nebo IDE...
27.6.2003 14:01 Mato
Rozbalit Rozbalit vše Jakarta Ant
Kto preportuje Ant z Javy do C++ (alebo niecoho ineho) ma u mna pivo a budem ho nadovsetko lubit.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.