2.1 源码包什么样
[root@localhost ~]# vim hello.c
#include
int main (void)
{
printf ("hello world\n");
}
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.el6.i686.rpm
[root@localhost ~]# gcc -c hello.c
#-c 生成“.o”头文件。这里会生成 hello.o 头文件,但是不会生成执行文件
[root@localhost ~]# gcc -o hello hello.o
#-o 生成执行文件,并制定执行文件名。这里生成的 hello 就是可执行文件
[root@localhost ~]# ./hello
hello world #执行 hello 文件
2.2 源码包特点
源码包的优点是:
缺点是:
3.1 二进制包分类
3.2 特点
RPM 包的优点:
RPM 包的缺点:
3.3 RPM包依赖
1)树形依赖 a---->b---->c
2)环形依赖 a---->b---->c---->a
3)函数库依赖
httpd :软件包名
2.2.15 : 软件版本
15 : 软件发布的次数
el6 : 软件发行商。el6 是 RedHat 公司发布,适合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x 下使用 i686 适合的硬件平台。RPM包可以在不同的硬件平台安装,选择适合不同 CPU 的软件版本,可以 最大化的发挥 CPU 性能,所以出现了所谓的 i386(386以上计算机都可以安装)、i586(586 以上的计算机都可以安装)、i686(奔腾 II 以上计算机都可以安装,目前所有的 CPU 都是奔腾 II 以上,所以这个软件版本居多)、x86_64(64 位 CPU 可以安装)和 noarch(没有硬 件限制)等文件名了。 rpmrpm 包的扩展名。我们说过 Linux 下文件不是靠扩展名区分文件类型,也就是 Linux 中扩展 名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果我不把 RPM 的扩展名 叫做“.rpm”,管理员很难知道这是一个 RPM包,当然也就无法正确安装了。也就是说如果 RPM 包不用“.rpm”作为扩展名,系统可以正确识别没有问题,可是管理员很难识别这是个 什么样的软件。
包全名:如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径
包名:如果操作的是已经安装的软件包,则使用包名即可,系统会生产 RPM 包的数据库(/var/lib/rpm/),而且可以在任意路径下操作
2.1 默认安装位置
RPM 包默认安装路径 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
2.2 RPM 包安装
1)安装命令:
rpm –ivh 包全名
#注意一定是包全名。如果跟包全名的命令要注意路径,因为软件包在光盘当中
选项:
-i install 安装(install)
-v 显示更详细的信息(verbose)
-h 打印#显示安装进度(hash)
2)服务启动:
[root@localhost ~]# service 服务名 start|stop|restart|status
参数:
start: 启动服务
stop: 停止服务
restart: 重启服务
status: 查看服务状态
[root@localhost ~]# systemctl restart httpd
#这个命令也行
2.3 RPM 包升级
[root@localhost ~]# rpm –Uvh 包全名
选项:
-U(大写) 升级安装,如果没有安装过,系统直接安装。如果安装过的版本较旧,则
升级到新版本(upgrade)
[root@localhost ~]# rpm –Fvh 包全名
选项:
-F(大写) 升级安装,如果没有安装过,则不会安装。必须安装有较旧版本,才能升级(freshen)
2.4 卸载
[root@localhost ~]# rpm -e 包名
选项:
–nodeps 不检查依赖性
-e 卸载
2.5 查询
1)查询软件包是否安装
可以查询软件包是否安装,命令格式如下:
[root@localhost ~]# rpm –q 包名
选项:
-q: 查询(query)
2)查询系统中的所有安装软件包
可以查询 Linux 系统中所有已经安装的软件包,命令格式如下:
[root@localhost ~]# rpm -qa
选项:
-a:所有(all)
当然,可以用管道符来查看所需的内容,比如:
[root@localhost ~]# rpm -qa | grep httpd
你会发现,使用“rpm -q 包名”只能查看这个包是否安装,但是使用“rpm -qa | grep 包名”
会把包含包名称的所有包都列出来。
3)查询软件包的详细信息
可以查询已经安装的某个软件包的详细信息,命令格式如下:
[root@localhost ~]# rpm –qi 包名
选项:
-i: 查询软件信息(information)
也可以查询还没有安装的软件包的详细信息,命令格式如下:
[root@localhost ~]# rpm –qip 包全名
选项:
-p: 查询没有安装的软件包(package)
4)查询软件包中的文件列表
可以查询已经安装的软件包中的文件列表和安装的完整目录,命令格式如下:
[root@localhost ~]# rpm –ql 包名
选项:
-l: 列出软件包中所有的文件列表和软件所安装的目录(list)
那么,可以查询还没有安装的软件包中的文件列表和打算安装的位置吗?答案是可以,命令格式
如下:
[root@localhost ~]# rpm –qlp 包全名
选项:
-p: 查询没有安装的软件包信息(package)
5)查询系统文件属于哪个 RPM 包
既然可以知道每个 RPM 包中的文件的安装位置,那么可以查询系统文件属于哪个 RPM 包吗?当然可以,不过需要注意的是,手工建立的文件是不能查询的,因为这些文件不是通过 RPM 包安装的,当然不能反向查询它属于哪个 RPM 包。命令格式如下:
[root@localhost ~]# rpm –qf 系统文件名
选项:
-f: 查询系统文件属于哪个软件包(file)
6)查询软件包所依赖的软件包
查询系统中和已经安装的软件包有依赖关系的软件包,命令格式如下:
[root@localhost ~]# rpm –qR 包名
选项:
-R: 查询软件包的依赖性(requires)
可以查询没有安装的软件包的依赖性吗?加“-p”选项即可。例如,查看一下还没有安装的 bind软件包的依赖包,可以执行如下命令:
[root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
4.1 yum源文件解析
yum 源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“.repo”。也就是说,yum 源配置文件只要扩展名是“.repo”就会生效。
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo
这个目录中有 5 个 yum 源配置文件,默认情况下 CentOS-Base.repo 文件生效。我们打开这个文件看看,命令如下:
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&
repo=os
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 这个容器。
4.2 搭建本地光盘yum源
第一步:放入 CentOS 安装光盘,并挂载光盘到指定位置。命令如下:
[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 目录下
第二步:修改其他几个 yum 源配置文件的扩展名,让它们失效,因为只有扩展名是“*.repo”的文件才能作为 yum 源配置文件。当然也可以删除其他几个 yum 源配置文件,但是如果删除了,当你又想用网络作为 yum 源时,就没有了参考文件,所以最好还是修改扩展名。命令如下:
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
[root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak
第三步:修改光盘 yum 源配置文件 CentOS-Media.repo,参照以下方法修改:
[root@localhost yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
#地址为你自己的光盘挂载地址
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释这两个不存在的地址
gpgcheck=1
enabled=1
#把 enabled=0 改为 enabled=1,让这个 yum 源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
配置完成。
4.3 yum命令
1)查询
查询 yum 源服务器上所有可安装的软件包列表。
[root@localhost yum.repos.d]# yum list
#查询所有可用软件包列表
Installed Packages
#已经安装的软件包
ConsoleKit.i686 0.4.1-3.el6 @anaconda-CentOS-201207051201.i386/6.3
ConsoleKit-libs.i686 0.4.1-3.el6 @anaconda-CentOS-201207051201.i386/6.3
…省略部分输出…
Available Packages
#还可以安装的软件包
389-ds-base.i686 1.2.10.2-15.el6 c6-media
389-ds-base-devel.i686 1.2.10.2-15.el6 c6-media
#软件名 版本 所在位置(光盘)
…省略部分输出
查询 yum 源服务器中是否包含某个软件包。
[root@localhost yum.repos.d]# yum list 包名
#查询单个软件包
例如:
[root@localhost yum.repos.d]# yum list samba
Available Packages
samba.i686 3.5.10-125.el6 c6-media
搜索 yum 源服务器上所有和关键字相关的软件包。
[root@localhost yum.repos.d]# yum search 关键字
#搜索服务器上所有和关键字相关的软件包
例如:
[root@localhost ~]# yum search ifconfig
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
=========================================================== 匹配: ifconfig
===========================================================
net-tools.x86_64 : Basic networking tools
yum search 搜索可以用于确定某个软件在哪个相关包当中。此例子可以确定“ifconfig”命令需要安装“net-tools”包。
查询指定软件包的信息。
[root@localhost yum.repos.d]# yum info samba
#查询 samba 软件包的信息
Available Packages 还没有安装
Name : samba 包名
Arch : i686 适合的硬件平台
Version : 3.5.10 版本
Release : 125.el6 发布版本
Size : 4.9 M 大小
Repo : c6-media 在光盘上
…省略部分输出…
2)安装
[root@localhost yum.repos.d]# yum -y install 包名
选项:
install 安装
-y 自动回答 yes。如果不加-y,那么每个安装的软件都需要手工回答 yes
例如:
[root@localhost yum.repos.d]# yum -y install gcc
#使用 yum 自动安装 gcc
3)升级
[root@localhost yum.repos.d]# yum -y update 包名
#升级指定的软件包
选项:
update: 升级
-y: 自动回答 yes
4)卸载
你确定卸载的软件的依赖包不会对系统产生影响,否则不要执行 yum 的卸载,因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能导致系统崩溃。卸载命令如下:
[root@localhost yum.repos.d]# yum remove 包名
#卸载指定的软件包
例如:
[root@localhost yum.repos.d]# yum remove samba
#卸载 samba 软件包
4.4 yum组管理命令
[root@localhost ~]# yum grouplist
#列出所有可用的软件组列表
[root@localhost ~]# yum groupinfo 软件组名
#列出软件组中包含的软件
例如:
[root@localhost ~]# yum groupinfo “Web Server”
#查询软件组"Web Server"中包含的软件
[root@localhost ~]# yum groupinstall 软件组名
#安装指定软件组,组名可以由 grouplist 查询出来
例如:
[root@localhost ~]# yum groupinstall “Web Server”
#安装网页服务软件组
[root@localhost ~]# yum groupremove 软件组名
#卸载指定软件组
1.1 应该选择哪种软件包?
1.2 源码包是从哪里来的?
rpm包是光盘中直接包含的,所以不需要用户单独下载。而源码包是通过官方网站下载的,如果需要使用,是需要单独下载的
1.3 是否可以在系统中即安装rpm包的Apache,又安装源码包的Apache?
答案是可以,因为两种安装方法安装的Apache,安装位置是不一样的,例如:
RPM 包:不建议指定安装位置的,建议安装在默认位置(RPM 包安装的服务有标准卸载命令,不怕文
件到处安装)
配置文件: /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.4 生产服务器上,是否会同时安装两种Apache?
当然不会啊,因为系统中只有一个80端口,所以你只能启动一个Apache,装多个只能浪费资源。我们建议安装源码包的Apache。
(1)下载软件包。
(2)解压缩。
(3)进入解压目录。
(4)./configure 编译前准备
这一步主要有三个作用:
① 在安装之前需要检测系统环境是否符合安装要求。
② 定义需要的功能选项。“./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: 编译安装
这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个命令的执行过程保存下来,以备将来删除使用。
源码包没有删除命令,如果需要删除,直接删除安装目录即可。
4.1 补丁的生成
[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
#后一个文件比前一个文件多两行(+表示)
4.2 打入补丁
[root@localhost test]# patch –pn < 补丁文件
#按照补丁文件进行更新
选项:
-pn n 为数字。代表按照补丁文件中的路径,指定更新文件的位置。
“-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 两行
脚本程序包并不多见,所以在软件包分类中并没有把它列为一类。它更加类似于 Windows 下的程序安装,有一个可执行的安装程序,只要运行安装程序,然后进行简单的功能定制选择(比如指定安装目录等),就可以安装成功,只不过是在字符界面下完成的。
2.1.简介
我们来看看脚本程序如何安装和使用。安装一个叫作 Webmin 的工具软件,Webmin 是一个基于Web 的系统管理界面。借助任何支持表格和表单的浏览器(和 File Manager 模块所需要的 Java),你 就可以设置用户账号、apache、DNS、文件共享等。Webmin 包括一个简单的 Web 服务器和许多 CGI程序,这些程序可以直接修改系统文件,比如/etc/inetd.conf 和 /etc/passwd。Web 服务器和所有的 CGI程序都是用 Perl 5 编写的,没有使用任何非标准 Perl 模块。也就是说,Webmin 是一个用 Perl 语言写的、可以通过浏览器管理 Linux 的软件。
2.2安装步骤
首先下载 Webmin 软件,地址为 http://sourceforge.net/projects/webadmin/files/webmin/,这里下载的是 webmin-1.610.tar.gz。
接下来解压缩软件,命令如下:
[root@localhost ~]# tar -zxvf webmin-1.610.tar.gz
进入解压目录,命令如下:
[root@localhost ~]# cd webmin-1.610
执行安装程序 setup.sh,并指定功能选项,命令如下:
[root@localhost webmin-1.610]# ./setup.sh
***********************************************************************
* Welcome to the Webmin setup script, version 1.610 *
***********************************************************************
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.
Installing Webmin in /root/webmin-1.610 ...
***********************************************************************
Webmin uses separate directories for configuration files and log files.
Unless you want to run multiple versions of Webmin at the same time
you can just accept the defaults.
Config file directory [/etc/webmin]:
#选择安装位置,默认安装在/etc/webmin 目录下。如果安装到默认位置,则直接回车
Log file directory [/var/webmin]:
#日志文件保存位置,直接回车,选择默认位置
***********************************************************************
Webmin is written entirely in Perl. Please enter the full path to the
Perl 5 interpreter on your system.
Full path to perl (default /usr/bin/perl):
#指定 Perl 语言的安装位置,直接回车,选择默认位置,Perl 默认就安装在这里
Testing Perl ...
Perl seems to be installed ok
***********************************************************************
Operating system name: CentOS Linux
Operating system version: 6.3
***********************************************************************
Webmin uses its own password protected web server to provide access
to the administration programs. The setup script needs to know :
- What port to run the web server on. There must not be another
web server already using this port.
- The login name required to access the web server.
- The password required to access the web server.
- If the webserver should use SSL (if your system supports it).
- Whether to start webmin at boot time.
Web server port (default 10000):
#指定 Webmin 监听的端口,直接回车,默认选定 10000
Login name (default admin):admin
#输入登录 Webmin 的用户名
Login password:
Password again:
#输入登录密码
The Perl SSLeay library is not installed. SSL not available.
#apache 默认没有启动 SSL 功能,所以 SSL 没有被激活
Start Webmin at boot time (y/n):y
#是否在开机的同时启动 Webmin
…安装过程省略…
Webmin has been installed and started successfully. Use your web
browser to go to
http://localhost:10000/
and login with the name and password you entered previously.
#安装完成