RHEL 6和CentOS 6中缺少pdksh?


8

pdksh当我尝试通过RHEL 6或CentOS 6安装该软件包时,该软件包不存在yum

所以我的问题是:

  1. 为什么默认存储库中不再提供它?它在版本5.x中可用。
  2. 有替换壳吗?
  3. 那依赖的程序pdksh呢?他们可以使用替换壳吗?

我的解决方法是使用版本5的软件包,我认为这不是正确的解决方案,我应该比解决方法更好地了解它。

我主要关心的是Oracle数据库。它要求pdksh,因此使用替代外壳而不是一个问题pdksh


2
也许mksh也能让你开心?-“公有领域Korn Shell(pdksh)的继承人”
sr_12年

嗨,我对任何包装都没有问题,我的问题与技术方面有关!如果我安装了mksh,即使它请求了pdksh并且有mksh,应用程序是否仍然依赖于pdksh仍能正常工作?
数据库

Answers:


7

我的印象是pdksh不符合POSIX,并且随着开源AT&T KSH的发布,从pdksh到ksh有了很大的发展。我的$ 0.02

AT&T ksh已获得Eclipse Public License 1.0(EPL-1.0)的许可。


2
您会混淆开放源代码和公共领域,但是无论如何,您是正确的pdksh的重新实现效果很差,并且免费提供的真正的ksh93是一个更好的选择。
jlliagre 2012年

开源,公共领域,免费,许可证a,b,c是,我很困惑,经常互换使用前者中的任何一个;)
bsd 2012年

2
不幸的是,这取决于脚本。您可以安装ksh并创建一个pdksh符号链接,因此#!她的刘海不会断裂,但逐个脚本总是存在某些“功能”或另一个断裂的可能性。试试看,准备恢复pdksh
bsd

3
pdksh是否符合POSIX要求?@ Data-Base pdksh与AT&T ksh的一个主要差异是,管道中的最后一条命令仅在AT&T ksh的父外壳中执行。除此之外,pdksh与AT&T ksh88非常接近,ksh93与ksh88向上兼容,但在非常特殊的情况下除外。当然,永远不能保证您的脚本都不依赖任何这种不寻常的情况。
吉尔(Gilles)'所以

1
在RHEL5软件包中,它说:Pdksh is unmaintained since 1998 and is obsoleted by ksh package.
jsbillings 2012年

11

根据本文“ 在Oracle Linux 6上安装Oracle数据库11g第2版(11.2) ”:

“ pdksh”软件包的失败可以忽略,因为我们在其位置安装了“ ksh”软件包

在我相当标准的OEL 6.3机器上,已经将ksh作为构建的一部分进行了安装,但是您可能必须做一个sudo yum install ksh安装。


我们的DBA还发现了这篇可能有用的文章:

在RHEL6上安装“ 11.2.0.3 32位(x86)”或“ 64位(x86-64)”会报告该软件包elfutils-libelf-devel-0.97并且pdksh-5.2.14丢失。

适用于

  • Oracle Server-企业版-版本11.2.0.3至11.2.0.3 [版本11.2]
  • Oracle Universal Installer-版本11.2.0.3至11.2.0.3 [版本11.2]
  • Oracle服务器-标准版-版本11.2.0.3至11.2.0.3 [版本11.2]
  • Linux x86
  • Linux x86-64

病征

安装时

  • RHEL6 x86服务器上的11.2.0.3 32位(x86)数据库软件
  • RHEL6 x86-64服务器上的11.2.0.3 64位(x86-64)数据库软件

Oracle通用安装程序(OUI)的报告,包elfultils-libelf-devel-0.97pdksh-5.2.14丢失。

installActions.log以下输出中可以观察到:

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: -----------------------------------------------:    

原因

OUI执行以下命令:

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

没有返回任何输出(因为在RHEL6中,软件包redhat-release已被redhat-release-server-6Server取代)。

这使OUI认为该服务器不是RHEL服务器。

由于OUI无法识别服务器的类型,因此OUI执行默认(OEL4)前提条件检查。

该问题已被记录为Oracle开发中未发布的错误13981169。

除此之外,还没有定义RHEL6前提条件检查

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

在11.2.0.3媒体中。

11.2.0.3 64位(x86-64)的解决方案

如果您已从My Oracle Support(MOS)下载了11.2.0.3介质并将软件解压缩到<path>/database,请执行以下操作:

  1. 将目录更改为 <path>/database/stage/cvu/cv/admin
  2. 备份cvu_config cp cvu_config backup_cvu_config
  3. 编辑cvu_config并将以下行更改CV_ASSUME_DISTID=OEL4CV_ASSUME_DISTID=OEL6
  4. 保存更新的cvu_config文件
  5. 使用以下步骤安装11.2.0.3软件:
    1. <path>/database/runInstaller
    2. cd <path>/database
    3. ./runInstaller

OUI现在应该执行OEL6前提条件检查(与RHEL6前提条件检查相同),并且不再报告该软件包elfutils-libelf-devel-0.97并且pdksh-5.2.14丢失了

注意

如果您已收到DVD上的11.2.0.3介质,则有必要将介质从DVD复制到RHEL6服务器上的磁盘上(以便您可以执行上述步骤)

11.2.0.3 32位(x86)的解决方案

由于cvu_prereq.xml用于11.2.0.3 32位(x86)的文件未引用RHEL6或OEL6,因此无法使用上述解决方法。

手动验证是否满足所有要求之后,请在安装程序中选择“ 全部忽略”选项,然后继续安装。


在11.2.0.2.0的RHEL 6.7上也可以使用。谢谢!
Michael-O

杜德(Dude),您可以获得适当的版权,您不应该共享oracle支持文档。
jcho360

1

我的理解是,在RHEL 6之前,由于Red Hat 的许可,红帽对AT&T KornShell保持警惕,因此它们包括pdksh,这是一个较不完整的实现。我认为David Korn正在竭尽全力在尽可能多的地方以及明确或更改许可证的某个地方使ksh被接受。这句话引自KornShell网站:“ AT&T已将KornShell作为开源发布”。

显然,在RHEL 6发行时,Red Hat对许可感到满意,因此它们包括“真实的东西”。

编辑:实际上是在Wikipedia页面上进行了解释(当然)-请参阅“历史记录”下的第一段。


0

我为旧的mandrake 2007.1 rpm软件包制作了一个补丁,并创建了一个新的SRPM软件包,该软件包应该能够在较新的gcc版本的现代linux发行版上毫无问题地进行编译:

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

进行了两个调整:在siglist.sh内部:将sort + 2n + 0n替换为sort -k3n -k1n,并在几个c文件中shprintf(newline); 成为shprintf(“%s”,newline); 以防止发生-Werror = format-security错误。

[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)# 

mandriva 2011上的pdksh v5.2.14

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.