Internet

    Update Baculi

    Wykonałem update baculi z wersji 2.4.4 do 3.0.2 z pkgsrc. Restart całości spowodował brak mozliwości podłączenia sie do konsoli zarówno na serwerze jak i z klienta. /etc/rc.d/bacula status pokazywała jedynie że file demon i storage demon działają natomiast director nie. Żadnych logów jednak nie ma. Reinstaluję ręcznie, taka sama sytuacja. Odinstalowuję i instaluję jeszcze raz od zera – taka sama sytuacja. Czytam wszystkie komunikaty, między innymi ten:

    If you’re upgrading to bacula-3.0.2 from 1.38.x or earlier, you MUST
    recreate your catalog database or upgrade your old database using the
    /usr/pkg/libexec/bacula/update_bacula_tables script. Later updates will
    not require upgrading the database again.

    Jak widać nie kwalifikuję się na update tabel. Na wszelki wypadek jednak odpalam ten skrypt po uprzednim lekkim poprawieniu z:

    #!/bin/sh
    #
    # This routine alters the appropriately configured
    # Bacula tables for PostgreSQL, MySQL, or SQLite.
    #
    if test xsqlite = xmysql -o xsqlite3 = xmysql ; then
    echo "Altering SQLite tables"
    /usr/pkg/libexec/bacula/update_mysql_tables $*
    fi
    if test xmysql = xmysql ; then
    echo "Altering MySQL tables"
    /usr/pkg/libexec/bacula/update_mysql_tables $*
    fi
    if test xpostgresql = xmysql ; then
    echo "Altering PostgreSQL tables"
    /usr/pkg/libexec/bacula/update_postgresql_tables $*
    fi

    aby nie było:

    Altering MySQL tables

    This script will update a Bacula MySQL database from version 10 to 11
    which is needed to convert from Bacula version 2.0.x to 3.0.x or higher

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    Update of Bacula MySQL tables failed.

    (Jak widać komunikat o konieczności udate’u nadal mnie nie dotyczy)

    na

    #!/bin/sh
    #
    # This routine alters the appropriately configured
    # Bacula tables for PostgreSQL, MySQL, or SQLite.
    #
    if test xsqlite = xmysql -o xsqlite3 = xmysql ; then
    echo "Altering SQLite tables"
    /usr/pkg/libexec/bacula/update_mysql_tables $*
    fi
    if test xmysql = xmysql ; then
    echo "Altering MySQL tables"
    /usr/pkg/libexec/bacula/update_mysql_tables -uroot -p bacula$*
    fi
    if test xpostgresql = xmysql ; then
    echo "Altering PostgreSQL tables"
    /usr/pkg/libexec/bacula/update_postgresql_tables $*
    fi

    i w końcu po chwili:

    Altering MySQL tables

    This script will update a Bacula MySQL database from version 10 to 11
    which is needed to convert from Bacula version 2.0.x to 3.0.x or higher


    Enter password:

    Update of Bacula MySQL tables succeeded.

    Następnie restart baculi i … tadam ! Wszystko ruszyło tak jakby sie nic nie działo!

    Wiadomo, że telewizja kłamie, ale żeby dokumentacja?

    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    In English

    Dependencies madness

    Time to time comes need to update whole bunch of pkgs in NetBSD. Dealing with pkg_rolling-replace (which is very good script to update packages) I’ve found that sometimes it won’t update package when its dependencies are broken or missing. Unfortunettly I had some of this things like:

    WARNING: No devel/p5-Compress-Zlib/Makefile - package moved or obsolete?
    WARNING: No devel/p5-IO-Compress-Base/Makefile - package moved or obsolete?
    WARNING: No devel/p5-IO-Compress-Bzip2/Makefile - package moved or obsolete?
    WARNING: No devel/p5-IO-Compress-Zlib/Makefile - package moved or obsolete?
    WARNING: No net/p5-INET6/Makefile - package moved or obsolete?

    or:

    security/py-denyhosts - py25-denyhosts-2.6nb2 missing
    textproc/py-xml - py25-xml-0.8.4nb2 missing

    The simplest way to resolve this is pkg_delete it, but when package is depend of other package or other package depend on missing package it’s hard to tell what You can delete first.

    With help may come two packages:

    pkgtools/pkgdepgraph: Visual representation of installed NetBSD packages
    graphics/graphviz: Graph Drawing Programs from AT&T Research and Lucent Bell Labs

    First, You have to generate file with Your installed packages:

    pkgdepgraph > pkg

    Then plot nice graph in png format:

    dot pkg -Tpng -o graph.png

    And here it is, my personall dependencies hell ;) (You have to view it in full size, becouse it’s to detailed to gave nice thumbnail – 2,5 MB PNG:)

    NetBSD's packages dependencies graph
    NetBSD's packages dependencies graph




    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    Job / Praca

    Update NetBSD do wersji 4.0_STABLE

    W końcu przyszedł czas aby się ustabilizować. W tym krótkim howto postaram się dość szczegółowo opisać jak to wykonać i nie strzelić sobie w stopę a jak już się strzeli jak się połatać.

    W moim przypadku upgrade był przeprowadzony z systemu z gałęzi -current do -stable a konkretnie z 4.99.32 do 4.0_STABLE.

    Zaczynamy od ściągnięcia źródeł systemu odpowiedniej gałęzi.

    Wchodzimy do /usr

    cd /usr/

    Ustawiamy w jaki sposób będziemy łączyć się z serwerem cvs

    setenv CVS_RSH ssh
    setenv CVSROOT :ext:anoncvs@anoncvs.NetBSD.org:/cvsroot

    I ściągamy (w katalogu /usr!) źródła

    cvs checkout -r netbsd-4 -P src

    jeśli pominiemy -r netbsd-4 ściągniemy gałąź -current, możemy się także cofnąć do netbsd-3 (nie polecane :). Po całej operacji mniej lub bardziej czasochłonnej w katalogu /usr/src będziemy mieli wszystkie źródła potrzebne do budowy systemu. Jeśli masz kiepskie połączenie z Internetem możemy dodać po cvs flagę -zx gdzie x to liczba od 1 do 9 określająca stopień kompresji. Pamiętać należy jednak, że kompresja po stronie serwera dość poważnie go obciąża.

    Możemy sprawdzić czy ściągnęliśmy dobrą wersję wykonując skrypt osrelease.sh w katalogu /usr/src/sys/conf/

    cd /usr/src/sys/conf/
    sh osrelease.sh
    4.0_STABLE

    Wszystko gra.

    Teraz musimy przygotować katalogi do budowy systemu, /usr/tools i /usr/obj są obligatoryjne i kiedy ich nie ma budowa systemu nie zostanie przeprowadzona, build.sh powinien je stworzyć ale dla pewności lepiej zadbać aby były dostępne dla systemu. katalog gdzie faktycznie będą przechowywane setsy po budowie jest dowolny w moim przypadku nazywa się tak jak wersja NetBSD – /usr/4.0_STABLE

    mkdir /usr/tools /usr/obj /usr/4.0_STABLE

    Teraz zbudujemy sobie toolsy czyli narzędzia do budowy NetBSD. build.sh jest oczywiście na tyle sprytny, że sprawdza czy w systemie są odpowiednie narzędzia i jeśli ich nie ma to je buduje i korzysta z nowych, ale oczywiście na tym etapie mogą także pojawić się nieprzewidywane trudności więc dla pewności wskażemy konkretny katalog i powiemy co build.sh ma budować:

    cd /usr/src/
    ./build.sh -T /usr/tools/ tools

    Zależnie od szybkości naszej maszyny, może to potrwać od kilku minut to kilku godzin.

    U mnie na p3 500 Mhz i 256 Mb ram toolsy jak widać budowały się godzinę z kilkoma minutami.

    ===> Tools built to /usr/tools
    ===> build.sh ended: Fri Dec 21 15:04:39 CET 2007
    ===> Summary of results:
    build.sh command: ./build.sh -T /usr/tools/ tools
    build.sh started: Fri Dec 21 13:58:46 CET 2007
    NetBSD version: 4.0_STABLE
    MACHINE: i386
    MACHINE_ARCH: i386
    Build platform: NetBSD 4.99.32 i386
    HOST_SH: /bin/sh
    No /usr/tools/bin/nbmake, needs building.
    Bootstrapping nbmake
    TOOLDIR path: /usr/tools
    DESTDIR path: /usr/src/destdir.i386
    RELEASEDIR path: /usr/src/releasedir
    Created /usr/tools/bin/nbmake
    makewrapper: /usr/tools/bin/nbmake-i386
    Updated /usr/tools/bin/nbmake-i386
    Tools built to /usr/tools
    build.sh ended: Fri Dec 21 15:04:39 CET 2007
    ===> .

    Po wybudowaniu toolsów możemy zbudować sobie system:

    ./build.sh -D /usr/4.0_STABLE -O /usr/obj -T /usr/tools -u build

    ===> Successful make build
    ===> build.sh ended: Fri Dec 21 21:53:03 CET 2007
    ===> Summary of results:
    build.sh command: ./build.sh -D /usr/4.0_STABLE -O /usr/obj -T /usr/tools -u build
    build.sh started: Fri Dec 21 15:07:38 CET 2007
    NetBSD version: 4.0_STABLE
    MACHINE: i386
    MACHINE_ARCH: i386
    Build platform: NetBSD 4.99.32 i386
    HOST_SH: /bin/sh
    TOOLDIR path: /usr/tools
    DESTDIR path: /usr/4.0_STABLE
    RELEASEDIR path: /usr/obj/releasedir
    makewrapper: /usr/tools/bin/nbmake-i386
    Updated /usr/tools/bin/nbmake-i386
    Successful make build
    build.sh ended: Fri Dec 21 21:53:03 CET 2007
    ===> .

    A po wybudowaniu systemu potrzebujemy jeszcze kernel zgodny z wersją naszego NetBSD który będziemy instalować. Najlepiej jest zbudować oczywiście GENERIC, ale możemy oczywiście go trochę zmodyfikować (np. poprzez dodanie PF który nie jest domyślnie kompilowany)

    vim sys/arch/i386/conf/GENERIC
    (oczywiście dla innych architektur trzeba zmienić katalog określający architekturę np amd64, sparc, sparc64 itp.)

    Kernel możemy wybudować następnie tak jak stara szkoła karze, poprzez config, make depend, make, make install, ale build.sh również pozwala nam go budować więc użyję właśnie tego narzędzia:

    ./build.sh -O /usr/obj -T /usr/tools -u kernel=GENERIC
    ===> Kernels built from GENERIC:
    /usr/obj/sys/arch/i386/compile/GENERIC/netbsd
    ===> build.sh ended: Fri Dec 21 23:00:27 CET 2007
    ===> Summary of results:
    build.sh command: ./build.sh -O /usr/obj -T /usr/tools -u kernel=GENERIC
    build.sh started: Fri Dec 21 21:58:15 CET 2007
    NetBSD version: 4.0_STABLE
    MACHINE: i386
    MACHINE_ARCH: i386
    Build platform: NetBSD 4.99.32 i386
    HOST_SH: /bin/sh
    TOOLDIR path: /usr/tools
    DESTDIR path: /usr/obj/destdir.i386
    RELEASEDIR path: /usr/obj/releasedir
    makewrapper: /usr/tools/bin/nbmake-i386
    Updated /usr/tools/bin/nbmake-i386
    Building kernel without building new tools
    Building kernel: GENERIC
    Build directory: /usr/obj/sys/arch/i386/compile/GENERIC
    Kernels built from GENERIC:
    /usr/obj/sys/arch/i386/compile/GENERIC/netbsd
    build.sh ended: Fri Dec 21 23:00:27 CET 2007
    ===> .

    Po wybudowaniu kernela musimy jeszcze tylko go podmienić backupując nasz stary (i działający ! ;) kernel.

    mv /netbsd /onetbsd3
    mv /usr/obj/sys/arch/i386/compile/GENERIC/netbsd /

    Teraz jesteśmy gotowi na reboot i sprawdzenie czy nowy kernel podniesie nam system (błędami przy starcie usług na razie się nie przejmujemy)

    Pamiętaj, rebootuj system poprzez shutdown -r now a nie reboot, ponieważ shutdown prawidłowo stopuje usługi z /etc/rc.conf

    System wstał (mam nadzieję, że u Ciebie też :). Większość usług u mnie nie odpaliło się, ale np NAT z PF działał. Możemy więc zainstalować nowy system:

    ./build.sh -D /usr/4.0_STABLE -O /usr/obj -T /usr/tools -u install=/

    make installworld started at: Fri Dec 28 10:12:33 CET 2007
    make installworld finished at: Fri Dec 28 10:17:43 CET 2007
    ===> Successful installworld to /
    ===> build.sh ended: Fri Dec 28 10:17:44 CET 2007
    ===> Summary of results:
    build.sh command: ./build.sh -D /usr/4.0_STABLE/ -O /usr/obj -T /usr/tools -u install=/
    build.sh started: Fri Dec 28 10:12:29 CET 2007
    NetBSD version: 4.0_STABLE
    MACHINE: i386
    MACHINE_ARCH: i386
    Build platform: NetBSD 4.0_STABLE i386
    HOST_SH: /bin/sh
    TOOLDIR path: /usr/tools
    DESTDIR path: /usr/4.0_STABLE
    RELEASEDIR path: /usr/obj/releasedir
    makewrapper: /usr/tools/bin/nbmake-i386
    Updated /usr/tools/bin/nbmake-i386
    Successful installworld to /
    build.sh ended: Fri Dec 28 10:17:44 CET 2007
    ===> .

    Została jeszcze jedna rzecz, należy przeprowadzić update plików konfiguracyjnych, wydajemy polecenie etcupdate i uważnie (bardzo!) sprawdzamy o co nas pyta system. Polecam przekopiowanie /etc w bezpieczne miejsce! Mamy do wyboru kilka opcji przy każdym pliku. Najwazniejsze do i – install i d – don’t install. Wszystkie pliki, w których nie przeprwadzaliśmy zmian możemy śmiało zainstalować, tak samo wszystkie pliki które oznaczone są jako missing. Należy zwrócić szczególną uwagę na pliki z uzytkownikami i grupami, ponieważ jeśli nie opacznie damy install to zostaną zainstalowane czyste pliki tak jak po świeżej instalacji i nie będziemy mogli się zalogować ponieważ nasz uzytkownik nie będzie istniał.

    etcupdate

    Po etc update przeleci postinstall i powie co się udało a co nie i podpowie jakie komendy należy uruchomić aby pozbyć się niepotzrebnych rzeczy typu obsolete.

    Po zakończonej operacji dajemy shutdown -r now i teoretycznie wszystko powinno działać. Teoria jednak mija się z praktyką i np u mnie wymagane było przeinstalowanie niektórych aplikacji (perl, mysql). To jest jednak dosyć proste do wykonania gorzej kiedy po etcupdate dostajemy błąd, że nie odnaleziono libc.so.12 co skutkuje brakiem możliwości zrobienia czegokolwiek łącznie z zalogowaniem się lub chociażby ls. A po restarcie dostajemy kernel pannic z powodu init died…

    man init nie podaje nam wesołych wiadomości:

    The role of init is so critical that if it dies, the system will reboot
    itself automatically. If, at bootstrap time, the init process cannot be
    located, the system will panic with the message ``panic: init died
    (signal %d, exit %d)''.

    Powodem tego jest to, że kernel przy starcie zna jedynie partycję / i w pierwszej kolejności odpala init który dalej inicjuje pozostałe partycje, i odpala skrytpty rc.d. Z koleii init do działania potzrebule /lib/lib.co.12 oraz /libexec/ld.elf_so. Jeśli z jakichś powodów nie może ich zlokalizować dostejemy init died. Plik /lib/lib.co.12 jest linkiem do innego pliku:

    lrwxr-xr-x 1 root wheel 14 Dec 21 15:53 libc.so.12 -> libc.so.12.149

    Ja upgreadując z gałęzi -current miałem zamiast libc.so.12.149 plik libc.so.12.150, a libc.so.12 nie zlinkował się prawidłowo z plikiem od 4.0 stąd problem.

    Najprostrzym rozwiązaniem tego problemu jest wybootowanie z płyty instalacyjnej NetBSD i z menu narzędziowego uruchomienie /bin/sh, nastepnie podmontowanie / i stworzenie właściwego linku, lub też oprócz podmontowania / podmontowanie /usr (jeśli jest na innej partycji) i przekopiowanie całego /usr/4.0_STABLE/lib na miejsce /lib. Po takim zabiegu system wstał bez żadnego problemu.

    Koniec stabilizacji, all done, bye bye ;)



    Job / Praca

    Nie masz kłopotu, zrób sobie Gutsy.

    Zachciało mi się podrasować moje idealnie działające Ubuntu Feisty (7.04) do Gutsy (7.10) czyli wersja current (lub development w nazewnictwie Ubuntu), no i mam… Po przeszło półtorej godzinie ściągania ponad tysiąca pakietów (sic!) które zajmowały 1006 MB (sic!x2) oraz ostatecznym reboocie, system wstał i już od początku coś nie pasowało. Co prawda ekran logowania do Gnome został oszczędzony ale fonty zmniejszyły się znacznie i zrobiły się po prostu brzydkie. No i nie ma tamtamów na początku tylko systemowy beep. Po zalogowaniu, dźwięku powitalnego również brak, radia Internetowe, youtube itd. działają bez problemu (wtf?). Oczywiście trójwymiarowego desktopu już także się pozbyłem, ale był to jeden z ficzerów Gutsego, że ma natywny compiz fusion. Odinstalowałem zatem nienatywnego, CTRL+ALT+BACKSPACE i… nic, standardowe metacity. Trochę zabawy z pakietami i w końcu znalazłem – GL DESKTOP w menu preferencje. Włączam i oczywiście klapa, zniknął pasek z desktopami i aplikacjami u dołu, wszystkie gadżety z okien tak że w ogóle nie idzie ich przesunąć. Obstawiłem emeralda, faktycznie nie posiadał żadnych thamesów, zgadnijcie co? Przycisk „Fetch GPL’ed themes” oczywiście nic nie fetchnął. Wgrałem jakieś pierwsze lepsze theme dla sprawdzenia, no trochę lepiej małe okienka mają obramowanie i gadżety i można je przesuwać i w dodatku żelują. Czyli compiz działa, ale dlaczego tak dziwnie? Dałem sobie spokój i chciałem zostać przy metacity, ale po zabiegach z emeraldem przy starcie od razu włącza się GL Desktop bez pasków , gadżetów itp. Pomaga jedynie odpalenie z terminala emerald –replace, wtedy pojawia mi się okienko od zarządzania GL Desktop gdzie go w końcu mogę wyłączyć, aarrgghhh! Nie wiem czy wersja development jest naprawdę tak kiepska jeszcze, czy mój sprzęt coś nie za bardzo chce współgrać z 7.10, ale nie polecam robić upgrade do niestabilnej wersji jeśli oczekujecie bez problemowego działania. Ja po dwóch dniach dochodzenia do ładu z samym desktopem nie mówiąc już o niektórych aplikacjach (Virtualbox) dałem sobie spokój i czekam na oficjalne wydanie (chyba za 14 dni od teraz) i instaluje od początku co i tak miałem zrobić aby pozbyć się partycji Windowsowych ;)

    Z przydatnych nowości – Gutsy sprawdza stan baterii, więc dowiedziałem się ze mam ją bardzo rozwaloną, life….

    Zesputa Bateria



    Wordpress

    WordPress 2.3

    Juhu! 2.3 w końcu jest i mój blog już biega na nowej wersji. Tym razem nie obyło się bez małego incydentu. Po wyłączeniu wszystkich pluginów, wgraniu nowej wersji na serwer oraz przeprowadzenia update’u bazy i sukcesywnym włączaniu pluginów w pewnym momencie całe menu wtyczek zniknęło… Oczywiście jest taka możliwość, że któryś plugin nie zadziała i po prostu należy go wyłączyć, ale tym razem taka możliwość została wyłączona wraz z włączeniem wtyczki, która spowodował białą stronę w menu dodatków. W pierwszym przypływie paniki próbowałem wyłączyć plugin bezpośrednio w MySQL’u niestety nie udało mi się. Następnie przejrzałem logi Apache i znalazłem:

    PHP Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 53109 bytes) in /home/cancer/public_html/wp-admin/includes/plugin.php on line 4, referer: http://maciejewski.org/wp-admin/plugins.php?activate=true

    Uff błąd PHP a nie WordPress’a i to trywialny do rozwiązania, zwiększyłem memory_limit = 8M do 32MB i wszystko zaczęło działać poprawnie. Trochę mnie jednak dziwi, że skrypt który zlicza popularność postów chciał użyć ponad 8 MB. Być może jednak standardowa wartość jak na dzisiejsze czasy jest trochę za mała. Póki co nie zaobserwowałem żadnych niedogodności.

    Z fajnych rzeczy, które na pierwszy rzut oka widać to natywne tagi (chociaż nie widać ich pod postami – muszę przejrzeć opcje czy trzeba je włączyć czy po prostu skórka nie obsługuje) i powiadamiacz o nowych pluginach (co prawda sam ich jeszcze nie instaluje tylko przenosi do strony skąd można pobrać najnowszą wersję ale dobre i to :)

    Jeśli doświadczyliście dzisiaj dziwnego zachowania się strony to teraz już wszystko powinno być w porządku. Zapraszam do odwiedzania i subskrybowania :)

    UPDATE: Aaa i właśnie podczas pisania tej notki wystąpił jeszcze jeden błąd – może się komuś przyda opis:

    Podczas pisania posta w momencie autosave pojawia się błąd bazy:

    WordPress database error: [Table 'cancerwp.wp_post2cat' doesn't exist]
    SELECT cat_ID AS ID, MAX(post_modified) AS last_mod FROM `wp_posts` p LEFT JOIN `wp_post2cat` pc ON p.ID = pc.post_id LEFT JOIN `wp_categories` c ON pc.category_id = c.cat_ID WHERE post_status = 'publish' GROUP BY cat_ID

    Co ciekawe google mówi, że nie jest to zapytanie WordPressa 2.3 :) Czyli jakiś plugin generuje taki błąd, chwila poszukiwań i jest winowajca – Google Sitemaps. Chwilow zmuszony jestem go wyłączyć i zaczekać na poprawioną wersję.



    Related Posts with Thumbnails
    Add your widget here