Unix Patch Directory

Explains how to use to diff and patch command to patch source code file on a Linux or Unix like systems.

我最近编了一个程序 但是接在终端上显示菜单时 是用shell做的 屏幕突然出现了不规则的换行 并且输入场也没有反应 进程就死在里面了 我的应用程序是挂在银行的CB2000系统下的 没有login 画面出现 是通过交易的方式进去的

而我在测试时是直接用终端挂在unix主机上的 有login画面出现 程序一切正常

drwxrwxrwx 2 root sys 1024 Nov 19 .

drwxrwxrwx 4 oracle oinstall 1024 Nov 17 . .

-rw-r--r-- 1 root sys 686319 Nov 19 PHCO_32426

-rw-r--r-- 1 root sys 18719 Nov 19 hpux__11.23_11190101.zip

-rw-r--r-- 1 root sys 18719 Nov 19 hpux__11.

各位高手 今天我安装一个补丁PH_22898 竟不成功 错误信息如下

swinstall -x autoreboot true -x patch_match_target true

08/04/05 :16 EAT BEGIN swinstall SESSION

non-interactive jobid dgdar002-0144

Session started for user root dgdar002.

Target connection succeeded for dgdar002:/.

我用的是sco unix5.05版本.我试过 mkdev graphics这个命令,问题是执行这个命令后,都只是给出一个刷新率的范围,能不能象windows那样选择具体的一个数字呢.请大伙赐教

我要在HP itaniumII 小机上安装oracle9.2,按照install guide要求需打补丁 可是在HP网站上下载却费老大劲也没成功 要选机型700或800 可我的机器是itanium 该怎么办呢 请问rp5400是哪个系列700还是800

请教一下 patch 完补丁后 还需要做一些什么工作 如需要

公司给sco unix open server 新采购了一个大的液晶显示器 但是 sco的刷新频率太高和显示器不匹配 无法正常显示 那位朋友知道如何修改sco的刷新频率

Patch 1 - apply a diff file to an original. - patch 1 man page - FreeBSD 11.0 - Unix Commands.

Linux下patch命令使用详解---linux打补丁命令 功能说明 修补文件 语 法 patch -bceEflnNRstTuvZ -B备份字首字符串 -d工作目录 -D标示符号 -F监别列数 -g.

SCO UNIX配置显卡刷新率的相关推荐_ChinaUnix论坛

Patch - Unix, Linux Command Manual NAME patch - apply a diff file and patch a file in the blurfl directory directly from the article containing the patch.

The computer tool patch is a Unix program that updates text files according to instructions contained in a separate file, called a patch file. The patch file also.

unix patch directory

linux下patch命令使用详解---linux打补丁命令

语  法 patch  -bceEflnNRstTuvZ -B  -d  -D  -F  -g  -i  -o  -p  -r  -V  -Y  -z  --backup-if   -mismatch --binary --help --nobackup-if-mismatch --verbose 原始文件   或 path  -p      修补文件

补充说明 patch指令让用户利用设置修补文件的方式 修改 更新原始文件 倘若一次仅修改一个文件 可直接在指令列中下达指令依序执行 如果配合修补文件的方式则能一次修补大批文件 这也是Linux系统核心的升级方法之一

-B或--prefix   设置文件备份时 附加在文件名称前面的字首字符串 该字符串可以是路径名称

-E或--remove-empty-files  若修补过后输出的文件其内容是一片空白 则移除该文件

-f或--force  此参数的效果和指定-t参数类似 但会假设修补数据的版本为新 版本

-l或--ignore-whitespace  忽略修补数据与输入数据的跳格 空格字符

-N或--forward  忽略修补的数据较原始文件的版本更旧 或该版本的修补数据已使 用过

-o或--output   设置输出文件的名称 修补过的文件会以该名称存放

-f或--reject-file   设置保存拒绝修补相关信息的文件名称 预设的文件名称为.rej

-R或--reverse  假设修补数据是由新旧文件交换位置而产生

-s或--quiet或--silent  不显示指令执行过程 除非发生错误

-T或--set-time  此参数的效果和指定-Z参数类似 但以本地时间为主

-V或--version-control   用-b参数备份目标文件后 备份文件的字尾会被加上一个备份字符串 这个字符串不仅可用-z参数变更 当使用-V参数指定不同备份方式时 也会产生不同字尾的备份字符串

-Y或--basename-prefix --  设置文件备份时 附加在文件基本名称开头的字首字符串

-z或--suffix   此参数的效果和指定-B参数类似 差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c 加上backup/字符串后 文件super.c会备份于/src/linux/fs/backup目录里

-Z或--set-utc  把修补过的文件更改 存取时间设为UTC

--backup-if-mismatch  在修补数据不完全吻合 且没有刻意指定要备份文件时 才备份文件

--binary  以二进制模式读写数据 而不通过标准输出设备

--nobackup-if-mismatch  在修补数据不完全吻合 且没有刻意指定要备份文件时 不要备份文件

