Debian "perl: warning: Setting locale failed."

Pagina: 1
Acties:

  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
Beste Tweakers,

Ik ben onlangs begonnen met het uitzoeken van Linux een vriend van mij raadde Debian aan. Tot nu toe is het allemaal positief en moet alleen nog even de flow erin krijgen.

Maar nu krijg ik dus als ik wat apt-get een melding die als volgt is:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LC_MESSAGES = "POSIX",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Nu heb ik uiteraard veel op Google gezocht en elke oplossing die hun voorschreven is het mij niet gelukt om deze melding weg te krijgen. Hieronder volgt een lijst wat ik allemaal heb ingevuld (staan op verschillende sites).
dpkg-reconfigure locales
locale-gen en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
Ik hoop dat jullie mij hiermee kunnen helpen!

Mvg,

FRGert

  • DutchNutcase
  • Registratie: Augustus 2005
  • Niet online

DutchNutcase

E = mc^2

De oplossing is verbazingwekkend simpel:

voeg toe aan /etc/environment:
code:
1
LC_ALL="en_US.UTF-8"


Even opnieuw inloggen en presto! het is gefixt.

Luctor et Emergo || specs


  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
DutchNutcase schreef op donderdag 13 februari 2014 @ 10:47:
De oplossing is verbazingwekkend simpel:

voeg toe aan /etc/environment:
code:
1
LC_ALL="en_US.UTF-8"


Even opnieuw inloggen en presto! het is gefixt.
Hmm simpel en het werkt! Bedankt voor de hulp! _/-\o_ _/-\o_

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 06-07 20:47

Hero of Time

Moderator LNX

There is only one Legend

Maar is niet de oplossing van het echte probleem. Haal die regel maar weer uit je /etc/environment. Wat je moet doen, is "dpkg-reconfigure locales" als root uitvoeren en de juiste default opgeven.

Commandline FTW | Tweakt met mate


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 06-07 15:56

deadinspace

The what goes where now?

Hero of Time schreef op donderdag 13 februari 2014 @ 11:30:
Maar is niet de oplossing van het echte probleem.
Precies wat ik ook wilde posten :P

Om specifieker te zijn, door die wijziging aan /etc/environment forceer je de locale naar UTF-8 voor alle sessies, maar als je dan bijvoorbeeld met ssh inlogt vanaf een ander systeem met een andere voorkeur (bv latin1 of windows-1252) dan gaan er dingen mis en wordt het lastig te achterhalen waarom.

"dpkg-reconfigure locales" zou het mogelijk kunnen oplossen inderdaad, maar dan is het voor mij nog steeds de vraag hoe dit zo komt. Na een standaard installatie van Debian zou dat toch echt goed moeten staan.

Kun je (voordat je dpkg-reconfigure doet) in ieder geval even de inhoud van /etc/default/locale posten?

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 06-07 20:47

Hero of Time

Moderator LNX

There is only one Legend

Ik heb de error zelf al een paar keer gezien in m'n eigen systeem en dat kwam niet omdat mijn locale niet in orde was, maar door een bug in Perl die een paar dagen later was gefixt. De TS geeft niet aan welke release hij gebruikt, mijn eigen Sid heeft al meerdere updates gehad maar nog geen herstart, dus kan niet gelijk zeggen of het in Unstable fout zit. Echter is mijn laatste Perl update wel voor m'n laatste reboot, dus an sich zou het na installatie en alle updates helemaal niet moeten gebeuren.

Commandline FTW | Tweakt met mate


  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
deadinspace schreef op donderdag 13 februari 2014 @ 12:51:
[...]

Precies wat ik ook wilde posten :P

Om specifieker te zijn, door die wijziging aan /etc/environment forceer je de locale naar UTF-8 voor alle sessies, maar als je dan bijvoorbeeld met ssh inlogt vanaf een ander systeem met een andere voorkeur (bv latin1 of windows-1252) dan gaan er dingen mis en wordt het lastig te achterhalen waarom.

