linux软件包安装
1. rpm软件包(二进制包)
rpm包命名规则
1.1 手工命令安装安装
- 安装命令
rpm -ivh 包全名
特殊操作
2. rpm包升级
rpm -Uvh 包全名 或者 rpm -Fvh (U–update,F—freshen)
3. rpm卸载 rpm -e 包名
4. rpm查询 rpm -q 报名
rpm -qa // 查询已经安装的软件包选项: -a:所有(all)
//也可以通过管道符查询指定的软件包
rpm -qa | grep 包名
//查询软件包的详细信息
rpm -qi 包名 //-i: 查询软件信息(information)
//查询还没有安装的软件包的详细信息
rpm -qip //-p: 查询没有安装的软件包(package)
// 查询已经安装的软件包中的文件列表和安装的完整目录
rpm -ql 包名 //-l: 列出软件包中所有的文件列表和软件所安装的目录(list)
- 验证
- rpm软件包中的文件提取
1.2 yum在线自动安装
本地搭建yum源
通过虚拟机光盘修改配置文件来搭建yum源
后续通过vim 修改CentOS-Base.repo文件即可
yum命令
yum -y 包名 #安装
yum -y update 包名 #升级
yum list #查询
yum search 关键字 #查询含有关键字的软件报名
yum remove 包名 #删除
yum grouplist Or yum groupsearch #查询包组名
yum groupinstall 软件组名 #安装指定软件组,组名可以由 grouplist 查询出来
yum groupremove 软件组名 #卸载指定软件组
2. 源码软件包
如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更高。
如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单
源码包是通过官方网站下载的
是否可以在系统中即安装rpm包的Apache,又安装源码包的Apache?
答案是可以,因为两种安装方法安装的Apache,安装位置是不一样的,
例如:
RPM 包:不建议指定安装位置的,建议安装在默认位置(RPM 包安装的服务有标准卸载命令,不怕文件到处安装)
源码包:必须制定安装位置(源码包没有安装数据库,没有删除命令)
安装
我们来解释一下源码包安装的具体步骤。
(1)下载软件包。
wget http://archive.apache.org/dist/httpd/httpd-2.2.10.tar.gz
(2)解压缩。
tar -zxvf httpd-2.2.10.tar.gz
(3)进入解压目录。
(4)./configure 编译前准备
./configure --prefix=/usr/local/apache2/
yum -y install gcc
这一步主要有三个作用:
① 在安装之前需要检测系统环境是否符合安装要求。
② 定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help”
命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”来指定安装路径。
③ 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,后续的编译和安装需要依赖这个文件的内容。
需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用
“./configure”方式执行(“./”代表在当前目录下)。
(5)make 编译
make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把
源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗
时,需要有足够的耐心。
(6)make clean:清空编译内容(非必需步骤)。
如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行 make
clean 命令,它会清空 Makefile 文件或编译产生的“.o”头文件。
(7)make install: 编译安装
这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个
命令的执行过程保存下来,以备将来删除使用。
配置文件:
/usr/local/apache2/conf/httpd.conf
网页文件:
/usr/local/apache2/htdocs/
日志位置:
/usr/local/apache2/logs/
启动方法:
/usr/local/apache2/bin/apachectl start
删除
源码包没有删除命令,如果需要删除,直接删除安装目录即可。
补丁
生成补丁
[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/test/old.txt /root/test/new.txt > txt.patch
#比较两个文件的不同,同时生成 txt.patch 补丁文件
[root@localhost test]# vi txt.patch
#查看下这个文件
--- /root/test/old.txt 2012-11-23 05:51:14.347954373 +0800
#前一个文件
+++ /root/test/new.txt 2012-11-23 05:50:05.772988210 +0800
#后一个文件
@@ -2,3 +2,5 @@
school
is
atguigu
+in
+beijing
#后一个文件比前一个文件多两行(+表示)
打入补丁
[root@localhost test]# patch –pn < 补丁文件
#按照补丁文件进行更新
选项:-pn n 为数字。代表按照补丁文件中的路径,指定更新文件的位置。 (这里这个pn有点操蛋,模糊)
“-pn”不好理解,我们说明下。补丁文件是要打入旧文件的,但是你当前所在的目录和补丁文
件中的记录的目录是不一定匹配的,所以就需要“-pn”来同步两个目录。
比如我当前是在“/root/test”目录中(我要打补丁的旧文件就在当前目录下),补丁文件中记
录的文件目录为“/root/test/old.txt”,这时如果写入“-p1”(在补丁文件目录中取消一级目录)
那么补丁文件就会打入“/root/test/root/test/old.txt”文件中,这显然是不对的。那如果写入的
是“-p2”(在补丁文件目录中取消二级目录)那么补丁文件打入的就是“/root/test/test/old.txt”,
这显然也不对。如果写入的是“-p3”(在补丁文件目录中取消三级目录)那么补丁文件就是打入的
“/root/test/old.txt”,我们的 old.txt 文件就在这个目录下,所以就应该是“-p3”。
那么我们更新下“old.txt”文件,命令如下:
[root@localhost test]# patch -p3 < txt.patch
patching file old.txt
#给 old.txt 文件打补丁
[root@localhost test]# cat old.txt
#查看下 old.txt 的内容吧。
our
school
is
atguigu
in
Beijing
#多出来了 in Beijing 两行
脚本安装程序
以Webmin为例
wget https://nchc.dl.sourceforge.net/project/webadmin/webmin/1.610/webmin-1.610.tar.gz
tar -zxvf webmin-1.610.tar.gz
cd webmin-1.610
./setup.sh 根据提示操作即可.