示例:html
[root@localhost ~]# vim hello.c #include <stdio.h> int main(void) { printf("hello world\n"); } ``` [root@localhost ~]# gcc -c hello.c #-c 生成".o"头文件。这里会生成hello.o头文件,可是不会生成执行文件 [root@localhost ~]# gcc -o hello hello.c #-o 生成执行文件,并指定执行文件名。这里生成的hello就是可执行文件 [root@localhost ~]# ./hello hello world #执行hello文件
卸载方便node
软件包a------------->软件包b-------------->软件包cweb
httpd-2.2.15-15.el6.centos.1.i686.rpm
shell
httpd | 软件包名 |
---|---|
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
el6 | 软件发行商。el6是Redhat公司发布,适合RHEL6.x(RedHat Enterprise Linux)和CentOS6.x下使用 |
i686 | 适合的硬件平台。RPM包能够在不一样的硬件平台安装,选择适合不一样CPU的软件版本,能够最大化的发挥CPU性能,因此出现了所谓的i386(386以上计算机均可以安装)、i586(586以上的计算机均可以安装)、i686(奔腾II以上计算机均可以安装,目前全部的CPU都是奔腾II以上,因此这个软件版本居多)、x86_64(64位CPU能够安装)和noarch(没有硬件限制)等文件名。 |
rpm | rpm包的扩展名。Linux下文件不是靠扩展名区分文件类型,也就是Linux中扩展名没有任何含义。若是RPM包不用“.rpm”做为扩展名,系统能够正确识别没有问题,但是管理员很难识别这个是什么样的软件。 |
包全名:若是操做的是未安装软件包,则使用包全名,并且须要注意绝对路径数据库
包名:若是操做的是已经安装的软件包,则使用包名便可,系统会生产RPM包的数据库(/var/lib/rpm/),并且能够在任意路径下操做apache
RPM包默认安装路径 | 释义 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib | 程序所使用的的函数库保存位置 |
/usr/share/doc | 基本的软件使用手册保存位置 |
/usr/share/man | 帮助文件保存位置 |
安装命令vim
rpm -ivh 包全名 #注意必定是包全名。若是跟包全名的命令要注意路径,由于软件包在光盘当中 选项: -i install安装(install) -v 显示更详细的信息(verbose) -h 打印#显示安装进度(hash)
服务启动centos
[root@localhost ~]#service 服务名 start|stop|restart|status #参数: # start: 启动服务 # stop: 中止服务 # restart:重启服务 # status: 查看服务状态 [root@localhost ~]#systemctl restart httpd #这个命令也行
rpm包升级服务器
[root@localhost ~]#rpm -Uvh 包全名 #选项: #-U(大写) 升级安装,若是没有安装过,系统直接安装。若是安装过的版本较旧,则升级到新版本(upgrade) [root@localhost ~]#rpm -Fvh 包全名 #选项: #-F(大写) 升级安装,若是没有安装过,则不会安装。必须安装有较旧版本,才会升级(freshen)
卸载网络
[root@localhost ~]#rpm -e 包名 #选项: # --nodeps 不检测依赖性 # -e 卸载
查询
[root@localhost ~]#rpm -q 包名 #选项: # -q 查询(query)
[root@localhost ~]#rpm -qa #选项: # -a 全部(all) #固然,也能够用管道符来查看所需的内容,好比: [root@localhost ~]#rpm -qa | grep httpd #你会发现,使用“rpm -q 包名”只能查看这个包是否安装,可是使用“rpm -qa | grep 包名”会把包含名称的全部包都列出来。
#1.查询已安装软件包的详细信息 [root@localhost ~]#rpm -qi 包名 #选项: # -i 查询软件信息(information) #2.查询尚未安装的软件包的详细 [root@localhost ~]#rpm -qip 包全名 选项: # -p 查询没有安装的软件包(package)
#1.查询已安装软件包中的文件列表和安装的完整目录,命令格式以下: [root@localhost ~]#rpm -ql 包全名 #选项: # -l 列出软件包中全部的文件列表和软件所安装的目录(list) #2.查询没有安装的软件包中的文件列表和打算安装的位置 [root@localhost ~]#rpm -qlp 包全名 #选项: # -p 查询没有安装的软件包信息(package)
既然知道每一个RPM包中的文件安装位置,那么也能够查询系统文件属于哪一个RPM包;不过须要注意的是,手工创建的文件是不能查询的,由于这些文件不是经过RPM包安装的,固然不能反向查询它属于哪一个RPM包。命令格式以下:
[root@localhost ~]#rpm -qf 系统文件名 #选项: # -f 查询系统文件属于哪一个软件包(file)
#1.查询系统中和已安装的软件包所依赖的软件包,命令格式以下: [root@localhost ~]#rpm -qR 包名 #选项: # -R 查询软件包的依赖性(requires) #2.查询没有安装的软件包依赖性,命令格式以下: [root@localhost ~]#rpm -qRp 包名 #选项: # -p 查询没有安装的软件包信息(package)
验证
[root@localhost ~]#rpm -Va #选项: # -Va 校验本机已经安装的全部软件包 [root@localhost ~]#rpm -V 已安装的包名 #选项: # -V 校验指定RPM包中的文件(verify) [root@localhost ~]#rpm -Vf 系统文件名 #选项: # -Vf 校验某个系统文件是否被修改
数字证书
若是RPM包自己被动过,那么校验就不能解决问题了。咱们就必须使用数字证书验证。
数字证书有以下特色:
yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名必定是“.repo”。也就是说,yum源配置文件只要扩展名是“\.repo”就会生效。
[root@localhost ~]# vim /etc/yum.repos.d/backup/CentOS-Base.repo [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
在CentOS-Base.repo文件中有5个yum源容器,这里只列出了base容器,其余容器和base容器相似。咱们解释一下base容器
[root@localhost ~]#mkdir /mnt/cdrom #建立cdrom目录,做为光盘的挂载点 [root@localhost ~]#mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected mounting read-only #挂载光盘到/mnt/cdrom目录下
[root@localhost ~]#cd /etc/yum.repos.d/ [root@localhost yum.repos.d]#mv CentOS-Base.repo /backup/CentOS-Base.repo [root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo /backup/CentOS-Debuginfo.repo [root@localhost yum.repos.d]#mv CentOS-Vault.repo /backup/CentOS-Vault.repo
[root@localhost ~]# vim /etc/yum.repos.d/backup/CentOS-Media.repo [c6-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS_6.6_Final/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
查询
[root@localhost yum.repos.d]#yum list #查询全部可用软件包列表
[root@localhost yum.repos.d]#yum list 包名 #查询单个软件包 #例如: [root@localhost yum.repos.d]# yum list httpd Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile Installed Packages httpd.x86_64 2.2.15-39.el6.centos @anaconda-CentOS-201410241409.x86_64/6.6
[root@localhost yum.repos.d]# yum search 关键字 #搜索服务器上全部和关键字相关的软件包 #例如: [root@localhost yum.repos.d]# yum search ifconfig Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile ======================================================================== Matched: ifconfig ========================================================================= net-tools.x86_64 : Basic networking tools
yum search搜索能够用于肯定某个软件在那个相关包当中。此例子能够肯定“ifconfig”命令须要安装“net-tools”包
[root@localhost yum.repos.d]#yum info httpd #查询samba软件包的信息 Installed Packages Name : httpd Arch : x86_64 Version : 2.2.15 Release : 39.el6.centos Size : 2.9 M Repo : installed From repo : anaconda-CentOS-201410241409.x86_64 Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
[root@localhost yum.repos.d]#yum -y install 包名 #选项: # install 安装 # -y 自动回答yes,若是不加-y,那么每一个安装的软件都须要手工回答yes #例如: [root@localhost yum.repos.d]# yum -y install gcc #使用yum自动安装gcc
[root@localhost yum.repos.d]# yum -y update 包名 #升级指定的软件包 #选项: # update 升级 # -y 自动回答yes
注意:在进行升级操做时,yum源服务器中软件包的版本比本地安装的软件包的版本高。
[root@localhost yum.repos.d]# yum -y update #升级本机全部软件包 #这条命令会升级系统中全部的软件包,不过咱们的生产服务器是稳定优先的,因此这种全系统升级的状况并很少见。
除非您肯定卸载的软件依赖包不会对系统产生影响,不然不要执行yum的卸载,由于颇有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能致使系统崩溃。卸载命令以下:
[root@localhost yum.repos.d]# yum remove 包名 #卸载指定的软件包 #例如: [root@localhost yum.repos.d]# yum remove samba #卸载samba软件包
[root@localhost yum.repos.d]# yum grouplist #列出全部可用的软件组列表
[root@localhost yum.repos.d]# yum groupinfo 软件组名 #列出软件组中包含的软件 #例如: [root@localhost yum.repos.d]# yum groupinfo "Web Server" #查询软件组“WebServer”中包含的软件
[root@localhost yum.repos.d]# yum groupinstall 软件组名 #安装指定软件组,组名能够由grouplist查询出来 #例如: [root@localhost ~]#yum groupinstall "Web Server" #安装网页服务软件组
[root@localhost ~]#yum groupremove 软件组名 #卸载指定软件组
1.1 应该选择哪一种软件包
1.2 源码包从哪儿来
rpm包是光盘中直接包含的,因此不须要用户单独下载。而源码包是经过官方网站下载的,若是须要使用,是须要单独下载的。
1.3 是否能够在系统中即安装rpm包的Apache,又安装源码包的Apache?
答案是能够,由于两种安装方法安装的Apache,安装位置是不同的,例如:
配置文件: /etc/httpd/conf/httpd.conf 网页位置: /var/www/html/ 日志文件: /var/log/httpd/ 启动方法: 1)service httpd restart 2)/etc/rc.d/init.d/httpd restart
配置文件: /usr/local/apache2/conf/httpd.conf 网页位置: /usr/local/apache2/htdocs/ 日志文件: /usr/local/apache2/logs/ 启动方法: /usr/local/apache2/bin/apachectl start
1) 下载软件包
2) 解压缩
3) 进入解压目录
4) ./configure 编译前准备
这一步主要有三个做用:
须要注意的是,configure不是系统命令,而是源码包软件自带的一个脚本程序,因此必须采用"./configure"方式执行(“./”表明在当前目录下)
5). make 编译
make会调用gcc编译器,并读取Makefile文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被Linux识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时,须要有足够的耐心。
6). make clean 清空编译内容
若是在“./configure”或“make”编译中报错,那么咱们在从新执行命令前必定要记得执行make clean命令,它会清空Makefile文件或编译产生的“.o”头文件。
7). make install 编译安装
这才是真正的安装过程,通常会写清楚程序的安装位置。若是忘记指定安装目录,则能够把命令的执行过程保存下来,以备未来删除使用。
源码包没有删除命令,若是须要删除,直接删除安装目录便可。
[root@localhost ~]#diff 选项 old new #比较old和new文件的不一样 #选项: # -a 将任何文档当作文本文档处理 # -b 忽略空格形成的不一样 # -B 忽略空白行形成的不一样 # -I 忽略大小写形成的不一样 # -N 当比较两个目录时,若是某个文件只在一个目录中,则在另外一个目录中视做空文件 # -r 当比较目录时,递归比较子目录 # -u 使用同一的输出格式
例如:
[root@localhost ~]#mkdir test #创建测试目录 [root@localhost ~]#cd test #进入测试目录 [root@localhost test]# vi old.txt our school is atguigu #文件old.txt,为了一会输出便于比较,每行分开 [root@localhost test]# vi new.txt our school is atguigu in Beijing #文件new.txt #比较下两个文件的不一样,并生成补丁文件“txt.patch”,命令以下: [root@localhost test]# diff -Naur /root/old.txt /root/test/new.txt > txt.patch [root@localhost test]# vi txt.patch --- /root/old.txt 1969-12-31 16:00:00.000000000 +0800 +++ /root/test/new.txt 2019-11-20 13:10:25.539978995 +0800 @@ -2,3 +2,5 @@ our school is atguigu +in +Beijing #后一个文件比前一个文件多两行(+表示)
[root@localhost test]# patch -pn < 补丁文件 #按照补丁文件进行更新 #选项: # -pn n为数字。表明按照补丁文件中的路径,指定更新文件的位置。(在补丁文件目录中取消n级目录) #更新“old.txt”文件,命令以下: [root@localhost test]# patch -p3 < txt.patch patching file old.txt [root@localhost test]# cat old.txt our school is atguigu in Beijing #多出来了in Beijing两行