Kirjoittaja Aihe: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]  (Luettu 5442 kertaa)

tikola

  • Käyttäjä
  • Viestejä: 205
    • Profiili
Samba ja ääkkösongelma nyt seuraavasta näkökulmasta (olen koettanut hakea mutten ole tähän omaan tilanteeseeni löytänyt ratkaisua):

Ubuntu koneeni 9.04 hoitelee mediaserverin virkaa kotona. Siitä on tehty ulos jako samballa, josta sitten eri koneet soittelevat muusiikkia videoita tms.

smb.conf tiedostossa ääkköset on hoidettu seuraavalla tavalla:
dos charset = CP350
unix charset = ISO8859-1
display charset = ISO8859-1

Käytännössä tämän myötä verkon muut koneet (windows) näkevät ääkköset ongelmitta ja osaavat tuoda sinne ääkkösiä sisältäviä tiedostoja.

Nyt kun haluaisin ottaa backupin ubuntusta suoraan irtokovalevylle törmään neliö-kysymysmerkki yhdistelmiin. Käytännössä siis windows koneet näkevät ääkköset samban läpi hyvin, mutta ubuntu itsessään ei niitä näe. Tästä seuraa se, että backup ei onnistu koska merkistö sekoaa jne.

Olen tähän mennessä yrittänyt hakea ratkaisua muuttamalla esim. terminaalin merkkikoodausta ylävalikosta samaksi kuin tuossa smb.confissa käytetyt jne. mutta toistaiseksi vailla menestystä.

Mitenkäs tämä pitäisi hoitaa siten että samban kautta tulevat windows koneet ja omia hakemistojaan kurkkiva Ubuntu näkisivät ääkköset samoin ja oikein.


timo

ps. Ja ääkköset pois tiedostonnimistä ei ole ratkaisu minullekkaan vaikka sitä toki mahdollisuuksien mukaan toteutan. Haluan Itunesilla kuunneella Yö yhteyeen kappaletta Särkynyt Enkeli ja antaa Itunesin järjestellä hakemistot sen mukaan. En siis halua kuunnella Yo yhtyettä - ainakaan olettaen Olli Lindholmin laulavan.




« Viimeksi muokattu: 02.05.09 - klo:12.20 kirjoittanut tikola »

johnsmith

  • Käyttäjä
  • Viestejä: 35
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset
« Vastaus #1 : 30.04.09 - klo:14.08 »
Ubuntu ei näe "ääkkösiä" koska Ubuntun sisäinen merkistökoodaus on utf-8. ISO8859-1 on 8 bittinen merkistökoodaus ( 7 bittia perinteiselle ascii koodille ja ylimääräinen bitti sitten ääkkösille). Joka tapauksessa molemmat merkistökoodaukset ovat ascii yhteensopivia mutta ääkköset tallennetaan eri tavalla sen takia myös ainoastaan perinteiset merkit näkyy.

Ratkaisuna kokeilisin locale muuttujan määrittelemistä Ubuntussa kopioinnin ajaksi. Laittaa seuraavat rivit /var/lib/locales/supported.d/local tiedostoon loppuun "fi_FI.ISO-8859-1 ISO-8859-1" ja sen jäkeen komento "locale-gen". Sitten tarkistaa "locale -a" komennolla onko järjestelmässä uudet localet tarjolla. Sen jälkeen muutetaan  komentokehotteesta "export LC_ALL=fi_FI.iso88591" komennolla koodausta ja testaa ls komennolla näkyykö Särkynyt enkeli kunnolla. Jos näkyy niin voit cp komennolla samasta terminaalista kopioida tiedostoja ilman, että tarvitsee muuttaa koko järjestelmän merkistökoodausta vaikka senkin voi väliaikaisesti tehdä.  

Perus ongelma lienee kuitenkin siinä, että tiedostojen nimet on alunperin tallennettu 8 bittisen muotoon (niitä on kehitetty aikonaan satoja melkein kaikille kielille ennen unicodea). Kyllä windowsin pitäisi tukea unicodea (en tiedä miten on utf8 laita......) Tiedostojen nimiä ja tiedostojen sisältöa pystyy kyllä helposti siirtämään ISO koodauksesta unicodeen mutta en ole varmaa nyt tukeeko windows myös utf8 koodausta sen sisäinen koodaus pitäisi olla utf16. Joten todennäköisesti lopullisessa ratkaisussa on kaksi vaihtoehtoa joko käyttää Ubuntussa iso8859 koodausta tai muuttaa tiedostot utf8 muotoon mutta en tosiaan ole varmaa miten ne näkyy sitten windowsissa.
« Viimeksi muokattu: 30.04.09 - klo:18.15 kirjoittanut johnsmith »

