pdksh ausente do RHEL 6 e do CentOS 6?

8

O pacote pdkshnão existe no RHEL 6 ou CentOS 6 quando tento instalá-lo yum.

Então, minhas perguntas:

  1. Por que não está mais disponível nos repositórios padrão? Está disponível na versão 5.x.
  2. Existe um shell de substituição?
  3. E os programas que dependem pdksh? Eles podem usar o shell de substituição?

Minha solução alternativa foi usar o pacote da versão 5, que considero não a solução adequada e devo entendê-lo melhor do que a solução alternativa.

Minha preocupação é principalmente com o Oracle Database. Ele pede pdksh, então será um problema usar um shell de substituição diferente de pdksh?

Base de dados
fonte
2
Talvez também mkshpossa te fazer feliz? - "um sucessor do domínio público Korn Shell (pdksh)"
sr_
oi, eu não tenho nenhum problema com qualquer pacote, minha pergunta está relacionada ao lado técnico! se eu instalar o mksh, um aplicativo depende do pdksh ainda funcionando, mesmo que solicite o pdksh e exista o mksh?
Base de dados

Respostas:

7

Fiquei com a impressão de que o pdksh não era compatível com POSIX e, com o lançamento do código aberto AT&T KSH, houve um movimento significativo de pdksh para ksh . Apenas meus $ 0,02

O AT&T ksh é licenciado pela Eclipse Public License 1.0 (EPL-1.0).

bsd
fonte
2
Você está confundindo código-fonte aberto e domínio público, mas de qualquer maneira, você está certo O pdksh é uma reimplementação deficiente e o verdadeiro ksh93, disponível gratuitamente, é uma escolha muito melhor.
Jlliagre
open source, domínio público, livre, licenciar a, b, c sim, eu estou confuso e muitas vezes usar qualquer um dos ex-intercambiável;)
BSD
2
Infelizmente isso depende do script. Você pode instalar o ksh e criar um link simbólico pdksh para que o #! ela bate não quebra, mas script por script sempre há a possibilidade de que algum "recurso" ou outro possa quebrar. Experimente um ver, estar pronto para restaurar o pdksh
BSD
3
O que está faltando no pdksh para conformidade com POSIX? @ Base de dados O principal desvio do pdksh da AT&T ksh é que o último comando em um pipeline é executado no shell pai apenas na AT&T ksh. Além disso, o pdksh está bem próximo da AT&T ksh88, e o ksh93 é compatível com o ksh88, exceto em casos muito incomuns. Obviamente, nunca é garantido que nenhum dos seus scripts dependa de um caso tão incomum.
Gilles 'SO- stop be evil'
1
No pacote RHEL5, ele diz:Pdksh is unmaintained since 1998 and is obsoleted by ksh package.
jsbillings
11

De acordo com este artigo " Instalação do Oracle Database 11g Release 2 (11.2) no Oracle Linux 6 ":

A falha no pacote "pdksh" pode ser ignorada porque instalamos o pacote "ksh" em seu lugar

Na minha máquina OEL 6.3 bastante padrão, o ksh já foi instalado como parte da compilação, mas você pode precisar fazer um sudo yum install kshpara instalá-lo.


Nossos DBAs também encontraram este artigo que pode ser útil:

Instalar "11.2.0.3 32-bit (x86)" ou "64-bit (x86-64)" em relatórios RHEL6 que os pacotes elfutils-libelf-devel-0.97e pdksh-5.2.14estão faltando.

Aplica-se a

  • Oracle Server - Enterprise Edition - Versão 11.2.0.3 a 11.2.0.3 [Release 11.2]
  • Oracle Universal Installer - Versão 11.2.0.3 a 11.2.0.3 [Release 11.2]
  • Oracle Server - Standard Edition - Versão 11.2.0.3 a 11.2.0.3 [Release 11.2]
  • Linux x86
  • Linux x86-64

Sintomas

Durante a instalação

  • 11.2.0.3 software de banco de dados de 32 bits (x86) no servidor RHEL6 x86
  • 11.2.0.3 software de banco de dados de 64 bits (x86-64) no servidor RHEL6 x86-64

o Oracle Universal Installer (OUI) relata os pacotes elfultils-libelf-devel-0.97e pdksh-5.2.14está ausente.

Na installActions.logseguinte saída pode ser observada:

INFO: INFO: *********************************************
INFO: INFO: Package: elfutils-libelf-devel-0.97: This is a prerequisite condition to test whether the package "elfutils-libelf-devel-0.97" is available on the system.
INFO: INFO: Severity:IGNORABLE
INFO: INFO: OverallStatus:VERIFICATION_FAILED
INFO: INFO: -----------------------------------------------INFO: INFO: Verification Result for Node:nodename
INFO: INFO: Expected Value:elfutils-libelf-devel-0.97
INFO: INFO: Actual Value:missing
INFO: INFO: Error Message:PRVF-7532 : Package "elfutils-libelf-devel" is missing on node "nodename"
INFO: INFO: Cause: A required package is either not installed or, if the package is a kernel module, is not loaded on the specified node.
INFO: INFO: Action: Ensure that the required package is installed and available.
INFO: INFO: -----------------------------------------------:
INFO: INFO: *********************************************
INFO: INFO: Package: pdksh-5.2.14: This is a prerequisite condition to test whether the package "pdksh-5.2.14" is available on the system.
INFO: INFO: Severity:IGNORABLE
INFO: INFO: OverallStatus:VERIFICATION_FAILED
INFO: INFO: -----------------------------------------------INFO: INFO: Verification Result for Node:nodename
INFO: INFO: Expected Value:pdksh-5.2.14
INFO: INFO: Actual Value:missing
INFO: INFO: Error Message:PRVF-7532 : Package "pdksh" is missing on node "nodename"
INFO: INFO: Cause: A required package is either not installed or, if the package is a kernel module, is not loaded on the specified node.
INFO: INFO: Action: Ensure that the required package is installed and available.
INFO: INFO: -----------------------------------------------:    

Causa

OUI executa o seguinte comando:

/bin/rpm -q --qf %{version} redhat-release

nenhuma saída é retornada (porque no RHEL6 o pacote redhat-release foi substituído por redhat-release-server-6Server).

Isso faz com que a OUI acredite que o servidor não é um servidor RHEL.

Como a OUI não pode identificar que tipo de servidor é, a OUI executa as verificações de pré-requisito padrão (OEL4).

Esse problema foi registrado como bug não publicado 13981169 no Oracle Development.

Além disso, nenhuma verificação de pré-requisito do RHEL6 é definida em

<path>/database/stage/cvu/cvu_prereq.xml

na mídia 11.2.0.3.

Solução

Solução para 11.2.0.3 de 64 bits (x86-64)

Se você baixou a mídia 11.2.0.3 do My Oracle Support (MOS) e extraiu o software <path>/database, faça o seguinte:

  1. Mude o diretório para <path>/database/stage/cvu/cv/admin
  2. Cvu_config de backup cp cvu_config backup_cvu_config
  3. Edite cvu_config e altere a seguinte linha CV_ASSUME_DISTID=OEL4paraCV_ASSUME_DISTID=OEL6
  4. Salve o cvu_configarquivo atualizado
  5. Instale o software 11.2.0.3 usando:
    1. <path>/database/runInstaller
    2. cd <path>/database
    3. ./runInstaller

A OUI agora deve executar as verificações de pré-requisito OEL6 (que são idênticas às verificações de pré-requisito RHEL6) e não reportar mais esses pacotes elfutils-libelf-devel-0.97e pdksh-5.2.14estão ausentes

NOTA

Se você recebeu a mídia 11.2.0.3 no DVD, será necessário copiar a mídia do DVD para um disco no servidor RHEL6 (para que você possa seguir as etapas acima)

Solução para 11.2.0.3 de 32 bits (x86)

Como o cvu_prereq.xmlarquivo 11.2.0.3 de 32 bits (x86) não faz referência a RHEL6 ou OEL6, a solução alternativa acima não pode ser usada.

Após verificar manualmente se todos os requisitos foram atendidos, escolha a opção Ignorar todos no instalador e continue com a instalação.

David
fonte
Funciona também no RHEL 6.7 com 11.2.0.2.0. Obrigado!
Michael-O
Cara, você pode obter os direitos autorais devido, não deve compartilhar a documentação de suporte da Oracle.
Jcho360
1

Meu entendimento é que, antes do RHEL 6, a Red Hat desconfiava do AT&T KornShell por causa de sua licença; portanto, eles incluíam o pdksh, que é uma implementação menos completa. Acho que David Korn estava fazendo o possível para que o ksh fosse aceito no maior número possível de lugares e, em algum momento, a licença foi esclarecida ou alterada. Esta citação é do site da KornShell : "A AT&T lançou o KornShell como código aberto".

Obviamente, a Red Hat estava satisfeita com a licença quando o RHEL 6 foi lançado, então eles incluíram "a coisa real".

Editar: na verdade, é explicado na página da Wikipedia (é claro) - veja o primeiro parágrafo em História.

wanpelaman
fonte
0

