AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1154895
Accepted
xpt
xpt
Asked: 2019-06-30 09:01:16 +0800 CST2019-06-30 09:01:16 +0800 CST 2019-06-30 09:01:16 +0800 CST

Como remover localidades do sistema

  • 772

Como remover localidades do sistema , em oposição a localidades de pacote , conforme solicitado em Como remover localidades desnecessárias? ?

Estou recebendo os seguintes erros recentemente :

locale: Cannot set LC_ALL to default locale: No such file or directory

A única en localidade que tenho no meu sistema:

$ grep -r en /var/lib/locales/supported.d/*
/var/lib/locales/supported.d/local: en_US ISO-8859-1
/var/lib/locales/supported.d/local: en_US.UTF-8 UTF-8

$ locale -a | grep en
en_US
en_US.iso88591
en_US.utf8

mas não en, como reclamado por perl:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = (unset),
        LC_MEASUREMENT = "en",
        LC_PAPER = "en",
        LC_MONETARY = "en",
        LC_NAME = "en",
        LC_ADDRESS = "en",
        LC_NUMERIC = "en",
        LC_TELEPHONE = "en",
        LC_IDENTIFICATION = "en",
        LC_TIME = "en",
        LANG = "C"

Então eu adiciono a localidade en por:

% locale-gen en
Generating locales (this might take a while)...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8...^C

Não quero nenhuma das localidades acima (apenas en_US), mas agora não consigo me livrar delas - segui as etapas em https://serverfault.com/questions/394610/remove-a-locale-in- ubuntu

Mas quando se trata da última etapa, ainda estou recebendo:

% locale-gen
Generating locales (this might take a while)...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8...^C

Como remover todas as localidades acima e manter apenas en_US?

Conclusão e Suplemento

Graças à resposta de Gunnar, é de fato causado por entradas em /etc/locale.gen, para essas localidades extras. Apenas FTR, isso é o que locale-gen enmudou em /etc/locale.gen:

$ sed '/^#/d; /en/p;' /etc/locale.gen


en_AG UTF-8
en_AG UTF-8
en_AU.UTF-8 UTF-8
en_AU.UTF-8 UTF-8
en_BW.UTF-8 UTF-8
en_BW.UTF-8 UTF-8
en_CA.UTF-8 UTF-8
en_CA.UTF-8 UTF-8
en_DK.UTF-8 UTF-8
en_DK.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
en_HK.UTF-8 UTF-8
en_HK.UTF-8 UTF-8
en_IE.UTF-8 UTF-8
en_IE.UTF-8 UTF-8
en_IL UTF-8
en_IL UTF-8
en_IN UTF-8
en_IN UTF-8
en_NG UTF-8
en_NG UTF-8
en_NZ.UTF-8 UTF-8
en_NZ.UTF-8 UTF-8
en_PH.UTF-8 UTF-8
en_PH.UTF-8 UTF-8
en_SC.UTF-8 UTF-8
en_SC.UTF-8 UTF-8
en_SG.UTF-8 UTF-8
en_SG.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_ZA.UTF-8 UTF-8
en_ZA.UTF-8 UTF-8
en_ZM UTF-8
en_ZM UTF-8
en_ZW.UTF-8 UTF-8
en_ZW.UTF-8 UTF-8

Como comparação, aqui está a aparência do padrão (ou seja, sem nenhuma das localidades extras acima):

$ sed '/^#/d;' /etc/locale.gen; echo ---


---
configuration system locale removing
  • 3 3 respostas
  • 3779 Views

3 respostas

  • Voted
  1. Gunnar Hjalmarsson
    2019-06-30T09:55:27+08:002019-06-30T09:55:27+08:00

    Você deve editar /etc/locale.gene comentar as localidades que não deseja. Então corra

    sudo locale-gen
    

    Não existe nenhuma localidade com o nome en. O que você provavelmente deseja usar é en_US.UTF-8e não en_US. (O último habilita a codificação latin1.)

    • 6
  2. Best Answer
    vitaminace33
    2020-10-11T03:44:47+08:002020-10-11T03:44:47+08:00

    Nota: Alguns dos comandos abaixo requerem privilégios de root, considere o uso de sudo.

    Informação básica

    De acordo com man locale-gen, as localidades são definidas em vários arquivos.

    /etc/locale.gen

    O arquivo de configuração principal, que tem um formato simples: cada linha que não está vazia e não começa com um # é tratada como uma definição de localidade que deve ser construída.

    /var/lib/locales/supported.d/

    Um diretório contendo trechos locale.gen fornecidos por pacotes de pacotes de idioma. Não os edite manualmente, eles serão substituídos em atualizações de pacotes.

    As localidades são compiladas (geradas) em um único arquivo.

    /usr/lib/locale/locale-archive

    Local de arquivo de localidade padrão usual.

    Detalhes abrangentes sobre localidades no Arch Wiki .

    Verificando localidades e a localidade

    Para listar as localidades disponíveis (conhecidas), execute qualquer um dos comandos a seguir (com pequenas diferenças de saída).

    locale -a
    localectl list-locales
    

    Para verificar as localidades (já) geradas, execute o comando a seguir.

    localedef --list-archive
    

    Para verificar a localidade usada atualmente, execute qualquer um dos comandos a seguir (com pequenas diferenças de saída).

    locale
    localectl
    

    Configurando e gerando (novas) localidades

    As localidades geralmente são definidas removendo os comentários de linhas em /etc/locale.gen, após o que a execução locale-gené necessária.

    nano /etc/locale.gen # uncomment desired lines (locales)
    locale-gen
    

    Isso irá compilar (gerar) localidades /usr/lib/locale/locale-archivepara cada linha não comentada em /etc/locale.gene em /var/lib/locales/supported.d/, sejam elas compiladas anteriormente ou não.

    Alternativamente, o comando

    locale-gen <locale>
    

    irá descomentar a linha correspondente locale-genenquanto gera a localidade desejada e somente esta.

    Nota: A implementação de locale-gendepende da distribuição. Por exemplo, o comando acima é válido no Ubuntu/Debian, mas não no ArchLinux.

    Removendo localidades

    Ao emitir locale-gen, o arquivo compilado é apagado e todas as localidades dentro /etc/locale.gene abaixo /usr/lib/locale/locale-archivesão geradas novamente. O comando locale-gen --purge <locale>não faz o que o modificador sugere, mas o contrário: remove todas as localidades compiladas, exceto as indicadas. Para garantir que apenas localidades específicas sejam geradas quando locale-genfor emitida ou e a atualização for executada, ambas /etc/locale.gendevem /usr/lib/locale/locale-archiveser consideradas.

    Para remover localidades em /etc/locale.gen, simplesmente comente as linhas desejadas e gere novamente as localidades usando locale-gen.

    Para remover localidades abaixo /var/lib/locales/supported.d/é mais complicado. Como qualquer arquivo /var/lib/locales/supported.d/<code>depende do pacote language-pack-<code>-base, qualquer alteração no primeiro será restaurada quando o último for atualizado. Para resolver isso, basta manter os pacotes que atualizam os arquivos em /var/lib/locales/supported.d/. O comando que faz isso no Ubuntu/Debian é o seguinte.

    apt-mark language-pack-<code>-base
    

    Para atualizar um pacote retido, você deve desmarcá -lo ou simplesmente --ignore-hold.

    Gambiarra. Uma solução mais intrusiva, mas geral, que impede alterações /var/lib/locales/supported.d/é definir arquivos nele com o atributo "immutable (i)" . Então, em vez de remover arquivos, esvazie-os. Por exemplo:

    cd /var/lib/locales/supported.d/
    rm <code> && touch <code> # <code> has been emptied
    lsattr <code>    # regular attributes
    chattr +i <code> # adding (+) immutable
    lsattr <code>    # checking attributes
    

    Configurando a localidade

    Definir e gerar códigos de idioma não define o código de idioma do sistema. Qualquer um dos comandos a seguir consegue isso.

    echo LANG=<code> | sudo tee /etc/locale.conf # reboot (might be ignored in Ubuntu)
    localectl set-locale LANG=<code>
    
    • 6
  3. Paulo Coghi
    2021-11-28T10:43:30+08:002021-11-28T10:43:30+08:00

    Quais localidades estão instaladas na minha máquina?

    Você pode verificar quais localidades são geradas e configuradas em seu sistema usando o comando locale:

    • locale... lista a configuração de localidade atual
    • locale -a... lista todas as localidades que foram geradas em seu sistema
    • locale -a -v... lista todas as localidades e mostra informações adicionais úteis (como nomes de diretórios que contêm os arquivos de dados de informações de localidade)

    O último comando acima faz você ver que todos os locais gerados estão localizados em /usr/lib/locale/, e você pode remover qualquer um deles se desnecessário. Cada pacote de informações de localidade é um diretório contendo arquivos de texto e outros diretórios.


    Localidades compatíveis

    Todas as localidades que você deseja que seu sistema suporte estão listadas nos arquivos de texto em /var/lib/locales/supported.d/. Esses arquivos possuem duas colunas, tag de idioma e mapa de caracteres.

    Eu quero que meu sistema saiba apenas inglês dos EUA, então tenho apenas um arquivo lá, chamado en, que contém apenas uma única linha:

    en_US UTF-8
    

    Mensagens de erro

    Se forem exibidas mensagens de erro ao emitir o comando locale, por exemplo

    locale: Cannot set LC_ALL to default locale: No such file or directory
    

    verifique se o arquivo /etc/default/localeexiste e tem conteúdo adequado, como:

    LANG="en_US"
    LANGUAGE="en_US:en"
    

    Livre-se de dados de localidade desnecessários - passo a passo

    Agora sabemos todos os detalhes necessários para começar a limpar as informações de localidade do nosso sistema:

    1. Edite o(s) arquivo(s) de localidade em /var/lib/locales/supported.d/e remova todas as localidades desnecessárias (uma localidade por linha)
    2. Criar e editar /etc/default/locale(veja acima um exemplo)
    3. Exclua todos os dados de localidade gerados:rm -rfv /usr/lib/locale/*
    4. Gere novamente novas localidades:locale-gen

    Isso é tudo! Reinicie sua máquina para que suas alterações tenham efeito. Em seguida, execute um ou mais dos exemplos de comando de localidade acima para garantir que o resultado seja o esperado.


    Referência:

    https://www.linuxquestions.org/questions/blog/bittner-195120/remove-unwanted-locales-on-ubuntu-debian-3281/

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve