linux-8. 软件包管理和服务管理

一、Red Hat 系列

Redhat、Centos、Fedora等

1. 手动安装

1.1 rpm命令管理

  1. RPM包命令原则

    httpd-2.2.15-15.el6.centos.1.i686.rpm
    httpd:		软件包名
    2.2.15:	软件版本
    15:		软件发布的次数
    el6.centos:	适合的Linux平台
    i686:		适合的硬件平台
    rpm:		rmp包扩展名
    
  2. RPM包依赖性

    • 树形依赖:a->b->c
    • 环形依赖:a->b->c->a
    • 模块依赖:模块依赖(以.so.数字 结尾的文件)查询网站:www.rpmfind.net
  3. 常用命令

    # 1. RPM包安装
    rpm -ivh 包名
    # -i (install): 安装
    # -v (verbose): 显示安装信息
    # -h (hash): 	显示进度
    # --nodeps: 	不检测依赖性 
    rpm -ivh mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 2. RPM包升级
    rmp -Uvh 包名
    # -U:	升级
    rpm -Uvh mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 3. 卸载
    rmp -e 包名
    # -e (erase): 	卸载
    # --nodeps:		不检查依赖性
    rmp -e httpd
    
    # 4. 查询包是否安装
    rmp -q 包名
    # -q (query): 查询
    # -a (all):所有
    rmp -q httpd
    # 查询所有已经安装的rpm包
    rmp -qa
    
    # 5. 查询软件包详细信息
    rmp -qi 包名
    # -i (information):查询软件信息
    # -p (package):查询未安装包信息
    rmp -qi httpd
    rmp -qp mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 6. 查询包中文件安装位置
    rmp -ql 包名
    # -l (list): 列表
    rmp -ql httpd
    rmp -qpl mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 7. 查询系统文件属于哪个RPM包
    rpm -qf 系统文件名
    # -f (file):查询系统文件属于哪个软件包  
    
    # 8. 查询软件包的依赖性
    rmp -qR 包名
    # -R (rquires): 查询软件包的依赖性
    rmp -qR httpd
    rmp -qpR mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    

1.2 RPM包校验

	# 1. RPM包校验
	rmp -V 已安装的包名
	# -V (verify): 校验指定RPM包中的文件
	
	rpm -V httpd
	# 修改一点内容后,再校验
	vim /etc/httpd/conf/httpd.conf
	rpm -V httpd
	# 结果如下图:

在这里插入图片描述

1. 验证内容中的8个信息的具体内容如下:
	- S:	文件大小是否改变
	- M:	文件的类型或文件的权限(rwx)是否被改变
	- 5:	文件MD5校验和是否改变(可以看成文件内容是否改变)
	- D:	设备中的代码是否改变
	- L:	文件路径是否改变
	- U:	文件的所有者是否改变
	- G:	文件的所属组是否改变
	- T:	文件的修改时间是否改变
2. 文件类型
	- c:	配置文件 (config file)
	- d:	普通文档 (documentation)
	- g: 	ghost file,很少见
	- l:	授权文件 (license file)
	- r:	描述文件 (read me)

1.3 RPM包中文件提取

rpm2cpio 包全名 | cpio -idv .文件绝对路径
# rpm2cpio: 将rpm包转换为cpio格式的命令
# cpio:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

cpio 选项 < [文件|设备]
# -i: copy-in模式,还原
# -d: 还原是自动新建目录
# -v: 显示还原过程

# eg:
# 查询ls命令属于哪个软件包, 也可以从网卡找属于哪个包
rpm -qf /bin/ls
# 造成ls命令误删除假象
mv /bin/ls /tmp/
# 提取RPM包中ls命令到当前目录的/bin/ls下,假设当前目录为/root
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
# 把ls命令复制到/bin/目录下,修复文件丢失
cp /root/bin/ls /bin/

2. yum在线自动安装

2.1 网络yum源

vim /etc/yum.repos.d/CentOS-Base.repo
# [base]	: 容器名称,一定要放在[]中,可以随意取
# name		: 容器说明,可以自己随便写
# mirrorlist: 镜像站点,如果baseurl下载的比较慢,可以选择下载快的镜像站点进行下载
# baseurl	: yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢,可以改成
#			  你喜欢的yum源地址
# enabled	: 此容器是否生效,不写或写成enabled=1:代表生效;enable=0:代表不生效
# gpgcheck	: 1:代表RPM的数字证书生效,0:不生效
# gpgkey	: 数字证书的公钥文件保存位置。不用修改

2.2 常用yum命令

# 1. 查询所有可用软件包列表
yum list

# 2. 搜索服务器上所有和关键字相关的包
yum search 关键字

# 3. 安装
yum -y install 包名
# -y 自动回答yes,如果没有,安装的过程会有交互式问答

# 4. 卸载
yum -y remove 包名
# 会卸载依赖包,导致其它软件不可用, 尽量不要用yum进行卸载

# 5. 添加yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 6. 更新
yum -y update

