ubuntu icon

Nedávno Miguel de Icaza’s na svém blogu napsal článek o Paint-mono update. Protože Paint.NET je můj oblíbený kreslící nástroj a protože to podle screenshotu vypadalo docela dobře a tak jsem si řekl, že to vyzkouším v ubuntu.

První krok bylo stažení zdrojových kódu ze subversion a přeložení.

 svn co http://paint-mono.googlecode.com/svn/trunk/src paint-monocd paint-mono
 ./configure
 make
 make install

První problém byl, že v ubuntu 7.10 je jenom mono 1.2.4, se kterým to nefunguje. Tak jsem si stáhl instalátor (nedebianový balíček) nainstaloval, a potom už výše zmíněný postup fungoval docela dobře.

A protože jsem měl plno jiné práce, tak jsem si řekl, že ještě udělám debianový balíček a zkusím ho poslat na PPA.

Postup vytvoření balíčku byl následující:

  • Pomocí příkazu “dh_make” jsem vytvořil adresář “debian” se všemi potřebými soubory.
  • Upravil jsem debian/rules (aby se provedlo “./configure –prefix=/usr/bin” bez dalších parametrů)
  • Potom jsem upravil i ostatní soubory debian/changelog, debian/control, debian/copyright
  • pomocí příkazu “fakeroot debian/rules binary” jsem vyrobil debianový balíček
  • K poslání balíčku na ppa je potřeba vygenerovat si pgp klíče, veřejný klíč poslat na launchpad, kliknout na webu na tlačitko “vytvořit repository”, “stát se ubuntero”.
  • Potom uz se může vyrobit podepsaný balíček “debuild -S -sa”
  • Nakonec se ještě vytvoří “.dput.cf” se správnou konfigurací a pomocí příkazu “dput my-ppa ../paint-mono_3.0.53-8_source.changes” se balíček odešle do repozitory
  • Nakonec zůstává jenom počkat až příjde email, ve kterém je napsané jestli byl balíček přijat. A potom se můžete kochat jak se váš balíček překláda..

Všechno tohle je popsané v angličtině na launchpad.net. Další pěkný návod je na wiki Marka Fostera. Potom jsem se taky dozvěděl, že když něco nefunguje, tak správné místo, kde pokládat otázky je na irc serverch freenode v kanálu #launchpad.

Teď zbývá přidat si do “/etc/apt/sources.list” řádek:

 deb http://ppa.launchpad.net/xmlich02/ubuntu hardy main

a nainstalovat si balíček paint-mono a spustit.

 # gpg --keyserver keyserver.ubuntu.com --recv 0031238E
 # gpg --export --armor 0031238E |sudo apt-key add -
 sudo apt-get update
 sudo apt-get install paint-mono
 paintdotnet

Bohužel se mi nepodařilo zjistit jakým klíčem se podepisují balíčky s binárkami a taky se mi nepodařilo vyřešit závislosti balíčků, takže na ubuntu 7.10 to nebude bez ručně nainstalované poslední verze mona chodit. Instalabalíček by měl fungovat s Hardy Herronem (Ubuntu 8.04, momentálně ve verzi alpha 2) nebo s ručně nainstalovaným monem.

V ubuntu 8.04 je verze mona 1.2.5.1, se kterou se program spustí (jenom při ukončování programu vyskakují nějaké výjimky). Podle toho co píše Miguel ve svém blogu, tak potřeba alespoň mono 1.2.6.

Takže kdo má odvahu testovat, tak tomu přeju hodně štestí. Ty závislosti se pokusím časem nějak vyřešit.

Update:
Snažím se řešit problém se závislostmi balíčku, bohužel jediný způsob, na který jsem přišel je postupné přidávání balíčků metodou pokus-omyl, takže pokud máte někdo lepší nápad jak zjisit závislosti, tak sem s nimi. Dobrá zpráva je, že pokud se mi podaří vyřešit problémy se závislostmi, tak všem, kteří si balíček nainstalovali se provede přislušný update..
Typický příklad chybějícího balíčku je vyhození výjimky po kliknutí na “help” – “about”. Problém by mělo vyřešit nainstalování balíčků libmono-i18n1.0-cil a libmono-i18n2.0-cil.