tikola

  • Käyttäjä
  • Viestejä: 205
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]
« Vastaus #2 : 02.05.09 - klo:12.26 »
Kiitoksia

Loistavat ohjeet - kun vielä lisäsin tuohon sen että terminaalista vaihdoin merkistön enkodauksen kaikkien noiden em. vaiheiden jälkeen ISO8859-1:ksi niin johan alkoivat ääkkösetkin näkyä komentorivillä.

Olen törmännyt joskus aiemminkin tuohon UTF-16/UTF-8 selitykseen windowsin ja ubuntun välissä. Jotenkin tuntuisi että lopullinen ratkaisu saadaan sinä päivänä kun Ubuntu alkaa käyttää UTF-16 merkistökoodausta. Näin maallikon näkökulmasta siirtymä nykyisestä UTF-8 merkistöstä samaan UTF-16 merkistöön kuin windows käyttää tuntuisi loogiselta kehitysaskeleelta. Siis korvataan nykyinen merkistö saman merkistön 16 bittisellä versiolla...toki sinä päivän windows varmaan on ehtinyt jo 32 bittiseen versioon tai keksinyt jotain ihan muuta.

Mitenkäs Ubuntun merkistö muutetaan pysyvästi, kuten johnsmith tuossa sivulauseessa mainitsi?



timo

veekoo

  • Käyttäjä
  • Viestejä: 443
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]
« Vastaus #3 : 02.05.09 - klo:15.00 »
Näin maallikon näkökulmasta siirtymä nykyisestä UTF-8 merkistöstä samaan UTF-16 merkistöön kuin windows käyttää tuntuisi loogiselta kehitysaskeleelta. Siis korvataan nykyinen merkistö saman merkistön 16 bittisellä versiolla...toki sinä päivän windows varmaan on ehtinyt jo 32 bittiseen versioon tai keksinyt jotain ihan muuta.

Itse asiassa "oikea" vaihtoehto on juuri tuo UTF-8 ja se onkin Ubuntun oletusarvo. UTF-8 on merkkikoodaus, jolla pystyy esittämään kaikki Unicoden 100000 kirjoittuvaa merkkiä. Merkkikoodaus on vaihtuvamittainen: perusascii-merkit vievät yhden tavun (yhteensopiva vanhan ASCII:n kanssa), mm. ääkköset tarvitsevat kaksi tavua ja euromerkki 3 tavua. Hyvin tärkeää tuossa on yhteensopivuus perus-asciin kanssa.

UTF-16 on pohjimmiltaan 2-tavun merkkikoodaus samoille Unicode-merkeille. Se ei ole yhteensopivan vanhan ASCII-koodauksen kanssa ja vaatii tekstin talletukseen enempi tilaa. Ymmärtääkseni Windowsissakaan EI käytetä UTF-16-merkkikoodausta, koska siitä ei ole mitään erityistä hyötyä. Äkkisiltään väittäisin, että UTF-16 merkkikoodausta ei käytetä missään, korjatkaa jos tiedätte paremmin.

EDIT: http://en.wikipedia.org/wiki/UTF-16 tosiaankin sanoo, että Windows käyttää sisäisesti UTF-16 merkkikoodausta, joten unohtakaa tuo viimeinen osa. Se ei kuitenkaan ole mikään syy siirtyä Linuxissa tuohon merkkikoodaukseen, koska se ei ole miltään osin parempi kuin UTF-8.
« Viimeksi muokattu: 02.05.09 - klo:15.40 kirjoittanut veekoo »

johnsmith

  • Käyttäjä
  • Viestejä: 35
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]
« Vastaus #4 : 02.05.09 - klo:16.40 »
Veekoo on ihan oikeassa siinä, että utf 16 ei ole yhteensopiva yksitavuisen ascii koodauksen kanssa siitä syystä kun utf 16 pakottaa käyttämään 2 tavuista koodausta. Utf 8 pituus taas on muuttuva arvo 1 tavusta (yhteensopiva asciin kanssa) - peräti vissin 6 tavuun asti. Kuten kaikki tiedämme niin Linuxissa käytetään 1 tavuista ascii koodia järjestelmätiedostoissa joten utf 16 ei kelpaa.

Mitä tulee tähän aiheeseen niin ongelmana on se, että tiedostot on tallennettu iso8859 muotoon. Tietysti voidaan muuttaa tiedostojen nimet "convmv" ohjelmalla varsin pienellä vaivalla utf8 muotoon (sekä tekstitiedostojen sisältö iconv ohjelmalla) ja sen jälkeen muokata smb.conf koodisto asetukset semmoisiksi:
unix charset = UTF-8
display charset = ISO8859-1