2.3 CentOS6 中替换yum源
为什么要替换yum源?
答:CentOS默认yum源是国外的, 速度无法保证,用起来很不爽,今天我们把默认源换成国内的163源,163是目前国内最好用的源,速度是相当快的,还有一些比较好的源,比如阿里源wget http://mirrors.aliyun.com/repo/Centos-7.repo
以把CentOS7 中的yum源更换成163源

    1. 进入yum源配置文件   cd /etc/yum.repos.d
    2. 备份一下当前的源,以防出错后可以还原回来mv ./CentOS-Base.repo ./CentOS-Base-repo.bak
    3. 下载网易163的源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    4. 清理一下旧包 yum clean all
    5. 把下载下来文件 CentOS7-Base-163.repo设置成为默认源 mv CentOS7-Base-163.repo CentOS-Base.repo
    6. 生成缓存即可用163源了 yum makecache

如果不做备份:

1. cd /etc/yum.repos.d
2. wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
或者
curl -o CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
4. yum clean all
5. yum makecache

2.4 yum软件组管理命令

# 1. 列出所有可用的软件组列表
yum grouplist

# 2. 安装指定软件组,组名可以由grouplist查询出来
yum groupinstall 软件组名

# 卸载指定软件组
yum groupremove 软件组名

2.5 光盘yum源搭建步骤

# 1. 挂载光盘
mount /dev/cdrom /mnt/cdrom

# 2. 让网络yum源文件失效
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

# 3. 修改光盘yum源文件
vim CentOS-Media.repo
# 内容如下:
[c6-media]
name=CentOS-$releasever - Media
# 主要修改下面一行
baseurl=file:///mnt/cdrom
# 地址为你自己的光盘挂载地址
#		file:///media/cdrom/
#		file:///media/cdrecorder/
# 注释这两个不存在的址
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

2.6 rpm包默认安装位置

路径 作用
/etc 配置文件安装目录
/usr/bin 可执行文件
/usr/lib 程序所使用的函数库保存位置
/usr/share/doc 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

3. 源码包安装

源码包安装和RPM包安装的区别

  1. 安装位置
    源码包:安装在指定的位置当中,一般是/usr/local/软件名/
    RPM包:安装的默认的路径下,看2.5小节

  2. 安装位置不同带来的影响

    • RPM包安装的服务可以使用系统服务管理命令(service)来管理,如RPM包安装的apache的启动方法有以下两种:
      • /etc/rc.d/init.d/httpd start
      • service httpd start
    • 而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如
      • usr/local/apache2/bin/apachectl start
  3. 源码包安装过程
    具体的安装步骤一般是源码包中INSTALL文件中有详细介绍
    以安装apache为例
    3.1 安装

    # 1.安装准备
    	- 安装C语言编译器
    	- 下载源码包:http://mirror.bit.edu.cn/apache/httpd/
    
    # 2. 安装注意事项
    	- 源代码保存位置:`/usr/local/src/`
    	- 软件安装位置:`/usr/local/`
    
    # 3. 解压缩下载的源码包
    
    # 4. 进入缩目录
    
    # 5. ./configure 软件配置与检查
    	- 定义需要的功能选项
    	- 检测系统环境是否符合安装要求
    	- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编译
    ./configure --prefix=/usr/local/apache2 
    #  --prefix: 自定义安装路径
    
    # 6. 编译: 将源码包翻译成二进制,此时生产的都是临时文件,安装路径中还没有写入数据
    make
    # 如果此步出错,可以使用 make clean 来清除make产生的临时文件
    
    # 7. 安装: 此时才向安装路径中写入数据
    make install
    

    3.2 卸载
    不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件

    rm -rf /usr/local/apache2 
    

二、Debian系列

2.1 手动安装

dpkg [选项] 安装包
dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件

2.2 apt-get在线安装

  1. apt-get 安装
    apt-get可以用于运作deb包
  • 安装: apt-get install
  • 卸载: apt-get remove
  • 更新: apt-get update
  • 仅删除不再能被下载的包: apt-get autoclean
  • 软件包下载存放目录: /var/cache/apt/archives/
  • 删除安装包: apt-get cleanaptitude clean
    注:删除目录/var/cache/apt/archives//var/cache/apt/archives/partial/下所有包(锁定包除外)

deb包默认安装位置

路径 作用
/etc 配置文件安装目录
/usr/bin 可执行文件
/usr/lib 程序所使用的函数库保存位置
/usr/share/doc 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

如:系统中的python2.7
可执行文件位置:/usr/bin/python
自带的库位置:/usr/lib/python2.6/dist-packages//usr/lib/python2.7/

pip安装的法模块默认放在:usr/local/lib/python2.7/dist-packages~/.local/lib/python2.7/site-packages

2.3 源码包安装

同Rea Hat系列的源码安装
源码包安装路径:/usr/local/软件名

三、服务管理

3.1 服务的分类