Loading

By Jozef Mlích

Software Developer at GreyCortex, NemoMobile contributor, Micro light aircraft pilot, OpenAlt Conference organizer

5 thoughts on “Paint.NET v Ubuntu”
  1. Tedy.. pouze hnidopišská poznámka.Němělo by správně česky místo "debianový" balík (např. mdv2008 balíček) být něco jiného? Kupř. "debianní" zní složitě. Nebo "debianský"? Dle slova "marťan" -> "marťanský". Nebo neohýbat… Toť otázka.

  2. Debianový jako (např.) dubový; tahle slovotvorba mi nepřijde špatná. Napadá mě ještě třeba "debianovský".

  3. to [1],[2]: to je nádhera, jsem se vrhl na komentáře, že snad někdo odpověděl na blogerovu otázku ohledně závislotí balíčků.

    Ne, místo toho se tu řeší pravopis… Jestliže vás to tedy tak trápí, proč nenapíšete mail autorovi, když tak dobře umíte česky… Pro mě je v postu na blogu důležitá je informace, ne tvrdý nebo měký Y a podobně :( A pokud vás pravopis opravdu tolik trápí, proč to píšete sem do komentářů, udělejte s tím něco doopravdy, co takhle založit si blog o českém pravopisu.

    PS: pravopisné chyby v mém komentáři nehodlám řešit… psal jsem komentář, ne diplomku…

  4. ad závislosti: nedávno jsem narazil na příkaz "ldd".
    <code>
    $ ldd /usr/bin/sftp

    libresolv.so.2 => /lib/libresolv.so.2 (0xb7fc5000)
    libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0xb7ece000)
    libutil.so.1 => /lib/libutil.so.1 (0xb7eca000)
    libz.so.1 => /lib/libz.so.1 (0xb7eba000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xb7ea5000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7e78000)
    libc.so.6 => /lib/libc.so.6 (0xb7d68000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7d64000)
    /lib/ld-linux.so.2 (0xb7feb000)
    </code>

  5. [4] bohuzel kdyz dam

    $ ldd `which paintdotnet`
    not a dynamic executable

    a kdyz dam
    $ ldd `which mono`
    linux-gate.so.1 => (0xffffe000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7f43000)
    librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f3a000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7e8a000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e86000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7e6e000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e49000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cfa000)
    libselinux.so.1 => /lib/libselinux.so.1 (0xb7ce4000)
    /lib/ld-linux.so.2 (0xb7f60000)
    libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb7cbc000)
    libsepol.so.1 => /lib/libsepol.so.1 (0xb7c7b000)

    coz mi sice rekne co potrebuje ke spusteni virtualni stroj mona, ale nerekne mi to jake jsou v nem potreba knihovny mona. Dalsi vec je, ze to rekne jmeno knihovny, ale nerekne mi to ktery balicek k te knihovne patri, dalsim problemem je, ze v programu muze byt napriklad podmineny preklad pro vic platforem (typicky virtualni stroj je zavisly na baliccich pro danou platformu, ale programy v monu se daji spustit na vsech virtualnich masinach na vsech platformach).

    Nasel jsem napriklad nasledujici davku, ktera zjisti zavislosti programu a rekne ve kterem balicku dana knihovna je

    strace -f -o /tmp/log ./configure
    # or make instead of ./configure, if the package doesn’t use autoconf
    for x in `dpkg -S $(grep open /tmp/log|
    perl -pe ‘s!.* open("([^"]*).*!$1!’ |
    grep "^/"| sort | uniq|
    grep -v "^(/tmp|/dev|/proc)" ) 2>/dev/null|
    cut -f1 -d":"| sort | uniq`;
    do
    echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), ";
    done

    problemem je, ze to strace nezjisti "volani mona", takze nevim, ktere knihovny mona jsou potreba – problem se zavislosti na architekture uz jsem zminoval.

Comments are closed.