"dpkg-reconfigure locales" zou het mogelijk kunnen oplossen inderdaad, maar dan is het voor mij nog steeds de vraag hoe dit zo komt. Na een standaard installatie van Debian zou dat toch echt goed moeten staan.

Kun je (voordat je dpkg-reconfigure doet) in ieder geval even de inhoud van /etc/default/locale posten?
Dit staat er in mijn locale

code:
1
2
3
#  File generated by update-locale
#LANG=en_US.UTF-8
LC_MESSAGES=POSIX


Ik heb al meerdere malen geprobeerd om een reconfigure uit te voeren maar bleef de melding houden.

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 06-07 20:47

Hero of Time

Moderator LNX

There is only one Legend

Dit is mijne:
code:
1
2
3
#  File generated by update-locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

Zie je dat LANG niet in commentaar staat? Draai dus eens update-locale.

Commandline FTW | Tweakt met mate


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 06-07 15:56

deadinspace

The what goes where now?

FRGert schreef op donderdag 13 februari 2014 @ 14:40:
Dit staat er in mijn locale

code:
1
2
3
#  File generated by update-locale
#LANG=en_US.UTF-8
LC_MESSAGES=POSIX


Ik heb al meerdere malen geprobeerd om een reconfigure uit te voeren maar bleef de melding houden.
Als je Hero of Time's "dpkg-reconfigure locales" uitvoert, welke optie kies je dan in het tweede scherm? (default locale)

Acties:
  • 0 Henk 'm!

  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
deadinspace schreef op donderdag 13 februari 2014 @ 17:09:
[...]

Als je Hero of Time's "dpkg-reconfigure locales" uitvoert, welke optie kies je dan in het tweede scherm? (default locale)
Heb het uitgevoerd.

Afbeeldingslocatie: http://upload.mattie-systems.nl/uploads/9543-screen_shot_2014-02-14_at_9.03.46_am.png

Dit was de screen die daarna kwam:

Afbeeldingslocatie: http://upload.mattie-systems.nl/uploads/43617-screen_shot_2014-02-14_at_9.03.57_am.png

Het kan liggen aan dat ik nu buiten het netwerk werk op een andere PC (iMac)? Volgens mij (heb er eigenlijk niet zo zeer op gelet) heb ik hier thuis geen last van (wel vreemd ik werk op een MacBook Pro met OS X).

Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 06-07 15:56

deadinspace

The what goes where now?

Kies in het tweede scherm eens de andere optie ("en_US.UTF-8") ;)

Acties:
  • 0 Henk 'm!

  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
deadinspace schreef op vrijdag 14 februari 2014 @ 10:30:
Kies in het tweede scherm eens de andere optie ("en_US.UTF-8") ;)
Dan krijg ik dit allemaal te zien.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@debian:~# dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").


Dus het wordt er niet beter op haha.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 06-07 20:47

Hero of Time

Moderator LNX

There is only one Legend

Na het aanpassen van je Locale is het beter om te herstarten zodat alle variabelen zijn doorgevoerd. Je zal maar net wat willen gebruiken dat geen runtime wijzigingen slikt. Apart, maar goed. Let ook op dat als je wat met je locale doet en in dezelfde sessie verder wilt, je alsnog fouten krijgt. Een nieuwe shell lost dat dan ook op.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
Hero of Time schreef op vrijdag 14 februari 2014 @ 11:02:
Na het aanpassen van je Locale is het beter om te herstarten zodat alle variabelen zijn doorgevoerd. Je zal maar net wat willen gebruiken dat geen runtime wijzigingen slikt. Apart, maar goed. Let ook op dat als je wat met je locale doet en in dezelfde sessie verder wilt, je alsnog fouten krijgt. Een nieuwe shell lost dat dan ook op.
Heb hem opnieuw aangepast me Locale en hierna een reboot gegeven. Krijg nog steeds niet het gewenste resultaat. Hij valt wel gelukkig steeds in zijn standaard, maar het is vervelend om elke keer die melding te zien.

Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 06-07 15:56

