RPM:(redhat package manager)
Linux发行厂商会在固定的硬件平台和操作系统上将需要安装的软件编译好,然后将软件所有相关的文件打包成一个特殊格式的文件。用户在取得这个文件之后只需要通过特定的命令就可以安装此包。
RPM就是来自Redhat公司开发出来的。
RPM的缺点就是不能自动的解决包依赖关系,当安装一个包时,弹出一大堆需要手动安装的依赖,我估计等你安装完,老板就要和你说拜拜了!
当然RPM还是有优点的,比如简单的一个小工具安装RPM速度很快,也很方便。包括我们查询系统中的某包时,会使用到RPM!
格式:rpm [选项] 包名
常用选项:
安装操作:
-i:安装
-v:显示安装信息
-h:以进度条显示安装进度
常组合使用:rpm -ivh 包名
查询操作:
-q:查询指定包是否安装
-qa:查询系统上所有以安装包
-qi:查询指定报的简要信息
-ql:查询指定包生成的文件
-qc:查询指定包安装完成后生成的配置文件
-qd:查询指定包安装完成后生成的帮助文件
-qf:查询指定文件来自哪个包
-q --scripts:查询指定包中的脚本
-qpi:查询尚未安装的包文件的相关信息
--root:以某个目录作为安装点,不在默认安装至根目录下
--force:强制安装,在某些场景还是用的上的
--nodeps:忽略依赖,坏处是能安装上,但是不一定能用
--replacepkgs:重新安装并覆盖原有的文件
rpm的选项不止这些,当然这些很常用。
yum 使用方法
yum的底层还是通过rpm来实现的,只是yum为我们解决了安装软件时出现的依赖性问题,安装时会自动处理软件包的依赖性。
在使用yum时,需要配置yum服务,而每个yum服务都会提供不同的软件功能,yum服务会根据功能进行分类,所谓分类就是指不同的仓库。
系统会有自带的仓库,只要电脑能连上互联网就可以使用仓库,就可以下载安装软件包,当然也有不需要联网就可以安装软件包的需求,有需求就有解决方法,后面介绍。
yum的配置文件:
主配置文件:/etc/yum.conf,为各仓库提供公共配置文件
各仓库的定义:/etc/yum.repo.d/*.repo,文件必须以.repo为后缀
首先简单介绍以下yum的使用:
格式 :yum 选项 软件包名
常用选项:
install 安装软件包
安装时只需要提供包名即可
如果存在不同仓库中有多个版本时,会默认安装最新版本
如果要安装指定版本,就需要指明版本号
-y 安装时会交互式提醒是否安装,指定-y自动回答yes,无需手动确认
reinstall 重新安装,会将原有包覆盖
remove 卸载软件包
search 搜索软件包,支持模糊匹配
info 查看程序相关的简要信息
list 列出当前系统安装包,太多了,直接用search查。
grouplist 列出当前系统软件包组
groupinstall软件包组安装
安装时如果包组名称带有空格之类的特殊字符,需加引号引起来,例:yum groupinstall "development tools"
groupremove卸载软件包组
groupinfo 包组简要信息
history 查看安装历史, 会显示安装时间,用户,编号,动作等。
undo 序号:卸载,并卸载安装软件时的所有依赖包,相当于撤销之前动作,谨慎使用,因为依赖包有可能被其他软件所依赖
redo 序号:重新安装,与undo相反。
yum的仓库管理工具:
clean:清理缓存
all:所有缓存
package:指定包缓存
metadata:指定仓库缓存
repolist:列出已配置的所有仓库,变相的创建缓存
makecache:创建缓存,自动连接至每一个可用仓库,下载数据,创建为缓存
以上作为常用操作足以。
yum配置格式
创建yum仓库有两种方法:
第一是直接使用光盘镜像,这种方法仅适合本机使用,在没有联网的情况可使用
第二种是创建网络yum仓库,通过互联网上的阿里云,清华,163等来实现。
创建yum仓库配置格式:
[repo ID] :仓库的名字
name=[name] :别名
baseurl=url://... :仓库的地址,有以下几种
file:// :本地路径地址
http:// :网络路径地址
https:// :网络路径地址
ftp:// :网络路径地址
gpgcheck={0|1} :是否检查合法性,0表示不检查
enabled={0|1} :是否启用仓库,默认为启用,0位不启用
gpgkey=URL :公钥地址
创建本地源:
1)首先将光盘挂载至/meida/cdrom目录
2)新建以.repo为后缀的文件,例centos.repo
内容为:
[DVDbase]
name=centos7-base
baseurl=file:///media/cdrom
gpgcheck=0
就这几行,本地yum就搭建完成,同一文件中也可穿件多个源
配置epel源,需主机可访问互联网
[EPEL]
name=centos7-epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch/
gpgcheck=0
$releasever:yum的内置变量,会自动判断系统主版本号centos 6 或centos 7
$basearch:系统平台,例如x86_64
这一段其实表示为 https://mirrors.aliyun.com/epel/7/x86_64/
配置文件完成后使用 yum clean all 清除一下缓存,在用 yun repolist 列出当前可用仓库。这样就可以使用了
例:安装包
yum install -y tree
Installing:
tree x86_64 1.6.0-10.el7 Base 46 k
包名 系统平台 包版本信息 仓库名 包大小
Installed:
tree.x86_64 0:1.6.0-10.el7
Complete!
出现Complete!则表示安装成功
yum install -y ftp lftp telnet :可一次安装多个
Installed:
ftp.x86_64 0:0.17-67.el7 lftp.x86_64 0:4.4.8-11.el7 telnet.x86_64 1:0.17-64.el7
Complete!
搭建局域网yum服务器
yum install -u httpd 安装httpd软件包
systemctl start httpd 启动httpd服务:
/var/www/html/ 将文件存放在httpd服务默认目录下:
mkdir -p /var/www/htmi/centos{6,7} 创建不同版本目录
mount /dev/sr0 /var/www/htmi/centos/7 将指定版本光盘经叛挂载至对应版本目录,sr0为centos7光盘镜像
mount /dev/sr1 /var/www/htmi/centos/6 sr1为centos6光盘镜像
yum客户端配置
vim /etc/yum.repo.d/centos.repo
内容为:
[base]
name=centos
baseurl=http://192.168.0.100/centos/$releasever
gpgcheck=0
这样就可以了,访问时会自动判断你的系统版本
源码编译安装程序
首先需要解决程序所依赖的环境,即编译开发工具,以及各个被依赖到的程序包开发组件,另外还有编译时指定参数来定义所需要的配置来进行安装
编译开发工具包组有:
development tools
debug tools
还需要安装相关程序名称包括devel的子包,如果没有安装过程会报错,会报缺少哪个包,安装上即可。
源码安装四大步
1)解包–tar 释放源代码
2)配置–./configuer 针对当前系统,配置环境,配置好安装参数
./configure --help :查看参数列表
3)编译–make 将源代码编程二进制的可执行程序
4)安装–make install 将编译好的程序文件复制到系统中
源码安装httpd
Apache的安装时建立在APR的基础上的,所以安装Apache就需要安装对应版本的APR版本
到官网下载源码包
APR源码包:
https://apr.apache.org/download.cgi
httpd源码包
http://httpd.apache.org/download.cgi#apache24
在早期的编译安装中,apr和apr-util是和http分开编译安装的,后来才支持的将解压后的apr-release和apr-util-release两个目录导入到httpd-release源码包目录下的srclib/目录下并分别命名为apr和apr-util。然后在./configure的时候只需要添加–with-included-apr这项就可以实现统一编译。能偷懒则偷懒!!!
将文件上传到虚拟机,lrzsz包
步骤:
1、解压:
tar xvf apr-1.7.0.tar.gz
tar xvf apr-util-1.6.1.tar.gz
tar xvf httpd-2.4.39.tar.gz
2、将apr两个对应的目录拷贝到http目2录下,编译时一起编译,不需要分开编译
mv apr-1.7.0 httpd-2.4.39/srclib/apr
mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
3、安装依赖包
yum install -y gcc pcre-devel openssl-devel expat-devel
4、准备编译选项
./configure \
--prefix=/app/httpd \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-included-apr \
--with-zlib \
--with-pcre \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
5、编译和安装
make -j 2 && make install
6、准备service文件,从其他相同版本中拷贝一份
vim /usr/lib/systemd/system/httpd.service ## 注意:copy过来的文件一定要放在此路径下
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
#Type=notify
Type=simple
## 特别注意,此处的类型一定要是simple,如果是默认的notify,那么在使用systemctl启动的时候会等待,直到超时才会退出
EnvironmentFile=/etc/httpd/httpd.conf
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:在编辑完service服务文件后需要先执行
systemctl daemon-reload
接着启动
systemctl start httpd
谨记:
{
在设置Type=simple时,我曾设置过notify类型,但是发现在执行了systemc start httpd后,执行会一直等待,直到httpd服务启动超时
有大神解释道:如果我们使用的是默认的httpd配置文件,那必须保证配置文件中包含module_systemd,那个module为获取apache启动成功信息所必须的,但是我查了下对应的module好像是apache 2.5版本才有,我使用的是2.4版本。如果不能启动对应的module,可以使用simple类型。
}
7、默认编译安装的httpd使用的deamon用户和组,如果想修改,执行
useradd -r -s /sbin/nologin
修改配置文件安装上面编译的路径是/etc/httpd/httpd.conf,找到以下两项修改
User apache
Group apache
8、网页默认目录,编译安装的网页默认目录是/app/httpd/htdocs/,如果想修改,执行
mkdir /data/html/
修改配置文件/etc/httpd/httpd.conf,找到以下两项修改
DocumentRoot "/data/html"
<Directory "/data/html">
由此安装就完成
脚本练习
#/bin/bash
#
PS3=`echo please input number: `
select name in alais change_PS1 yum.repo sl_game weather quit;do
case $REPLY in
1)
echo "alais cdnet='cd /etc/sysconfig/network-script/'" >> $HOME/.bashrc
echo "alais yy='yum install -y $1'" >> $HOME/.bashrc
;;
2)
echo 'PS1="\033[1;32m[\u@\h \W]\\$\033[0m"' >> /etc/profile.d/${USER}env.sh
;;
3)
cat > /etc/yum.repos.d/$HOSTNAME.repo << EOF
[base]
name=base
baseurl=file:///misc/cd/
gpgcheck=0
[epel]
name=base
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
EOF
;;
4)
if rpm -q sl &> /dev/null ;then
/usr/bin/sl
else
yum install -y sl &> /dev/null
if [ $? -eq 0 ];then
/usr/bin/sl
fi
fi
;;
5)
/usr/bin/curl wttr.in
;;
6)
echo "bye bye "
break
;;
*)
echo "input correct number.."
;;
esac
done