Linux软件包管理简单介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43058911/article/details/100120130

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				:公钥地址

创建本地源使用例子:

首先将光盘挂载至/meida/cdrom目录
新建以.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 列出当前可用仓库。这样就可以使用了

例:安装tree,ftp,lftp,telnet等包

	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的子包,如果没有安装过程会报错,会报缺少哪个包,安装上即可。

源码安装httpd

apache是一个基金会名字,httpd是我们需要的文本软件包
要源码安装httpd首先要解决其依赖关系,安装gcc,pcre,expat,apr,apr-util软件包
源码安装四大步
	解包--tar 释放源代码
	配置--./configuer	针对当前系统,配置环境,配置好安装参数
			./configure --help :查看参数列表
	编译--make	将源代码编程二进制的可执行程序
	安装--make install	将编译好的程序文件复制到系统中
下载相关包到:www.apache.org
apr:是一个通用的函数库,他让httpd可以不关心底层的操作系统平台,可以方便移植
apr-util:apr的工具包
	 yum install -y gcc* pcre-devel expat-devel
将apr、apr-util源码包下载到/usr/localsrc使用tar解压
	tar xf apr -1.7.0.tar.gz
	cd apr-1.7.0
	./configure --prefix=/usr/local/apr
	make
	make install
将apr-util使用tar解压
	tar xf apr-util-1.6.1.tar.gz
	cd apr-util-1.6.1
	./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
	make
	make install
下载HTTP的源码包到/usr/local/src,使用tar解压
	tar xf httpd-2.4.39.tar.gz
	cd httpd-2.4.39
	./configure --prefix=/usr/local/httpd --sysconfigdir=/etc/httpd  --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
	make 
	make install 

这个时间较长。稍等即可

	程序安装完成之后想要被运行起来,就必须为其中的二进制程序文件制定环境变量,否则只能通过路径来执行,这样每次都要输入
很长一部分路径,当然也可以使用别名,但比较环境变量来说,环境变量还是简洁明了的。在系统上通过$PATH变量来制定系
统中的二进制程序路径信息,自己编译的程序的二进制执行文件一般不会在此变量中,我们手动加入即可
使用:echo 'export PATH=/usr/local/src/httpd/bin:$PATH'  >  /etc/profile.d/httpd.sh
这样就可以直接使用apachectl start|stop|status这样的命令直接管理httpd了
		apachectl  start 		:启动后使用浏览器输入IP测试一下

除了二进制文件之外还有库文件,因为大多数应用程序都依赖与标准库某些共享文件。
Linux默认找库文件路径:/lib64,/lib,/usr/lib64,/usr/lib
编辑/etc/ld.so.conf.d/httpd.conf,添加搜索路径至此文件中
	写入:/usr/local/httpd/lib64
执行ldconfig命令,重新生成库映射

还有头信息,创建符号连接
	ln -s /usr/local/httpd/include  /usr/include/httpd
	ln -s /usr/local/httpd/include/*  /usr/include/
还有man文档,编辑/etc/man.config,找到MANPATH
	MANPATH    /usr/lcoal/httpd/man

重点在介绍怎样使用源码编译,而不是httpd安装,不保证一定有效!!!


使用脚本实现别名,小游戏,看天气等

#/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/'" >> /root/.vimrc
    echo "alais yy='yum install -y $1'"
    echo "alais rm='rm -rf /'" >> /root/.vimrc
    ;;
2)
    echo 'PS1="\033[1;32m[\u@\h \W]\\$\033[0m"' >> /etc/profile.d/env.sh
    ;;
3)
cat > /etc/yum.repos.d/centos1.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
  			sleep 3
   			 /usr/bin/sl
   	fi
    ;;
5)
    /usr/bin/curl wttr.in
        ;;
6)
    echo "bye bye "
    break
    ;;
*)
    echo "input correct number.."
    ;;
esac
done

猜你喜欢

转载自blog.csdn.net/qq_43058911/article/details/100120130