Eu fiz um patch para um pacote antigo do mandrake 2007.1 rpm e criei um novo pacote SRPM que deve ser capaz de compilar sem problemas nas distribuições Linux modernas com versões mais recentes do gcc:

ftp://ftp.crashrecovery.org/pub/linux/pdksh/RPMS/mdv2011/ ftp://ftp.crashrecovery.org/pub/linux/pdksh/RPMS/mdv2011/pdksh-5.2.14-21-mdv2011. 0.x86_64.rpm ftp://ftp.crashrecovery.org/pub/linux/pdksh/RPMS/mdv2011/pdksh-5.2.14-21.src.rpm ftp://ftp.crashrecovery.org/pub/linux/ pdksh / RPMS / mdv2011 / ksh.pdf

Dois ajustes foram feitos: dentro de siglist.sh: sort + 2n + 0n é substituído por sort -k3n -k1n e dentro de vários arquivos c shprintf (nova linha); torna-se shprintf ("% s", nova linha); para impedir que erros -Werror = format-security ocorram.

[vax-linux:root]:(~/rpmbuild/BUILD/pdksh-5.2.14)# make check
./tests/th-sh ./tests/th -s ./tests -p ./ksh -C pdksh,sh,ksh,posix,posix-upu 
pass lineno.t:lineno-stdin
pass lineno.t:lineno-inc
pass lineno.t:lineno-func
pass lineno.t:lineno-unset
pass lineno.t:lineno-unset-use
pass alias.t:alias-1
pass alias.t:alias-2
pass alias.t:alias-3
pass alias.t:alias-4
pass alias.t:alias-5
pass alias.t:alias-6
pass alias.t:alias-7
pass alias.t:alias-8
pass glob.t:glob-bad-1
pass glob.t:glob-range-1
pass glob.t:glob-range-2
pass glob.t:glob-range-3
pass glob.t:glob-range-4
pass glob.t:glob-range-5
pass eglob.t:eglob-bad-1
pass eglob.t:eglob-bad-2
pass eglob.t:eglob-infinite-plus
pass eglob.t:eglob-subst-1
pass eglob.t:eglob-nomatch-1
pass eglob.t:eglob-match-1
pass eglob.t:eglob-case-1
pass eglob.t:eglob-case-2
pass eglob.t:eglob-trim-1
pass eglob.t:eglob-trim-2
pass arith.t:arith-lazy-1
pass arith.t:arith-lazy-2
FAIL arith.t:arith-ternary-prec-1
pass arith.t:arith-ternary-prec-2
pass arith.t:arith-div-assoc-1
pass arith.t:arith-assop-assoc-1
pass history.t:history-basic
pass history.t:history-e-minus-1
pass history.t:history-e-minus-2
pass history.t:history-e-minus-3
pass history.t:history-e-minus-4
pass history.t:history-e-minus-5
pass history.t:history-list-1
pass history.t:history-list-2
pass history.t:history-list-3
pass history.t:history-list-4
pass history.t:history-list-5
pass history.t:history-list-6
pass history.t:history-list-7
pass history.t:history-list-r-1
pass history.t:history-list-r-2
pass history.t:history-list-r-3
pass history.t:history-subst-1
pass history.t:history-subst-2
pass history.t:history-subst-3
pass history.t:history-subst-4
pass history.t:history-subst-5
pass ifs.t:IFS-space-1
pass ifs.t:IFS-colon-1
pass ifs.t:IFS-null-1
pass ifs.t:IFS-space-colon-1
pass ifs.t:IFS-space-colon-2
fail ifs.t:IFS-space-colon-3 (as expected)
pass ifs.t:IFS-space-colon-4
pass ifs.t:IFS-space-colon-5
pass ifs.t:IFS-subst-1
pass brkcont.t:break-1
pass brkcont.t:break-2
pass brkcont.t:break-3
pass brkcont.t:break-4
pass brkcont.t:break-5
pass brkcont.t:continue-1
pass brkcont.t:continue-2
pass brkcont.t:continue-3
pass brkcont.t:continue-4
pass brkcont.t:continue-5
pass syntax.t:syntax-1
pass read.t:read-IFS-1
pass read.t:read-ksh-1
pass heredoc.t:heredoc-1
pass heredoc.t:heredoc-2
pass heredoc.t:heredoc-3
pass heredoc.t:heredoc-4
pass heredoc.t:heredoc-5
pass heredoc.t:heredoc-6
pass heredoc.t:heredoc-7
pass heredoc.t:heredoc-8
pass heredoc.t:heredoc-tmpfile-1
pass heredoc.t:heredoc-tmpfile-2
pass heredoc.t:heredoc-tmpfile-3
pass heredoc.t:heredoc-tmpfile-4
pass heredoc.t:heredoc-tmpfile-5
pass heredoc.t:heredoc-tmpfile-6
pass heredoc.t:heredoc-tmpfile-7
pass heredoc.t:heredoc-tmpfile-8
pass bksl-nl.t:bksl-nl-ign-1
pass bksl-nl.t:bksl-nl-ign-2
pass bksl-nl.t:bksl-nl-ign-3
pass bksl-nl.t:blsk-nl-ign-4
pass bksl-nl.t:blsk-nl-ign-5
pass bksl-nl.t:bksl-nl-1
pass bksl-nl.t:bksl-nl-2
pass bksl-nl.t:bksl-nl-3
pass bksl-nl.t:bksl-nl-4
pass bksl-nl.t:bksl-nl-5
pass bksl-nl.t:bksl-nl-6
pass bksl-nl.t:bksl-nl-7
pass bksl-nl.t:bksl-nl-8
pass bksl-nl.t:blsk-nl-9
pass bksl-nl.t:blsk-nl-10
pass bksl-nl.t:blsk-nl-ksh-1
pass bksl-nl.t:blsk-nl-ksh-2
pass regress.t:regression-1
pass regress.t:regression-2
pass regress.t:regression-6
pass regress.t:regression-9
FAIL regress.t:regression-10
pass regress.t:regression-11
pass regress.t:regression-12
pass regress.t:regression-13
pass regress.t:regression-14
pass regress.t:regression-15
pass regress.t:regression-16
pass regress.t:regression-17
pass regress.t:regression-19
pass regress.t:regression-21
pass regress.t:regression-22
pass regress.t:regression-23
pass regress.t:regression-25
pass regress.t:regression-26
pass regress.t:regression-27
pass regress.t:regression-28
pass regress.t:regression-29
pass regress.t:regression-30
pass regress.t:regression-31
pass regress.t:regression-32
pass regress.t:regression-33
pass regress.t:regression-35
pass regress.t:regression-36
pass regress.t:regression-37
pass regress.t:regression-38
fail regress.t:regression-39 (as expected)
pass regress.t:regression-40
pass regress.t:regression-41
pass regress.t:regression-42
pass regress.t:regression-43
pass regress.t:regression-44
pass regress.t:regression-45
pass regress.t:regression-46
pass regress.t:regression-47
pass regress.t:regression-48
pass regress.t:regression-49
pass regress.t:regression-50
pass regress.t:regression-51
pass regress.t:regression-52
pass regress.t:regression-53
pass regress.t:regression-54
pass regress.t:regression-55
pass regress.t:regression-56
pass regress.t:regression-57
pass regress.t:regression-58
pass regress.t:regression-59
pass regress.t:regression-60
pass regress.t:regression-61
pass regress.t:regression-62
pass version.t:version-1
pass unclass1.t:xxx-quoted-newline-1
pass unclass1.t:xxx-quoted-newline-2
pass unclass1.t:xxx-quoted-newline-3
pass unclass1.t:xxx-multi-assignment-cmd
pass unclass1.t:xxx-exec-environment-1
pass unclass1.t:xxx-what-do-you-call-this-1
pass unclass1.t:xxx-prefix-strip-1
pass unclass1.t:xxx-prefix-strip-2
pass unclass1.t:xxx-variable-syntax-1
pass unclass2.t:xxx-subsitution-eval-order
pass unclass2.t:xxx-set-option-1
pass unclass2.t:xxx-exec-1
pass unclass2.t:xxx-while-1
pass unclass2.t:xxx-status-1
FAIL unclass2.t:xxx-status-2
pass unclass2.t:xxx-clean-chars-1
fail unclass2.t:xxx-param-subst-qmark-1 (as expected)
pass unclass2.t:xxx-param-_-1
pass unclass2.t:env-prompt
FAIL integer.t:integer-base-err-1
FAIL integer.t:integer-base-err-2
FAIL integer.t:integer-base-err-3
FAIL integer.t:integer-base-err-4
pass integer.t:integer-base-1
pass integer.t:integer-base-2
pass integer.t:integer-base-3
pass integer.t:integer-base-4
pass integer.t:integer-base-5
pass integer.t:integer-base-6
pass integer.t:integer-base-7
Total failed: 10 (7 unexpected)
Total passed: 185
[vax-linux:root]:(~/rpmbuild/BUILD/pdksh-5.2.14)# 

pdksh v5.2.14 no mandriva 2011

rmstock
fonte