Na svém „desktopu“ (on je to tedy taky notebook, ale plně převzal úlohu desktopu) už nějaký pátek používám Xubuntu. Můj před-předchozí notebook neměl výkonu zrovna na rozdávání a tak jsem hledal něco odlehčenějšího, až padla volba na Xfce. Na desktopu jsem v té době používal Gentoo, což na tenhle HW nebyla ideální volba a v Mandrivě, kterou jsem předtím dlouhá léta ještě pod názvem Madrake používal, jsem s Xfce příliš spokojen nebyl, jak jsem zmínil i v recenzí Mandrivy 2006. Xubuntu zaměřené právě na Xfce se zdálo být ideální volbou a v jednom z PC ho používám do dnešních dnů. Tenkrát na pomalejším železe mi příliš nevyhovoval výchozí pošťák Thunderbird, ale nahradit jej něčím odlehčenějším nebyl problém. Zkoušel různé klienty, ale nejvíc mi padl do oka Sylpheed a tak padla volba na něj. Postupně jsem si ho oblíbil tak, že ho mám všude, stejně jako Xfce, ale to je celkem fuk.
Když se vrátím do současnosti, tak Xubuntu 9.04 jsem nejen kvůli patáliím s Intelem neměl rád ani trochu a tak jsem již cca před měsícem přešel na betu Xubuntu 9.10. Všechno fungovalo skvěle, až na jednu drobnost. V mém oblíbeném Sylpheedu přestala fungovat kontrola pravopisu. Neměl jsem to příliš čas řešit, až den před vydáním jsem na to mrknul víc a zjistil jsem, že balíček je přeložen s volbou –disable-gtkspell. Zkusil jsem tedy balíček přeložit s volbou –enable-gtkspell a Sylpheed začal při kontrole pravopisu padat. Následují den jsem svou pro mne velmi nemilou zkušenost zmínil pod článkem Ubuntu 9.10 Karmic Koala: vačnatec ladí k dokonalosti a čtenář s nickem Pavolzetor mi řekl, že to má patrně na svědomí nekompatibilita s příliš novou verzi knihovny enchant, čemuž odpovídá i bug #413994, který jsem později našel.
Stejný bug jsem našel i v dalších distribučních bugzillach, ale nikde nebyl žádný patch, pouze stejné konstatování, že se starší verzi enchant 1.4.2 to funguje dobře. 29 října 2009, tedy ve stejný den jako vyšlo Ubuntu 9.10, vyšel i Sylpheed 3.0 beta1. Byl jsem potěšen. Ubuntí bug je z 15.8., přejdu tedy na betu a snad bude klid, řekl jsem si a hned jsem uplácal balíček. Bohužel má radost netrvala dlouho, protože beta (ne)funguje stejně jako poslední stabilní verze a padá také.
Vrátil jsem tedy k úvaze Pavolzetora a zkusil downgradovat enchant na předposlední verzi, ze kterou to vše údajně funguje OK. Přeložený Sylpheed s podporou kontroly pravopisu začal fungovat a nepadá, ale balíčkovací systém z toho nebyl 2× nadšen a neustále chtěl „řešit problém“ stylem upgrade enchant zpět na verzi 1.5 nebo odstraněním Abiwordu, Geditu a asi 20 dalších balíčků, která závisely na těchto dvou. Abiword i Gedit se zdají být v pořádku, nic nepadá, kontrola pravopisu rovněž funguje, jen ten doslova zablokovaný balíkovací systém, dokud problém se závislostmi nevyřeším.
S Debianim balíčky si nijak extra netykám. Na hraní/experimentování mám Gentoo a po *buntu chci, ať funguje. Jestli jde problém vyřešit nějak slušně ně úrovni balíčkovacího systému netuším a číst sáhodlouhý manuál či dlouhatánské seriály a o apt se mi už nechtělo, měl jsem toho už v tuto chvíli tak akorát. Zkusil jsem proto udělal příšernou zvrhlost, ale pomohla mi a vím o ní, takže to jsem časem snadno schopen uvést do původního stavu.
Stáhl jsem enchant 1.4.2, přejmenoval ho na 1.5 a sestavil balíček, který jsem šoupl do systému. Balíčkovací systém je spokojen, protože si myslí, že má svoji verzi 1.5. Programy, které trvaly na tom, že musí mít verzi 1.5 mi fungují také a navíc mám funkční kontrolu pravopisu v Sylpheedu. Prasečina je to samozřejmě nehorázná, takže si ani nedovolím něco takového zveřejnit, aby náhodou nějaký zoufalec tento balíček zde nevygooglil a nesnažil se jej použít v domnění, že jde fakt o verzi 1.5. Taky jsem mohl samozřejmě upravit pár balíčku, aby netrvalo na 1.5, ale spokojilo se s 1.4.2, ale tohle byl balíček jediný a tedy méně práce.
Proč to celé vlastně píšu? Za prvé by mne zajímalo, jak to má probíhat správně a pak hlavně, kdyby někdo řešil podobný problém. Mé řešení je asi oprava vybitého okna igelitovým sáčkem a izolepou, ale možná padne něco zajímavějšího v diskusi.
Když se tedy vrátím k správnému postupu, první krok by zcela jistě měl spočívat v kontaktování autora, ale Google mi na dotaz bugzilla na webu Sylpheedu nenašel jen něco v Japonštině a navíc nevěřím, že by o dva a půl měsíce staré záležitosti autor nevěděl a nikdo dřív ho nekontaktoval, ale ještě to zkusím napravit. Docela by mne však zajímalo, jak tyhle stavy řešit na úrovni balíčkovacího systému Debianu. Můžu mu v podobné situaci nějak říct, ať se pro konkrétní případ vykašle na závislosti a dá mi svatý pokoj?
Nedavno som riesil nieco podobne, nie sice v ramci Debianu, ale princip by mal byt rovnaky. Po upgrade libjpeg na verziu 7 mi zacal Amarok umierat na segfaultom a downgrade kniznice zasa odpalil par programov kompilovanych na v7.
Vyriesil som to vytvorenim noveho balicka "libjpeg6" obsahujuceho len "/usr/lib/libjpeg.so.62," prekompilovanim Amaroku (ten si stejnak kompilujem sam) a nastavenim jeho balicka tak, aby vyzadoval balik "libjpeg6."
Když jsem někdy potřeboval do Debianu dostat novější verzi balíku (Git 1.6 na lenny, mdadm ze sidu na squeeze, aby nekonfliktil s udevem, ...), většinou pomohlo přeplácnout starší balík novějším přes dpkg. V případě takového LVM to až tak snadné nebylo, na to aplikuji metody použitelné i místo této "prasečinky".
V případě, že jde o jednu samostatnou aplikaci, tak stáhnu tarball se zdrojovými kódy a nainstaluji do /usr/local, doufajíc, že v Makefile je i "uninstall" target - pokud není, tak separátní prefix. Když jsou problémy s verzemi knihoven, prostě stáhnu tarbally novějších, upravím LDPATH a provedu statický link. Jako dočasné řešení to zatím vždy stačilo.
V případě knihoven, na kterých závisí debianí balíky (jako tento případ) buď upravím LDPATH, nebo novější verzi přeplácnu tou starší, na úrovni souborů. Balíčkovací systém nic netuší a pokud aplikace šlapou v pořádku, není problém. Až je chyba opravena, stačí si vynutit reinstalaci balíku s knihovnou a nová verze přeplácne moje nakopírované soubory. Je to možná elegantnější, než tvořit vlastní balíček.
Tak uprav balickovaci system aby se tohle stat nemohlo:)..navic vyvojari tezko pocitali s tim ze by nekdo pridaval baliky jinak verzovane nez ve skutecnosti jsou..navic kdyby ta prasarna jak rikas nefungovala tak problem neviresis a musel bys pridat repozitar s verzi 1.5..vyvoj tehle veci je slozitej a vyvojari nejsou nadlidsi aby mohli myslet na vse
Navic jsem celkem rad ze v linuxu se da spoustu veci obejit..protoze ve vin jsou akorat 2 pripady..program prestal pracovat atd kontaktujte atd..nebo instalace aplikace se nezdarila kontaktujte atd..a neudelas nic:)..navic skoro vsechen soft je placenej takze tezko budes nekoho kontaktovat ze ti nejde crackla verze
Uvazoval jste o pouziti Claws Mail namisto Sylpheedu? Je to v podstate to same, protoze to je fork Sylpheedu, ktery se oddelil jiz pred par lety. Ma tusim vetsi vyvojarskou zakladnu, coz neni slozite, protoze Sylpheed byl a asi porad jeste je projekt jednoho cloveka. Pokud tedy nepotrebujete lepsi podporu japonstiny, nevim, co vas na Sylpheedu drzi. I kdyz i do Claws Mail se nejaka ta bota muze vloudit, jako treba plugin Cachesaver, ktery do Ubuntu 9.04 nacpali ze stare nekompatibilni verze a navzdory bug reportum se to nikdo neobtezoval opravit. Za to ale nemuzou vyvojari Claws Mail, ale ten, kdo sestavil balicky. Jak je na tom nove Ubuntu zatim nevim, prave se upgraduje.
Možností je vícero, ale žádná není úplně dobrá, např.:
1. Přikompilovat k Sylpheedu starší knihovnu staticky.
2. Použít LD_LIBRARY_PATH při spouštění Sylpheedu.
3. Vytvořit si vlastní balíček se starší verzí knihovny a změnit závislost Sylpheed balíčku.
Možnosti, které obcházejí balíčkovací systém jsou jednodušší, ale méně košer. Pokud bych si měl vybrat, zkusil bych možnost 1 vzhledem k tomu, že balíček stejně kompiluješ sám. Jedná-li se o pár osamělých balíčků, dá se to překousnout. Překrytí knihovny starší verzí bych nedoporučoval, může zbořit ostatní programy.
Pro upravu zavislosti v deb baliccich jsem nasel krasny skript - upravte a pouzivejte dle libosti :)
#!/bin/bash
EDITOR=gedit
if [[ -z "$1" ]]; then
echo "Syntax: $0 debfile"
exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -rf "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -rf "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
$EDITOR "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -rf "$TMPDIR"
Snad se to sem vleze...
Autor pracuje ve společnosti spravující počítačové sítě a používá Gentoo. Má rád otevřená řešení, pořádek v systému a sklenici vychlazeného piva.
Přečteno 28 875×
Přečteno 16 470×
Přečteno 13 334×
Přečteno 12 678×
Přečteno 10 636×