Samban pitäisi sittten muuttaa lennossa tiedostojen nimet UTF-8 - iso8859 muotoon ainakin niin sanotaan ohjeissa :)
Nyt pitäisi tiedostojen näkyä niin sisäisesti kuin ulkoisestikin.........
Tosiaan en ole itse livena tätä kokeillut. Minulla pyörii myös samba multimediapalvelin mutta se on ollut sellaisenaan 4-5 vuotta ja sisäinen merkistökoodaus on myös iso8859.

Tosiaan en tiedä mitä tapahtuu sitten kun yö julkaise uuden albumin ja se kopioidaan windowsista sinne multimediapalvelimelle tallentaako samba sen sitten UTF-8 muotoon sisäisesti ? Mutta sitähän ei tiedä varmaan ennen kuin joku kokeilee.

veekoo

  • Käyttäjä
  • Viestejä: 443
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]
« Vastaus #5 : 04.05.09 - klo:13.35 »
Tämä ongelma on jo kerran merkitty ratkaistuksi, mutta minä haluan nyt kuitenkin esittää ratkaisuun eriävän mielipiteen. Ratkaisuni on seuraava:

!!!  Älkää koskeko niihin samban charset-asetuksiin ja kaikki toimii hyvin !!!

Oletuksena Windows ja Ubuntu käyttävät Unicode-merkistöä hakemistojen nimissä. Jos pakotatte Samban käyttämään (rajoitetumpaa) 8859-1 -merkistöä, niin sitten joudutte viilaamaan (turhaan) Linuxin locale-asetuksia tuohon ISO8859-1 -merkistöön.

Samban-3:n oletukset näiltä osin ovat seuraavanlaiset ja nämä ovat voimassa ellei niitä asetuksia mene itse muuttamaan (rikkomaan). Tärkein asetus tiedostonimien osalta on "unix charset".

smb.conf
Koodia: [Valitse]
        dos charset = CP850
        unix charset = UTF-8
        display charset = LOCALE

Jos tiedostopalvelimella on asetus "unix charset = ISO8859-1" ja sen muuttaa muotoon "unix charset = UTF-8", niin sillä ei valitettavasti ole vaikutusta levyllä jo oleviin tiedostoihin. Niille tiedostonimille joutuu jotenkin tekemään ISO8859-1 -> UTF-8 muunnokset.

tikola

  • Käyttäjä
  • Viestejä: 205
    • Profiili
Vs: Ubuntu ja Samban tuomat ääkköset [RATKAISTU]
« Vastaus #6 : 05.05.09 - klo:12.37 »
Ääni minulta tälle viimeisimmälle ratkaisulle. Muutin smb.confin tuon mukaiseksi ja uusi ääkkösin varustettu tiedosto näkyi erinomaisesti sekä windowsissa samban takana että ubuntussa paikallisesti ääkkösin. Tuollaiset säilytä kaikki oletusarvoilla ratkaisut ovat aina niitä kaikkein parhaita ratkaisuja. Tosin  väitän että kun muutama vuosi sitten konffasin mediapalvelimen pystyyn silloisilla oletusarvoilla homma ei pelannut. Taisi olla Ubuntu 6.xx aikaa.

Nyt siis seuraavaksi alan opetella tuota convmv komennon käyttöä ja kerään rohkeuteni kokoon etten tule tehneeksi mitään peruutamatonta.



timo

tikola

  • Käyttäjä
  • Viestejä: 205
    • Profiili
Ensin smb.conf kuten veekoo sanoi

**************
dos charset = CP850
unix charset = UTF-8
display charset = LOCALE
*******************

Ja sitten perään komento

"convmv -f iso8859-1 -t utf-8 -r --notest *"

ja voila - kaikki toimii halutulla tavalla, mukaanlukien hakemistojen nimet, jotka ensin hieman arveluttivat.

conmv man sivulla puhuttiin että nyt lopultakin samba 3 osaa utf-8 koodatut nimet. Olisiko siis alkuperäinen ongelma ollut se että olen kasannut oman samban ennen versiota 3 ja silloin aikanaan noita kikkailuja tehtiin. Uudessa versiossa kuten veekoo totesi ei näköjään tarvitse tehdä mitään vaan oletusarvoille varustettu smb.conf kelpaa.


timo

ps, Nyt sitten vielä toinen ubuntu, joka yrittää liittyä samaan samba jakoon näkee nauravia naamoja ja kommentoi dolpinissa "invalid encoding" - onneksi tässä on jotain muitakin harrastuksia välissä ettei ihan jokapäivä tarvitse ratkoa näitä encoding asioita eri koneilla.
« Viimeksi muokattu: 07.05.09 - klo:11.20 kirjoittanut tikola »