Tezave pri zagonu PostgreSQL 8.1

Zivjo!

Sem povsem frisen uporabnik Ubuntuja, natancneje Xubuntuja. Zelel sem na racunalnik namestiti PostgreSQL v8.1, za potrebe lokalnega spletnega streznika s PHPjem ter podporo za podatkovno bazo. Za namestitev sem uporabil Synaptic. PostgreSQL se lepo prenese, namesti, ko bi se pa moral zagnat, sem fasal tole napako:
$ sudo /etc/init.d/postgresql-8.1 start
* Starting PostgreSQL 8.1 database server
* Error: Could not parse locale out of pg_controldata output [fail]

Problem je bil v skripti /usr/share/postgresql-common/init.d-functions, natancneje v funkciji do_ctl_all(). Resil sem ga tako, da sem znotraj for zanke vse pojave "$c/[direktorij ali datoteka]" zamenjal z "$c/main/[direktorij ali datoteka]". Po tej spremembi ob poskusu zagona fasem izpis, da se je zagon uspesno izvrsil.

Kar me v bistvu zanima je, ce morda lahko se kdo to preveri, ce je pri njem enak problem ob namestitvi PostgreSQLa 8.1. Kolikor sem googlal, nisem nasel kaj dosti koristnih informacij, povsem mozno pa je, da sem narobe googlal. Tudi iskanje po temle forumu po "pgsql" in "postgres" ni kaj dosti rezultatov vrnilo.

Ne glede na izpis, da se je PostgreSQL zagnal, zadeva ne laufa, zakaj ne moram se zgruntat, se pa vnaprej zahvaljujem za vsakrsno pomoc tudi glede tega.

Komentarji

  • bl4z Član Ubuntu.si
    jaz sm namescal pg 8.1 na 6.06 ta ponedeljek in je slo brez probelemov. ampak ta could not parse locale ima ziher zvezo neki z jezikom. A imas slucjano nastavljen slovenski jezik ?? .. presalti na usa pa probi se 1x
    apt-get install localeconf

    Select locales to install (e.g. en_US ISO-8859-1) and select the standard locale (e.g. en_US).

    You will be asked a few questions:

    Manage locale configuration files with debconf? <-- Yes
    Environment settings that should override the default locale: <-- do not select anything
    Replace existing locale configuration files? <-- Yes
    Default system locale: <-- e.g. en_US ISO-8859-1</div>
  • Aye, hvala. Ko sem nastavil sistemski jezik na anglescino, je slo skozi ok, baza deluje.

    Kaj pa, ce ne zelim imeti anglescine za privzeti jezik? Racunalnik namrec usposabljam za sorodnika, na njej bo tekla ena preprosta web aplikacija, uporabnik pa je izrazil zeljo, da bi bilo cimvec zadev v slovenscini. Zato zelim, da je default pac sl_SI. Malce cudno, da se spremeni privzeti sistemski jezik, pa se baza ne more zagnat?
  • Stvar je taksna. Ob poskusu zagona PostgreSQL serverja preko /etc/init.d/postgresql-8.1 skripte se med drugim parsa output ukaza "/usr/lib/postgresql/8.1/bin/pg_controldata /var/lib/postgresql/8.1/main" (oz. namesto "8.1/main " ustrezna kombinacina verzije in imena gruce).

    Ce nastavim default sistemski jezik na en_US, je output (prilepil bom le vrstici, ki se ju dejansko gleda) taksen:
    LC_COLLATE:                           sl_SI.UTF-8
    LC_CTYPE: sl_SI.UTF-8

    Ce pa je sl_SI, pa je output taksen:
    LC_COLLATE ............................ sl_SI.UTF-8
    LC_CTYPE .............................. sl_SI.UTF-8

    In tiste pike vmes povzrocijo, da regularni izraz, ki bi naj iz outputa izluscil podatke, pogrne. Zato tudi zgoraj omenjeni error.

    What gives? Je to stvar prevoda oz. od kod se stvorijo tiste pike? Omenjeno parsanje se opravlja v "/usr/share/postgresql-common/PgCommon.pm", v funkciji get_cluster_locales. Nimam namescenih drugih jezikov na sistemu razen anglescine in slovenscine, da bi preveril, kako je s tem pri drugih jezikih. Zaenkrat bom predelal regularni izraz, ki isce nastavitve jezika, da bo deloval prav tudi za slovenski jezik oz. kaj manj elegantnega, kot npr. hard-codal noter vrednosti :)
  • Menda bo skrajni cas, da pocasi neham morit :)
    Kolikor sem gledal po izvorni kodi za PostgreSQL 8.1.4, je problem samo in edino v slovenskem prevodu PostgreSQLa. Slovenski prevajalec je edini, ki je uporabil sledec prevod:
    msgid \"LC_CTYPE:                             %s\n\"
    msgstr \"LC_CTYPE .............................. %s\n\"

    Ostali prevajalci so vsi uporabili
    msgid \"LC_CTYPE:                             %s\n\"
    msgstr \"LC_CTYPE: %s\n\"

    In podobno za vse ostale izpise... Problem je torej dejansko v prevodu... Pri sebi sem resil problem tako, da sem v datoteki /usr/share/postgresql-common/PgCommon.pm popravil v funkciji get_cluster_locales vrstice 703-707 iz
            if (/^LC_CTYPE.*:\s*(\S+)\s*$/) {
    $lc_ctype = $1;
    } elsif (/^LC_COLLATE.*:\s*(\S+)\s*$/) {
    $lc_collate = $1;
    }

    v
            if (/^LC_CTYPE.*(:|\.{2,})\s*(\S+)\s*$/) {
    $lc_ctype = $2;
    } elsif (/^LC_COLLATE.*(:|\.{2,})\s*(\S+)\s*$/) {
    $lc_collate = $2;
    }

    Upam, da bo pomagalo se komu, ce bi kdo imel tezave s tem...
  • bl4z Član Ubuntu.si
    se bolje da kontaktiras prevajalca ter mu zadevo sporocis .. sigurno bo tvoj monolog prav prsu komu :P
Za komentiranje se prijavite ali pa se vpišite.