patch 是打补丁的命令 有很多用法 见帮助 man patch

patch -p0       p 指的是路径 后面的数字表示去掉路径的第几部分 0 表示不去掉 为全路径

patch -p1       p 后面的数字1 表示去掉前第一个路径 fetch delphij/misc/patch-bge-releng62

fetch delphij/misc/patch-bce-watchdog-rewritecd /sys/dev/bge

patch -p0 cp_auto_buf-20061212-RELENG_6.diff

patch -p patch-tcp_auto_buf-20061212-RELENG_6.diff

也可以把文件中的目录全改成系统已在的目录如/usr/src/sys..注意

然后确认目录 如不在默认目录下 就写下要打补丁的当前绝对目录 如/usr/src/sys/dev/bge/if_bce.c2 P的使用

telnetd服务器的问题及补丁 在当前FreeBSD所有版本中 也就是FreeBSD 5.0 FreeBSD 4.3 FreeBSD 4.2 FreeBSD 4.1.1 FreeBSD 4.1 FreeBSD 4.0 FreeBSD 3.x FreeBSD 2.x的版本 其telnetd守护进程中存在一个致命的缓冲区溢出漏洞 该问题是由于telnetd在处理telnet协议选项的函数中没有进行有效的边界检查 当使用某些选项 AYT 时 可能发生缓冲区溢出 这会导致远程root级别的安全威胁

因此 如果一定要使用telnet服务的话 必须为服务器打上最新的patch 该patch可以从以下链接获得 注 通常有两个版本的telnetd服务器 有crypto及无crypto的版本 因此需要判断主机使用的是哪种版本的telnetd 这通常可以通过察看src文件来判断 比如 ls /usr/src/crypto/telnet/telnetd 如果不存在 则说明使用的是无crypto的版本了 在判别清楚之后再分别下载相关补丁文件 crypto版本补丁

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-/telnetd-crypto.patch

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-/telnetd-crypto.patch.asc patch方法

cd /usr/src/secure/libexec/telnetd

make depend make all install 无crypto版本补丁

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-/telnetd.patch

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-/telnetd.patch.asc patch方法

make depend make all install 例子来源 isp1161-2.6.12.patch 在/root下

由于patch文件的首行已经指明了路径 所以根据当前所在的目录 加不同的参数使用patch命令

root kcn-110mw patch -p0 /root/isp1161-2.6.12.patch

root kcn-110mw patch -p1 /root/isp1161-2.6.12.patch

3:如果当前的目录为 linux-2.6.12/drivers/

root kcn-110mw patch -p2 /root/isp1161-2.6.12.pathc

这是linux中一个非常重要的命令 它的功能是为某一个文件在另外一个位置建立一个不同的链接 这个命令最常用的参数是-s,具体用法是 ln -s 源文件 目标文件

当我们需要在不同的目录 用到相同的文件时 我们不需要在每一个需要的目录下都放一个必须相同的文件 我们只要在某个固定的目录放上该文件 然后在其它的目录下用ln命令链接 link 它就可以 不必重复的占用磁盘空间

例如 ln -s /bin/less /usr/local/bin/less

第一 ln命令会保持每一处链接文件的同步性 也就是说 不论你改动了哪一处 其它的文件都会发生相同的变化

patch附带有一个很好的帮助 其中罗列了很多选项 但是99 的时间只要两个选项就能满足我们的需要

-p1选项代表patchfile中文件名左边目录的层数 顶层目录在不同的机器上有所不同 要使用这个选项 就要把你的patch放在要被打补丁的目录下 然后在这个目录中运行path -p1

diff -u --recursive --new-file v2.1.118/linux/mm/swapfile.c linux/mm/swapfile. c--- v2.1.118/linux/mm/swapfile.c Wed Aug 26 :45 1998 linux/mm/swapfile.c Wed Aug 26 :57 1998 -489,7 489,7

int nr_good_pages 0; - char tmp_lock_map 0; unsigned long tmp_lock_map 0;

应用来自本段中使用-p1开关拷贝的patch可以有效地减短patch定位的路径 patch会查找当前目录下一个名为/mm的子目录 接着应该会在这儿发现swapfile.c文件 然后等待打补丁 在这个过程中 以破折号 - 号 译者注 开始的行会被一个以加号 号 译者注 开始的行代替 一个典型的patch会包含对多个文件的更新 每个部分中都由对两个版本的文件运行diff -u命令的输出结果组成

patch在操作时把自己的输出结果显示在屏幕上 但是这种输出通常都滚屏太快 来不及观看 原来准备patch的文件名为. orig 新的patch文件会覆盖这个初始文件名

