Por que a versão mais recente do Bash não está sendo usada?

2

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 Bash (simplesmente usando exit ) e reiniciei o Windows. Quando o Windows reiniciou, eu reabrei a janela de Bash, e pressione Control + X + V . Qual saída de Bash ainda é o número da versão antiga.

GNU bash, version 4.3.42(1)-release (x86_64-suse-linux-gnu)

Eu verifiquei a saída de zypper info bash , mas 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.

# | Alias                      | Name                                             | Enabled | GPG Check | Refresh | Priority | Type   | URI                                                                                              | Service
--+----------------------------+--------------------------------------------------+---------+-----------+---------+----------+--------+--------------------------------------------------------------------------------------------------+--------
1 | devel_languages_go         | The Go Programming Language (openSUSE_Leap_42.3) | Yes     | (r ) Yes  | No      |   99     | rpm-md | http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Leap_42.3/               |
2 | devel_languages_php        | devel:languages:php (openSUSE_Leap_42.3)         | Yes     | (r ) Yes  | No      |   99     | rpm-md | http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_42.3/              |
3 | oss                        | oss                                              | Yes     | (r ) Yes  | No      |   99     | rpm-md | http://download.opensuse.org/distribution/leap/42.3/repo/oss/suse/                               |
4 | oss_update                 | oss_update                                       | Yes     | (r ) Yes  | No      |   99     | rpm-md | http://download.opensuse.org/update/leap/42.3/oss/                                               |
5 | server_php_extensions_php7 | PHP7 extensions (php7_openSUSE_Leap_42.3)        | Yes     | (r ) Yes  | No      |   99     | rpm-md | http://download.opensuse.org/repositories/server:/php:/extensions:/php7/php7_openSUSE_Leap_42.3/ |

Por que a versão atualizada do Bash não está sendo usada?

Eu procurei por qualquer arquivo com um nome correspondente 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 de /bin/bash --version é a seguinte.

GNU bash, version 4.3.42(1)-release (x86_64-suse-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html

This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Como o Zypper pode instalar uma atualização para a qual não encontro os arquivos instalados?

Como nota lateral, eu não alterei o link simbólico que o Windows usa para iniciar o openSUSE, o que significa que o Bash usado no WSL é o que para o openSUSE é / bin / bash.

    
por kiamlaluno 19.02.2018 / 20:46

1 resposta

4

Está usando a versão correta e mais recente.

Faça o download do pacote rpm original em uma pasta de trabalho:

wget http://download.opensuse.org/update/leap/42.3/oss/x86_64/bash-4.3-83.3.1.x86_64.rpm

Descompacte:

rpm2cpio bash-4.3-83.3.1.x86_64.rpm | cpio -idmv

E o bash incluído é:

./bin/bash --version    # The leading . is important
GNU bash, Version 4.3.42(1)-release (x86_64-suse-linux-gnu)

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.

    
por 20.02.2018 / 10:52

Tags