Estou usando o openSUSE 42.3 no WSL. Durante a última atualização que fiz (com sudo zypper refresh && sudo zypper update
), o Bash foi atualizado da versão 4.3.42(1) para a versão 4.3-83.3.1.
Fechei a janela do Bash (simplesmente usando exit
) e reiniciei o Windows. Quando o Windows reiniciou, reabri a janela do Bash e pressionei Control+ X+ V. Qual saída do Bash ainda é o número da versão antiga.
GNU bash, versão 4.3.42(1)-release (x86_64-suse-linux-gnu)
Eu verifiquei a saída de zypper info bash
, mas diz que a versão 4.3-83.3.1 está instalada.
Loading repository data...
Reading installed packages...
Information for package bash:
-----------------------------
Repository : oss_update
Name : bash
Version : 4.3-83.3.1
Arch : x86_64
Vendor : openSUSE
Installed Size : 742.5 KiB
Installed : Yes (automatically)
Status : up-to-date
Source package : bash-4.3-83.3.1.src
Summary : The GNU Bourne-Again Shell
Description :
Bash is an sh-compatible command interpreter that executes commands
read from standard input or from a file. Bash incorporates useful
features from the Korn and C shells (ksh and csh). Bash is intended to
be a conformant implementation of the IEEE Posix Shell and Tools
specification (IEEE Working Group 1003.2).
Também verifiquei a saída de zypper lr -d
, mas não vejo nada que explique o que está acontecendo.
# | Pseudônimo | Habilitado | Modelo |
---|---|---|---|
1 | devel_languages_go | Sim | rpm-md |
2 | devel_languages_php | Sim | rpm-md |
3 | oss | Sim | rpm-md |
4 | oss_update | Sim | rpm-md |
5 | servidor_php_extensions_php7 | Sim | rpm-md |
Por que a versão atualizada do Bash não está sendo usada?
Procurei por qualquer arquivo com um nome correspondente ao bash (com sudo find /[^m]* -name "bash" -type f
, onde /[^m]*
é usado para evitar o diretório /mount, que é o único diretório que corresponde a esse padrão). O único arquivo encontrado é /bin/bash, para o qual a saída /bin/bash --version
é a seguinte.
GNU bash, versão 4.3.42(1)-release (x86_64-suse-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licença GPLv3+: GNU GPL versão 3 ou posterior http://gnu.org/licenses /gpl.html
Este é um software livre; você é livre para alterá-lo e redistribuí-lo. NÃO HÁ GARANTIA, na medida permitida por lei.
Como o Zypper pode pensar que instalou uma atualização para a qual não encontro os arquivos instalados?
Como nota lateral, não alterei o link simbólico que o Windows usa para iniciar o openSUSE, o que significa que o Bash usado do WSL é aquele que para o openSUSE é /bin/bash.
Ele está usando a versão correta e mais recente.
Baixe o pacote rpm original em uma pasta de trabalho:
Descompacte-o:
E o bash incluído é:
O número da versão do pacote não está totalmente vinculado à versão do software instalado (aqui apenas a parte 4.3). Imagine um cenário em que o mantenedor do pacote cometeu um erro e deseja enviar uma atualização. A versão do software empacotado permanece a mesma, mas ele precisa atualizar o pacote e, portanto, aumenta a versão do pacote.