使用不同版本的patch问题来源可能不同 所有的版本在网络上都是可用的 Larry Wall近年来已经不再做很多工作来更新patch了 这可能是由于他最后发行的一个版本在大部分情况下都能正常运行 最近几年以来 一直是GNU项目的 FSF程序员发行新版本的patch 他们首先修订有问题的patch 但是我最近一直使用没有问题的2.5版本 这是Debian2.0的发行版本号 过去 我的2.1版本也一直运行的很好 当前的GNU patch的版本可以从GNU FTP站点上获取 然而大部分人都只使用他们Linux发行版中所提供的版本

让我们假定你已经对一个目录下的源程序文件进行了patch修补工作 但是patch并没有清晰地发挥作用 这可能会偶然发生 在打补丁的过程中会显示错误信息 其中带有行号 说明哪一个文件出现了问题 有时错误是很明显的 例如缺少了分号 这种错误可以不费多大力气就能改正 另外一种可能是从 patch部分删除了产生问题的部分 但是这样根据所涉及到的文件的不同可能会正常工作 也可能不能正常工作了

另外一种常见的错位为 假设你有一个未使用tar打包的内核源程序文件 在/linux/arch/下浏览各个子目录时你会发现各种机器体系结构子目录 例如alpah sparc等等 如果你和大多数Linux用户一样 使用的是Intel的处理器 或者是Intel系列 你可以决定删除这些目录 这些目录对于编译你特殊的内核并不需要 只是白白占用了磁盘空间 一段时间之后发行了一个新的内核patch 此时试图进行patch操作 当它发现不能找到自己打补丁需要的Alpha或者PPC文件 就会停顿下来 幸运的是patch在这些地方允许用户参与 它会询问Skip this patch.回答y patch就可以按照正确的路径继续执行 也许你需要回答这个问题很多次 因此允许自己不需要的目录保留在磁盘上是一种很好的方法

很多Linux用户使用patch都主要是给内核源程序打补丁 因此有一些技巧可以使用 可能最简单的方法是使用shell脚本给内核打补丁 这可以在内核源程序树中的/scripts子目录中找到 这种方便的 编写良好的脚本是由Nick Holloway在1995年编写的 两年以后 Adam Sulmicki增加了多种压缩格式的支持 包括. bz. bz2 compress gzip和无格式文本 也就是已经解压的patch 这个脚本假定在你使用新版本的patch时 你的内核源程序是在/usr/src/linux目录中 这些缺省值可以通过这种格式的命令行开关覆盖 patch -kernel sourcedir patchdir 如果任何一部分的patch失败 对内核打补丁的过程都会失败 但是如果patch清晰地起作用 它就会调用find 这会删除所有的patch留下的. orig文件

如果你准备查看命令的输出 或者可能你希望保留. orig文件直到你确定打过补丁的源程序编译已经通过 按照我的经验 直接运行patch 正如前面介绍的一样 patch位于内核源程序的最高目录 是很可靠的 为了避免对patch进行解压 在使用之前 可以使用这样一个技巧

bzip2 -dc patchXX.bz2 patch -p1

在使用patch之后 可以使用find程序来检测被拒绝的文件

第一次使用这个命令 语法可能有些不清楚 点号. 说明find应该查找当前目录并递规查找当前目录之下的所有子目录 记住 点号前后都应该有一个空格 通配符 号前面的反斜线把星号转义出来 以免shell会搞混 星号是有其它意义的 如果find找到了任何的. rej文件 它就会把文件名打印到屏幕上 如果没有任何输出find就退出了 那么就差不多能确定patch正确发挥作用了

find. -name . orig -print0 xargs -0r rm -f

这个命令敲起来相当麻烦 可以使用一个新的shell别名来代替这个命令 在你的 /.bashrc文件中类似这样的一行

alias findorig find. -name . orig -print0 xargs -0r rm -f

可以允许你只输入findorig就可以调用前面的命令 如果别名命令的定义中包含空格 那么就必须使用单引号 为了不用先退出再重新登陆就可以使用一个新的别名 可以在命令行中敲如 /.bashrc

如果你用ls察看一个目录时 发现有的文件或文件夹的颜色和别的不一样 蓝色的 那就是一个用ln命令生成的文件 用ls -l命令去察看 就可以看到显示的link的路径了 第二 ln的链接又软链接和硬链接两种 软链接就是ln -s , 它只会在你选定的位置上生成一个文件的镜像 不会占用磁盘空间 硬链接ln , 没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件 无论是软链接还是硬链接 文件都保持同步变化.

Linux / Unix Command Library: patch. Learn about its synopsis, description, options, and examples.

linux patch命令参数及用法详解---linux打补丁命令 - Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

unix patch directory

Unix patch刷新 SCO unix 配置显卡刷新率 请问:SCO unix PC版如何配置显卡刷新率. by No such file or directory,搞定. win32 socket dll调用问题 c builder.

Explains how to extract and print out directory portion of given file path name on a Unix/Linux bash and ksh shell.

Option 1: Calling OPatch specifying the patch directory UNIX: ORACLE_HOME/OPatch/opatch apply patch_dir -verbose Option 2: Calling.