在这里插入图片描述
启动与自启动的区别:

  • 服务启动:就是在当前系统中让服务运行,并提供功能

  • 服务自启动:自启动是指让服务在系统开机或重启之后,随着系统的启动而自动启动服务

    # 1.查看服务自启动状态,可以看到所有RPM包或DEB包安装的服务
    chkconfig --list
    
    # 2. 源码包安装的服务,一般在/usr/local/下
    
    # 3. 查看某个服务是否已经启动:
    ps aux | grep 服务名
    netstat -tlun | grep 服务名  
    

3.2 RPM或才DEB包安装服务的管理

  1. 安装服务的位置

    路径 作用
    /etc/init.d 启动脚本位置
    /etc/sysconfig 初始化环境配置文件位置
    /etc/ 配置文件位置
    /etc/xinetd.conf xinetd配置文件
    /etc/xinetd.d 基于xinetd服务的启动脚本
    /etc/lib/ 服务产生的数据放在这里
    /var/log/ 日志
  2. 独立服务的启动

    /etc/init.d/独立服务名 start|stop|status|restart
    service 独立服务名 start|stop|status|restart
    
    # 查看所有服务的状态
    service --status--all
    
  3. 独立服务的自启动

    # 三种方式
    # 1. chkconfig [--level 运行级别] [独立服务名] [on|off]
    chkconfig --level 2345 httpd on
    
    # 2. 修改/etc/rc.d/rc.local文件,加入
    /etc/rc.d/init.d/httpd start
    
    # 3. 使用ntsysv命令管理自启动(red hat 专有)
    
  4. 基于xinetd服务
    基于xinetd的服务越来越少了,其中telnet就是一个,本节了解一下即可。另外在xinetd服务中启动与自启动是一个概念,这一点要特别注意。

    # 1. 安装xinetd与telnet
    yum -y install xinetd
    yum -y install telnet-server
    
    # 2. xinetd服务的启动
    vim /etc/xinetd.d/telnet
    service telnet
    {
    	flags		=REUSE   	# 标志为REUSE,设定TCP/IP socket可重用
    	socket_type	=stream		# 使用TCP协议数据包
    	user		=root		# 启动服务的用户为root
    	wait 		=no			# 允许多个连接同时连接
    	server 		=/usr/sbin/in.telnetd # 服务的启动程序
    	log_on_failure += USERID # 登陆失败后,记录用户的ID
    	disable		=no 		# no:服务启动, yes:服务不启动
    }
    
    # 3. 重启xinetd服务
    service xinetd restart
    
    # 4. xinetd服务的自启动, 以下两种方法
    chkconfig telnet on
    ntsysv # red hat 专有
    

3.3 源码包安装服务的管理

# 1. 源码包安装服务的启动与停止
# 	 使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不同。可以查看
#    源码包的安装说明,查看启动脚本的方法
/usr/local/apache2/bin/apachectl start|stop

# 2. 源码包服务的自启动
vim /etc/rc.d/rc.local
# 加入以下内容
/usr/local/apache2/bin/apachectl start

# 3. 让源码包服务被服务管理命令识别
# 3.1 让源码包的apache服务能被service命令管理启动
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
# 3.2 让源码包的apache服务能被chkconfig与ntsysv命令管理自启动
vim /etc/init.d/apache
# chkconfig:35 86 76
# 指定httpd脚本可以被chkconfig命令管理。格式是:
# chkconfig:运行级别 启动顺序 关闭顺序
# description:source package apache
# 说明,内容随意

# 4. 将apache添加至chkconfig命令管理中
chkconfig --add apache
# 查看是否添加成功
chkconfig --list | grep apache

/etc/init.d/apache 文件内容如下:在这里插入图片描述

其他下载命令wget和curl

  1. 下载单个文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo

  2. 使用 wget -O 下载并以不同的文件名保存
    参数-O来指定一个文件名
    wget -O wordpress.tar.gz http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

  3. 使用 wget -c 断点续传
    使用wget -c重新启动下载中断的文件:
    对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件
    wget -c http://mirrors.aliyun.com/repo/Centos-7.repo
    4、使用 wget -b 后台下载
    对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载
    wget -b http://mirrors.aliyun.com/repo/Centos-7.repo
    你可以使用以下命令来察看下载进度
    tail -f wget-log

  4. 使用 wget –mirror 镜像网站

  5. 使用 wget -i 下载多个文件

# 1 首先,保存一份下载链接文件 
cat > filelist.txt 
url1 
url2 
url3 
url4 
# 2. 接着使用这个文件和参数-i下载  
wget -i filelist.txt

wget不是安装方式,它是一种下载工具,类似于迅雷。
通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理,名字是World Wide Web”与“get”的结合。如果要下载一个软件,可以直接运行:
wget 下载地址
如果当前ubuntu未安装wget,可按下列操作进行安装和检查是否安装成功:
sudo apt-get update
sudo apt-get install wget
wget --version

发布了140 篇原创文章 · 获赞 44 · 访问量 12万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章