linux包管理

一 使用RPM工具管理RPM包

需要考虑:

  1. OS版本,e.g. Centos6/7 cat /etc/redhat-release
  2. 系统架构,e.g. i386/x86_64 uname -m
  3. 依赖关系,e.g. ntfs-3g-devel 需要依赖ntfs-3g
  4. rpm包的版本, e.g. 2015/2017
==安装 
rpm -ivh local_path		//local_path本地路径
rpm -ivh url_path		//url_path地址链接

[root@youngfit ~]# rpm -ivh ntfs-3g-2017.3.23-1.el7.x86_64.rpm	//套件名,-i安装
[root@youngfit ~]# rpm -ivh zip-3.0-11.el7.x86_64.rpm

[root@youngfit ~]# rpm -Uvh ntfs-3g-2017.3.23-1.el7.x86_64.rpm	//套件名,-U更新

[root@youngfit ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

参数解释:

额外选项: --nosignature //不检验软件包的签名

​ --force //强制安装软件包

	  yum reinstall --nodeps           //忽略依赖关系           

软件卸载
#rpm -e 软件名称

​ --force 在安装的时候用(强制覆盖安装)

​ --nodeps 在卸载的时候用(卸载的时候不检查依赖关系)

RPM包安装信息存储到本地RPM数据库中。。。

==查询   
(从本地的rpm数据库)
[root@youngfit ~]# yum -y install httpd		   
[root@youngfit yum.repos.d]# rpm -q httpd	//查询指定包是否安装
如果没有安装,则提示package ***** is not installed

[root@youngfit ~]# rpm -qa|grep httpd //查看安装包,并过滤出httpd的安装包
httpd-tools-2.4.6-90.el7.centos.x86_64
httpd-2.4.6-90.el7.centos.x86_64

[root@youngfit ~]# rpm -ql httpd					    //查询httpd安装的文件   	
[root@youngfit ~]# rpm -qf /var/www/html	    //查询该文件属于哪个rpm包、
httpd-2.4.6-90.el7.centos.x86_64
[root@youngfit ~]# rpm -qi httpd					    //查询包的信息
Name        : httpd
Version     : 2.4.6
Release     : 90.el7.centos
Architecture: x86_64
Install Date: Fri 03 Jan 2020 07:08:02 PM CST
Group       : System Environment/Daemons
Size        : 9817301
License     : ASL 2.0
Signature   : RSA/SHA256, Fri 23 Aug 2019 05:25:32 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : httpd-2.4.6-90.el7.centos.src.rpm
Build Date  : Thu 08 Aug 2019 07:43:53 PM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

[root@youngfit ~]# rpm -qc httpd				//查询某个包安装的配置文件
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd

[root@youngfit ~]# rpm -qd httpd				//查安装的帮助文档
/usr/share/doc/httpd-2.4.6/ABOUT_APACHE
/usr/share/doc/httpd-2.4.6/CHANGES
/usr/share/doc/httpd-2.4.6/LICENSE
/usr/share/doc/httpd-2.4.6/NOTICE
/usr/share/doc/httpd-2.4.6/README
/usr/share/doc/httpd-2.4.6/VERSIONING
/usr/share/doc/httpd-2.4.6/httpd-dav.conf
/usr/share/doc/httpd-2.4.6/httpd-default.conf
/usr/share/doc/httpd-2.4.6/httpd-info.conf
/usr/share/doc/httpd-2.4.6/httpd-languages.conf
/usr/share/doc/httpd-2.4.6/httpd-manual.conf
/usr/share/doc/httpd-2.4.6/httpd-mpm.conf
/usr/share/doc/httpd-2.4.6/httpd-multilang-errordoc.conf
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
/usr/share/doc/httpd-2.4.6/proxy-html.conf
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/fcgistarter.8.gz

==卸载
[root@youngfit ~]# rpm -e httpd

[root@youngfit ~]# rpm -e httpd --nodeps            !!!!!!!!!!!!!!不检测依赖关系  直接卸载
案例3:安装如下软件包 vsftpd  samba  nfs-utils  httpd  dhcp  postfix  mysql-server  php lftp dos2unix unix2dos tigervnc 

[root@youngfit Packages]# pwd 
/media/cd/Packages

[root@youngfit Packages]# rpm -ivh samba-3.0.33-3.37.el5.i386.rpm samba-common-3.0.33-3.37.el5.i386.rpm 
rpm工具管理软件包总结:
1. 很难解决包依赖关系 
2. 如果某个文件没有,很难知道它由哪个rpm包提供,例如 semanage 或 tree 命令是由哪个包提供?

二 yum方式管理

制作本地yum源:

首先需要挂载镜像
[root@youngfit ~]# mkdir /mnt/centos7u3 
[root@youngfit ~]# mount 镜像.iso	/mnt/centos7u3   //dev/cdrom
[root@youngfit ~]# rm -rf /etc/yum.repos.d/*		//直接删除,不建议操作,建议使用修改名称
[root@youngfit ~]# cd /etc/yum.repos.d/
[root@youngfit ~]# mv  CentOS-Base.repo CentOS-Base.repo.bak
[root@youngfit ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[centos7u3]					//yum源区别名称,用来区分其他的yum源  
name=centos7u3				//yum源描述   yum源名字
baseurl=file:///mnt/cenos7u3         //指定本地yum源的路径
enabled=1				//是否使用此yum源(1为打开,0为关闭)
gpgcheck=0 				//检查软件

yum方式配置及使用

可以自动解决rpm软件依赖关系

分类:本地yum和远程yum
    本地yum:
        file://
    远程yum:
        http://
        ftp://

yum源:提供软件仓库
	挂载镜像到本地目录/mnt/rhel6u4
	#mount -o loop /rhel6u4.iso /mnt/rhel6u4   (rhel6)  centos6时需要用-o loop进行挂载
    #mount  /centos7u3.iso /mnt/centos7u3     (rhel7)
    
 如果是虚拟机,把iso镜像放到虚拟机的光驱里面去,开机连接即可    
    #mount  /dev/cdrom  /mnt/centos7u3
清理yum缓存:
	# yum clean all

缓存软件包信息:    
    提高搜索/安装软件的速度
    # yum makecache
    
    查询yum源信息:   
    # yum repolist     
        
查找软件:
	# yum search  mysql   
	此命令会搜索到系统已经安装和yum源里没有安装的软件信息,可以用他简单测试yum是否好用

查看软件依赖性关系:                 
    # yum  deplist  httpd

查看文件属于哪个软件
    # yum provides rz    

查看系统已经安装好的软件和没有安装的软件(源里存在即可查到):
	# yum list	

查看系统已经安装好的软件组和没有安装的软件组(源里存在即可查到):
	# yum grouplist

查看软件组包含的具体软件:
    # yum  groupinfo  '软件组名称'  
    
安装软件组:
	# yum groupinstall  ‘软件组名称’   
	如果软件或者软件组名称内有空格,要给空格转义或者加引号

安装软件:
	# yum install 软件名称
	# yum install mysql mysql-server -y			//-y跳过确认提示直接安装

重装:
    # yum  reinstall    软件名        
    
卸载软件:
	# yum erase  mysql-server 
	# yum remove mysql-server 
	# yum -y remove mysql-server


打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包)
    # vim /etc/yum.conf  修改下面参数的值为1,软件会被保存到cachedir指定的目录下
    keepcache=1
    # find / -name httpd-2.4.6-90.el7.centos.x86_64.rpm

自己制作yum源
	# mkdir /myyum   (把rpm安装包放到此目录里面)
	# cp -rf /mnt/yum/Packages/* /myyum/   //本地YUM源挂载地的目录有Packages
	把想用yum安装的软件包拷贝到目录下
	# createrepo /myyum         //此目录就可以作为yum源了
	# vim /etc/yum.repos.d/my.repo
	[name]
	name=qf
	baseurl=file:///myyum
	enabled=1
	gpgcheck=0

yum排错:
      1.yum配置文件必须以.repo结尾      
      2.yum.conf里面8,9行的值设置成0
      3.配置文件关键字错误
      4.检查yum源是否存在
      5.baseurl路径是否正确
      6.镜像大小是否正确
      7.当有Yum进程存在的时,无法同时再打开一个Yum进程

三 源码包管理

获得源码包途径 官方网站,可以获得最新的软件包

Apache: www.apache.org

Nginx: www.nginx.org

安装源码包
准备工作(去Nginx官网下载Nginx软件的源码包)
1.编译环境如编译器gcc、make (yum源先准备好)
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
//编译环境的准备
如果检测不到公钥,则使用命令
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

gcc是编译工具,编译单个文件
make工具可以看成是一个智能的批处理工具,通过调用makefile文件中用户指定的命令来进行编译和链接的。
pcre支持正则表达式
zlib-devel,有些应用依赖于这个库才能正常运行,因此需要安装zlib-devel
openssl-devel 这个就是包含了头文件,头文件参考,某些库文件等跟开发相关的东西。

2. 准备软件 nginx-1.16.0.tar.gz
3. 部署安装Nginx软件服务




nginx模块介绍:                                                                               --enable -so 支持动态模块                                                                   --enable -modules=all  全部支持动态模块                                                     --enable -ssl   支持https 安全链接useradd www

# tar -xvzf nginx-1.16.0.tar.gz

# cd nginx-1.16.0

写入到脚本里
# ./configure \
> --user=www \   用户
> --group=www \   用户组
> --prefix=/usr/local/nginx \   安装路径
> --with-http_stub_status_module \
> --with-http_sub_module \
> --with-http_ssl_module \
> --with-pcre			

# make			//编译文件  
# make install  //安装文件

# /usr/local/nginx/sbin/nginx					//启动nginx服务器
[root@cuichengjie ~]# /usr/local/nginx/sbin/nginx 
nginx: [emerg] getpwnam("www") failed
[root@cuichengjie ~]# /usr/sbin/groupadd -f www
[root@cuichengjie ~]# /usr/sbin/useradd -g www www

# systemctl stop firewalld  			//关闭防火墙
# setenforce 0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmWCrjhU-1584712476936)(assets/1578106435968.png)]

详解源码安装三步曲 
# ./configure   

 a. 指定安装路径,例如 --prefix=/usr/local/nginx     

 b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module    

 c. 和其它软件关联,例如--with-pcre   

 d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求    最终生成:Makefile 

make			  //按Makefile文件编译

make install	    //按Makefile定义的文件路径安装

四 源码安装错误(企业案例):

 错误1: ./configure: error: the HTTP gzip module requires the **zlib** library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option. 

解决方案: 
# yum -y install zlib-devel

错误2: ./configure: error: SSL modules require the **OpenSSL** library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option. 

解决方案: # yum -y install openssl-devel

错误3: checking for C compiler ... not found ./configure: error: C compiler cc is not found

 解决方案: # yum -y install gcc gcc-c++ make

错误4: ./configure: error: the HTTP rewrite module requires the **PCRE** library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.

 解决方案: # yum -y install pcre-devel

Nginx作为web服务器,中文内容显示乱码

在配置文件中添加一行

charset utf-8,gbk;

安装源码的技巧:

README
INSTALL

实例安装:httpd-2.2.11.tar.bz2
     1.下载软件
     2.解压
        # tar xvjf  httpd-2.2.11.tar.bz2  -C  /usr/src
     3.cd 到解压目录
        # cd /usr/src/httpd-2.2.11/   
     4.配置
        # ./configure --prefix=/usr/local/apache2
     5.编译
        # make
     6.安装
        # make install               

 启动:
        #cd  /usr/local/apache2/bin
        #./apachectl  start
  访问:
  #firefox  http://172.16.70.251

五 局域网yum源制作(企业案例)

操作系统:centos7.4

资源: CentOS-7-x86_64-DVD-1708.iso镜像(安装介质)

实验服务器两台:

10.8.165.27  (作为vsftpd服务端)

10.8.165.32  (客户端)
 
 首先测试两台主机可否ping通
 
在10.8.165.27上操作
[root@youngfit ~]# ping 10.8.165.32
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

在10.8.165.32上操作:
[root@youngfit ~]# ping 10.8.165.27
[root@localhost ~]# systemctl stop firewalsld
[root@localhost ~]# setenforce 0
yum -y install lftp //安装ftp客户端
lftp 10.8.165.27 看是否连通
如果ping通继续下面操作
如果不同,检测两台虚拟机只用的网络模式是否统一(桥接orNAT),修改为统一网络模式重启虚拟机


在10.8.165.27上操作服务端

将CentOS-7-x86_64-DVD-1708.iso 上传到/opt目录下

[root@youngfit ~]# mkdir /opt/yum-iso

[root@youngfit ~]# mount /opt/CentOS-7-x86_64-DVD-1708.iso /opt/yum-iso

[root@youngfit ~]# yum -y install vsftpd

[root@youngfit ~]# cp –a /opt/yum-iso/* /var/ftp/pub/

[root@youngfit ~]# cd /var/ftp/

[root@youngfit ~]# systemctl start vsftpd

[root@youngfit ~]# createrepo pub  //将目录制作成repo文件

[root@youngfit yum.repos.d]# cat myselfYum.repo 
[ftpYum]
name=ftpYum
baseurl=file:///opt/yum-iso
enabled=1
gpgcheck=0
[root@youngfit ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id       repo name           status
name          qf                  3,894
repolist: 3,894

 

在10.8.165.32上操作:客户端

[root@server2 ~]# cd /etc/yum.repos.d/

[root@server2 ~]# vim my.repo
[ftpYum]
name=centos
baseurl=ftp://192.168.62.131/pub
enabled=1
gpgcheck=0
[root@server2 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
scpyum        | 2.9 kB  00:00:00     
scpyum/primary_db          | 3.1 MB  00:00:00     
Loading mirror speeds from cached hostfile
repo id      repo name             status
scpyum       scpyum                3,894
repolist: 3,894


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值