deadinspace

The what goes where now?

Ok, dat zou dus niet moeten. Sowieso interessant, want ik tel zo snel al drie verschillende locales (en_US:en, UTF-8, en en_US.UTF-8).

Kun je antwoord geven op de volgende vragen?
  • Welke Debian versie draai je?
  • Heb je ergens ooit iets ingesteld met betrekking tot taal of locale?
  • Voer je deze commando's uit over ssh, of op de console van het systeem zelf?
  • Wat staat er in /etc/default/locale ?
  • Wat is de uitvoer van
    egrep -v '^(#|$)' /etc/locale.gen
    ?
  • Wat is de uitvoer van
    locale
    ?

Acties:
  • 0 Henk 'm!

  • FRGert
  • Registratie: April 2010
  • Laatst online: 19-05 10:34
deadinspace schreef op vrijdag 14 februari 2014 @ 12:45:
Ok, dat zou dus niet moeten. Sowieso interessant, want ik tel zo snel al drie verschillende locales (en_US:en, UTF-8, en en_US.UTF-8).

Kun je antwoord geven op de volgende vragen?
  • Welke Debian versie draai je?
  • Heb je ergens ooit iets ingesteld met betrekking tot taal of locale?
  • Voer je deze commando's uit over ssh, of op de console van het systeem zelf?
  • Wat staat er in /etc/default/locale ?
  • Wat is de uitvoer van
    egrep -v '^(#|$)' /etc/locale.gen
    ?
  • Wat is de uitvoer van
    locale
    ?
Hieronder staan de antwoorden op je vragen.
code:
1
2
3
4
Distributor ID: Debian
Description:    Debian GNU/Linux 7.4 (wheezy)
Release:    7.4 
Codename:wheezy


code:
1
Voor zover ik weet alleen in het begin tijdens de install, verder nog nooit iets.


Ik voer de commandos uit over ssh.

code:
1
2
3
#  File generated by update-locale 
LANG=en_US.UTF-8 
LANGUAGE="en_US:en"


code:
1
en_US.UTF-8 UTF-8


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Acties:
  • 0 Henk 'm!

  • Speedmaster
  • Registratie: Juli 2005
  • Laatst online: 10:04

Speedmaster

Make my day...

Moet deze:
LANGUAGE=en_US:en
LC_CTYPE=UTF-8

Niet zo zijn:
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"

[ Voor 149% gewijzigd door Speedmaster op 14-02-2014 13:20 ]


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 06-07 15:56

deadinspace

The what goes where now?

FRGert schreef op vrijdag 14 februari 2014 @ 12:53:
Ik voer de commandos uit over ssh.
...
code:
1
LC_CTYPE=UTF-8
Ok. Voorzover ik de situatie begrijp (locales zijn ingewikkeld en ik ben ook geen expert):

Locales beinvloeden hoe je systeem tekst weergeeft, mbt de te gebruiken character encoding, taal (LC_MESSAGES), datum-formatting (LC_TIME), nummer-formatting (LC_NUMERIC), etc. Een locale-naam bestaat uit een taal EN een character-set, bijvoorbeeld "en_US.UTF-8"

De LC_CTYPE variabele bepaalt de classificatie van characters; wat is een letter, wat is een cijfer, wat is whitespace? Welke letters hebben een hoofd- en kleine letter? etc. Je systeem verwacht dat LC_CTYPE een volledige locale is, maar dat is het niet, het is slechts een character encoding ("UTF-8"). Je systeem kent de locale "en_US.UTF-8" wel, maar "UTF-8" niet, vandaar de melding.

