+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
按需规划网站可以根据自己的需求进行定制,成都网站制作、网站设计、外贸网站建设构思过程中功能建设理应排到主要部位公司成都网站制作、网站设计、外贸网站建设的运用实际效果公司网站制作网站建立与制做的实际意义
用KERNEL——PATCH升级KERNEL
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
无名指 兄写的大作
在kernel源码的README中有说明,如果你下载的PATCH是形如patch-2.4.X.gz的话使用gzip -cd patch-2.4.x.gz|patch -p0 如果是BZ格式的压缩包则使用bzip2 -dc patch-2.4.x.bz|patch -p0
但这样使用的话简直就是恶梦,你需要一个个的去替换文件,一般使用脚本来PATCH。这里假设你的源码目录为/src/linux,补丁下载到/src目录下,PATCH的步骤如下:
cd /src
linux/scripts/patch-kernel linux
脚本会自动找到补丁并应用,这里我解释一下:
linux/scripts/patch-kernel是个脚本文件,linux则是你的源码目录,如果要使这个命令完整的话后面还应该写上补丁所在的目录,这里因为补丁在当前目录下所以就省了。在补丁目录后面还可写上所要使用的补丁的最高版本号,比如你的源代码为2.4.10,而你下载了从2.4.10到2.4.20的所有软件包,并都放在同一目录下。在patch时你只想升级到2.4.19,不想使用2.4.20。命令格式就该象下面这个样子:
源码目录/scripts/patch-kernel 源码目录 补丁所在目录 2.4.19
这样的话版本号到2.4.19为止的所有补丁都会被使用,而2.4.20则被忽略不会被patch上。
如果不写上最高的版本号则目录下的所有补丁都会被使用。哇!写的手软,不过还没完,为了让大家不会再象我一样为打补丁而死大量的脑细胞,我接着写!!
上面的格式只能patch标准的补丁,而有时kernel会发布些pre或ac补丁,一般格式如下:
patch-2.4.x-pre*.gz
patch-2.4.x-ac*.gz
patch-2.4.x-pre*-ac*.gz
patch-2.4.x-pre*-acl*.gz
这时就要加参数才能patch了,对于ac补丁要这样使用
linux/scripts/patch-kernel linux -ac*
*为0到9的数字,比如patch-2.4.5-ac3.gz 这时的参数就为-ac3,也就是说参数同版本号的最后一个域相同。但有个例外象patch-2.4.x-pre*.gz这样的补丁就不能这样使用,我就是被这样的补丁搞的头大。最后分析脚本才发现,它居然没为pre设置参数,不知这是不是疏乎。这样的话你可以自己改脚本,不过我偷了点懒没改脚本,而是改了补丁的文件名:
mv patch-2.4.x-pre1.gz patch-2.4.x.gz
这样的话就可以使用了,而且并没有出现问题,可以正常编译。对于-pre*-ac*这样的补丁也是一样操作把其中的pre*删除再使用-ac*参数patch就可以了。
当然你也可以直接使用patch命令来安装,为了不回答那么多的问题,就不能使用patch -p0而要把命令改为如下形式:
gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 源码目录
可以使用这种方式来安装任何补丁,而不用管它的文件名了。
哇总算写完了,这是我今天和补丁作斗争的战果!!拿出来希望能对大家有点帮助!!
你可以先去下载你需要的补丁包(包里一般有一个补丁文件的,因为如果有不同的版本,就肯定会有补丁的),然后用命令:patch 命令打包就行了。具体用法如下:
patch -p[num] patchfile
"patchfile"是你下载的补丁文件,在这个补丁文件里一般都有要给那个文件打补丁的路径,
如:/u/howard/src/blurfl/blurfl.c 就是给blurfl.c打补丁;
而 -p[num]的作用就是去掉这个路径的第几个“/“前的内容,
如:patch -p1 patchfile 就是给u/howard/src/blurfl/blurfl.c 打补丁,
patch -p4 patchfile 就是给blurfl/blurfl.c 打补丁。
这里的路径怎么定就要看你把你的补丁文件放在什么目录了。
请自行下载安装SSH远程软件
通过SSH远程登录你的linux服务器
在linux下面;centos这类操作系统用yum来升级
而ubuntu这类系统用apt-get来升级
所以今天我们是在centos6.5上演示的
就要用带yum命令
先看看yum命令帮助
我们用yum update就可以升级软件
yum update会吧你已经安装在系统上的软件都更新掉
扫描完成之后问你是否更新
输入y回车开始下载
下载完成之后开始升级软件
升级完成
升级完成之后我们用yum upgrade来验证一次是否都升级好了
也就是说
我们可以用yum update或者yum upgrade都来升级你的centos操作系统
找个MySQL软件
然后由于手动安装MYSQL,需要在系统中建立名为mysql的用户和组,并制定musql用户的宿主目录是"/usr/local/mysql/data"
# groupadd -g 200 mysql
# useradd -u 200 -g mysql -d /usr/local/mysql/data -M mysql
然后将软件包释放到"/usr/local/“目录中,为了方便管理,用ln命令建立该目录的符号链接目录为mysql。
# tar zxvf MySQL-server-5.1.53-1.glibc23.i386.tar.gz -C /usr/local/
#cd /usr/local/
# ln -s MySQL-server-5.1.53-1.glibc23.i386/ mysql
然后在"var/lib"建立名为mysql的子目录,并设置目录和MYSQL服务器安装目录的属主和属组
# mkdir /var/lib/mysql
# chown -R mysql :mysql /var/lib/mysql
# chown -R root :mysql /usr/local/MySQL-server-5.1.53*
# chown -R mysql :mysql /usr/local/mysql/data/
然后进入到MySQL的服务器程序的目录,复制mysql的配置文件my.cnf到"/etc"目录中,并执行mysql.install_db命令初始化MySQL服务器中的数据库。
# cd /usr/local/mysql
#cp support-files/my-medium.cnf /etc/my.cnf
如果mysql的RPM包在系统中已经安装,"/etc"目录会存在my.cnf文件,将提示覆盖原有的my.cnf文件
cp:overweite '/etc/my.cnf'? y
# ./scripts/mysql_install_db
然后设置"/var/lib/mysql/"和"/usr/local/mysql/data/"两个目录中的所有文件属于mysql用户和用户组,以保证访问权限。
# chown -R mysql :mysql /var/lib/mysql/
#chown -R mysql :mysql /usr/local/mysql/data/
然后使用safe_mysqld 命令启动MYSQL服务器运行,并制定MYSQL服务程序以系统用户mysql的身份运行
# /usr/local/mysql/bin/safe_mysqld --user=mysql
由于数据库管理用户root的初始密码为空所以要设置
# /usr/local/mysql/bin/mysqladmin -u root password ‘密码'
最后指定登录数据库的用户名
# /usr/local/mysql/bin/mysql -u root -p (-p是设置提示用户输入口令)。
不知道对你有没有帮助 有空看看吧
这样按下字符c就可以清除屏幕,这样为为clear命令起别名是暂时有效,
关闭当前的Shell之后就失效了,要永久有效,必须将命令写入 ~/.bashrc的末尾
将文件file的内容显示到屏幕上
cp file1 file2 将文件file1的内容复制到file2文件,如果文件file2已存在,会覆盖文件file2文件
如果想要在覆盖之前有个提示,显示是否覆盖,可以加一个选项 -i cp file1 file2 -i
当文件file1是一个目录树时 需要加上选项 -r,表示递归地复制 即:cp file1 file2 -r
如果想要在覆盖之前有个提示,显示是否覆盖,可以加一个选项 -i cp file1 file2 -i -r
df命令用来查看当前文件系统的详细信息
如 df -h :以MB或者GB方式,显示磁盘空间的大小
打印输入的字符,相当于C程序的printf()函数与js中console.log()函数
echo "hello"
执行以上命令将会在屏幕上出现hello字样,如果要让echo支持转义字符,那么要加上选项-e
如:echo -e "hrllo\xiaoming"
find /opt/src -name " .dll" :在路径/opt/src上查询所有以.dll结尾的文件
find -name " .dll" :在当前路径查询所有以.dll结尾的文件
find /opt/src -empty" :在路径/opt/src上查询所有空文件
find /opt/src -mmin n" :在路径/opt/src上查找n分钟之前修改过的文件
find /opt/src -type[xxx]" :在路径/opt/src上查找某种类型的文件
默认情况下,find命令会递归地查找你说执行的目录下所有子目录
-r:如果有子目录,则递归的查找
-w:严格的匹配查询的字符
-n:打印行号
-H:打印文件名
例:在路径/home/fcj/Desktop/ceshi/file1/APIServer.xml下递归地查询字符串"删除用户" ,并打印出含有此字符串的文件名称和改字符串在文件中的行号
ifconfig + 网络名称+down
ifconfig + 网络名称+down up
比较两个文件或者目录的异同,并将之加工成符合某种格式的文档,这就是大名鼎鼎的补丁文件。神器diff是各种版本管理软件如svn、git的基石
现在比较两个文件code1.cs与code2.cs的异同
code1.cs内容:使用cat命令获取内容
code2.cs内容:
diff code1.cs code2.cs :此命令的含义,比较code2.cs与code1.cs异同,并把不同之处显示出来
这是diff命令的默认模式,不太符合人的阅读思维,还有另外两种模式
-c模式:使用上下文输出格式(文件1在上,文件2在下)和统一输出格式
-u模式:输出一个整体,只有在差异的地方会输出差异点,并标注出来
用diff比较目录
使用diff比较文件,并生成补丁文件buding.log
fcj@ubuntu:~/Desktop/ceshi$ diff /home/fcj/Desktop/ceshi/file1/code1.cs /home/fcj/Desktop/ceshi/file1/code2.cs -ubuding.log
查看文件buding.log的内容
df -h
[armlinux@lqm patch]$ diff-uN test0 test1 test1.patch
【注:因为单个文件,所以不需要-r选项。选项顺序没有关系,即可以是-uN,也可以是-Nu。】
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ moretest1.patch
************************************************************
patch文件的结构
补丁头
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。
一个补丁文件中的多个补丁
一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。
块
块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。
块的缩进
块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。
************************************************************
***diff命令会在补丁文件中记录这两个文件的首次创建时间,如下***
--- test0 2006-08-18 09:12:01.000000000 +0800
+++ test1 2006-08-18 09:13:09.000000000 +0800
@@ -1,3 +1,4 @@
+222222
111111
-111111
+222222
111111
[armlinux@lqm patch]$ patch-p0 test1.patch
patching file test0
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ cattest0
222222
111111
222222
111111
3、可以去除补丁,恢复旧版本
[armlinux@lqm patch]$ patch-RE -p0 test1.patch
patching file test0
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ cattest0
111111
111111
111111