Je benadert je systeem over SSH, en dat is waar locales pas goed ingewikkeld worden. Het systeem waar je vanaf komt, dat wil zeggen de SSH-client, geeft tekst weer in een bepaalde character encoding. Bovendien kan de SSH-client een voorkeur hebben voor een bepaalde taal (of eigenlijk locale). Als je op het client-systeem Spaans als taal hebt dan wil je dat waarschijnlijk ook op het systeem dat je over SSH benadert. Deze informatie kan door SSH doorgegeven worden van client naar server. Ik vermoed dat dat is waar je LC_CTYPE=UTF-8 vandaan komt.

En dat is waarschijnlijk het communicatieprobleem hier; Debian verwacht dat LC_CTYPE een volwaardige locale is, maar je client-systeem (Putty? op Windows) heeft geen voorkeur voor (of weet van) taal/locale en zegt alleen "Ja, ik geef UTF-8 weer, en verder maakt het me ook niet uit". Oftewel, LC_CTYPE=UTF-8.

Dit verhaal maakt ook duidelijk wat het probleem is van LC_ALL="en_US.UTF-8" in /etc/environment te zetten; dan gebruikt je systeem altijd dat, voor iedereen. Als iemand dus inlogt vanaf een systeem dat geen UTF-8 gebruikt (maar bv latin1), dan gaan er dingen mis. En iemand die inlogt vanaf een Nederlands systeem krijgt dan ook Engels, terwijl die anders Nederlands zou kunnen krijgen.

Één manier om dit op te lossen is om je client-systeem (Putty waarschijnlijk?) in te stellen om "en_US.UTF-8" te sturen als LC_CTYPE ipv "UTF-8". Dat is waarschijnlijk ergens in de instellingen te vinden.

Een andere manier is om je Debian systeem in te stellen om "UTF-8" te accepteren als locale. Dat kan bijvoorbeeld door "UTF-8 en_US.UTF-8" toe te voegen aan /etc/locale.alias en "locale-gen" te draaien. Dat is niet 100% correct, maar zorgt er in ieder geval voor dat het voor client-systemen met LC_CTYPE=UTF-8 goed gaat.

Ik ben er nog niet uit welke oplossing ik beter vind eigenlijk :P
(twee bronnen die ik heb gebruikt voor dit alles: http://www.syn-ack.org/ce...le-utf-8-error-on-centos/ http://www.gnu.org/savann...de/Locale-Categories.html )
Speedmaster schreef op vrijdag 14 februari 2014 @ 13:15:
Moet deze:
LANGUAGE=en_US:en
LC_CTYPE=UTF-8

Niet zo zijn:
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LANGUAGE zou ik even van af blijven. Ik heb het idee dat die daadwerkelijk over taal gaat, niet over locale. LANGUAGE is hier ook "en_GB:en", niet "en_GB.UTF-8".

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 06-07 20:47

Hero of Time

Moderator LNX

There is only one Legend

Om er zeker van te zijn dat SSH en de gebruikte client de schuldige is, zou ik toch eens op de console van de machine aanmelden en daar met apt aan de slag te gaan, kijken of je dan nog steeds de melding krijgt. Zie je niets, maar over SSH wel, dan moet het wel aan je SSH liggen.

Op m'n vorige werk heb ik een server met Wheezy gehad en vanaf een Windows machine had ik nooit last van Locale errors. Nou had ik op m'n eigen Windows wel alles in 't Engels staan en had ik Putty ingesteld om UTF8 te gebruiken. Dit laatste o.a. vanwege de weergave van sommige dingen. Het meest te merken was de weergave in ncurses dialoogvensters, zoals je locale reconfiguratie. Op je screenshots lijkt dat goed te gaan, maar schijn kan bedriegen.

Het is ook heel goed mogelijk dat we op de verkeerde plek kijken. De error komt van Perl af en alle andere uitvoer lijkt de juiste locale weer te geven. Start eens aptitude of doe 't met apt-get en herinstalleer perl, de libraries en apt. In aptitude markeer je een package voor herinstallatie met L (dus shift + l).

Commandline FTW | Tweakt met mate

Pagina: 1