零基础学习Linux系统的软件管理记录
软件类型
源码包
源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。没有经过编译
源码包的优点是:
•开源,如果有足够的能力,可以修改源代码
•可以自由选择所需的功能
•软件是编译安装,所以更加适合自己的系统
•更加稳定也效率更高
•卸载方便
源码包的缺点:
•安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
•编译过程时间较长,安装比二进制安装时间长
•因为是编译安装,安装过程中一旦报错新手很难解决
源码包示例:nginx-1.8.1.tar.gz
nginx:包名
1.8.1:版本号
tar.gz:打包压缩格式
二进制包
二进制包,也就是源码包经过成功编译之后产生的包。
二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下 2 大主流的二进制包管理系统:
RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,
例如 Fedora、CentOS、SuSE 等。
DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,
主要应用在 Debian 和 Ubuntu 中。
RPM二进制包的优点:
•包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
•安装速度比源码包安装快的多
二进制包缺点:
•经过编译,不再可以看到源代码
•功能选择不如源码包灵活
•依赖性
rpm包示例:zip-3.0.11.el7.x86_64.rpm
zip:包名
3.0.11:版本号
el7:发行版本
x86_64:系统平台
rpm:文件后缀
RPM包管理
yum工具(推荐)
简介:
1.是一个Fedor和RedHat以及CentOS中的shell前端软件包管理器
2.基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装
3.可以自动处理依赖关系,并且一次安装所有的依赖的软件包,无须繁琐地一次次下载、安装
语法格式:yum [参数] 软件包
参数:
-h 显示帮助信息
-y 对所有的提问都回答“yes”
-c 指定配置文件
-q 安静模式
-v 详细模式
-t 检查外部错误
-d 设置调试等级(0-10)
-e 设置错误等级(0-10)
-R 设置yum处理一个命令的最大等待时间
-C 完全从缓存中运行,而不去下载或者更新任何头文件
install 安装rpm软件包
update 更新rpm软件包
check-update 检查是否有可用的更新rpm软件包
remove 删除指定的rpm软件包
list 显示软件包的信息
search 检查软件包的信息
info 显示指定的rpm软件包的描述信息和概要信息
clean 清理yum过期的缓存
shell 进入yum的shell提示符
resolvedep 显示rpm软件包的依赖关系
localinstall 安装本地的rpm软件包
localupdate 显示本地rpm软件包进行更新
deplist 显示rpm软件包的所有依赖关系
清理原有的软件仓库信息缓存
[root@study ~]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: base epel extras updates
Cleaning up list of fastest mirrors
建立最新的软件仓库信息缓存
[root@study ~]# yum makecache
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
epel/x86_64/metalink | 6.9 kB 00:00:00
* base: mirrors.ustc.edu.cn
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/16): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/16): base/7/x86_64/filelists_db | 7.2 MB 00:00:00
(3/16): base/7/x86_64/other_db | 2.6 MB 00:00:00
(4/16): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(5/16): epel/x86_64/group_gz | 98 kB 00:00:00
(6/16): epel/x86_64/filelists_db | 12 MB 00:00:00
(7/16): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(8/16): epel/x86_64/prestodelta | 339 B 00:00:00
(9/16): epel/x86_64/primary_db | 7.0 MB 00:00:00
(10/16): epel/x86_64/other_db | 3.4 MB 00:00:00
(11/16): extras/7/x86_64/primary_db | 249 kB 00:00:00
(12/16): extras/7/x86_64/filelists_db | 276 kB 00:00:00
(13/16): extras/7/x86_64/other_db | 149 kB 00:00:00
(14/16): updates/7/x86_64/primary_db | 18 MB 00:00:00
(15/16): updates/7/x86_64/other_db | 1.2 MB 00:00:00
(16/16): updates/7/x86_64/filelists_db | 10 MB 00:00:00
元数据缓存已建立
安装指定的服务及相关软件包
[root@study ~]# yum -y install httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-97.el7.centos.5 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-97.el7.centos.5,它被软件包 httpd-2.4.6-97.el7.centos.5.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-97.el7.centos.5.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-97.el7.centos.5 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==============================================================================================================
Package 架构 版本 源 大小
==============================================================================================================
正在安装:
httpd x86_64 2.4.6-97.el7.centos.5 updates 2.7 M
为依赖而安装:
httpd-tools x86_64 2.4.6-97.el7.centos.5 updates 94 k
mailcap noarch 2.1.41-2.el7 base 31 k
………………省略部分输出信息………………
更新指定的服务及相关软件包
[root@study ~]# yum -y update httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
No packages marked for update
显示指定服务的软件信息
[root@study ~]# yum info httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
已安装的软件包
名称 :httpd
架构 :x86_64
版本 :2.4.6
发布 :97.el7.centos.5
大小 :9.4 M
源 :installed
来自源:updates
简介 : Apache HTTP Server
网址 :http://httpd.apache.org/
协议 : ASL 2.0
描述 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
卸载指定的服务及相关软件包
[root@study ~]# yum -y remove httpd
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-97.el7.centos.5 将被 删除
--> 解决依赖关系完成
依赖关系解决
==============================================================================================================
Package 架构 版本 源 大小
==============================================================================================================
正在删除:
httpd x86_64 2.4.6-97.el7.centos.5 @updates 9.4 M
事务概要
==============================================================================================================
移除 1 软件包
………………省略部分输出信息………………
显示可安装的软件包组列表
[root@study ~]# yum grouplist
已加载插件:fastestmirror, langpacks
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
………………省略部分输出信息………………
RPM工具
rpm命令来自于英文词组”RedHat Package Manager“的缩写,中文译为红帽软件包管理器,
其功能是用于在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作。
语法格式:rpm [参数] 软件包
参数:
-a 查询所有的软件包
-b或-t 设置包装套件的完成阶段,并指定套件档的文件名称;
-c 只列出组态配置文件,本参数需配合”-l”参数使用
-d 只列出文本文件,本参数需配合”-l”参数使用
-e 卸载软件包
-f 查询文件或命令属于哪个软件包
-h 安装软件包时列出标记
-i 安装软件包
-l 显示软件包的文件列表
-p 查询指定的rpm软件包
-q 查询软件包
-R 显示软件包的依赖关系
-s 显示文件状态,本参数需配合”-l”参数使用
-U 升级软件包
-v 显示命令执行过程
-vv 详细显示指令执行过程
正常安装软件包
[root@study ~]# rpm -ivh wget-1.14-18.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 wget-1.14-18.el7.x86_64 已经安装
查询某个软件的安装路径
[root@study ~]# rpm -ql wget
/etc/wgetrc
/usr/bin/wget
………………省略部分输出信息………………
卸载某个通过RPM软件包安装的服务
[root@study ~]# rpm -evh wget
准备中... ################################# [100%]
正在清理/删除...
1:wget-1.14-18.el7 ################################# [100%]
源码包管理
获取源码包:在各源码官网进行获取,例如:
Apache:www.apache.org
Nginx:www.nginx.org
Tengine:tengine.taobao.org
实例:
安装Tengine
准备编译环境
[root@study ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 6.1 kB 00:00:00
* base: mirrors.ustc.edu.cn
* epel: mirror.nju.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
base
………………省略部分输出信息………………
创建一个用户
[root@study software]# useradd www
解压压缩包
[root@study software]# tar xvf tengine-2.3.2.tar.gz
tengine-2.3.2/
tengine-2.3.2/.github/
tengine-2.3.2/.github/ISSUE_TEMPLATE/
tengine-2.3.2/.github/ISSUE_TEMPLATE/bug_report.md
tengine-2.3.2/.github/ISSUE_TEMPLATE/feature_request.md
tengine-2.3.2/.github/ISSUE_TEMPLATE/question-about-tengine.md
tengine-2.3.2/.gitignore
tengine-2.3.2/.travis.yml
………………省略部分输出信息………………
进行相关的配置
[root@study tengine-2.3.2]# ./configure --user=www --group=www --prefix=/usr/local/tengine
checking for OS
+ Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... found
+ using GNU C compiler
+ gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
checking for gcc -pipe switch ... found
………………省略部分输出信息………………
编译
[root@study tengine-2.3.2]# make
make -f objs/Makefile
make[1]: 进入目录“/opt/tengine/software/tengine-2.3.2”
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I src/proc -I objs \
-o objs/src/core/nginx.o \
src/core/nginx.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I src/proc -I objs \
-o objs/src/core/ngx_log.o \
src/core/ngx_log.c
………………省略部分输出信息………………
安装程序
[root@study tengine-2.3.2]# make install
make -f objs/Makefile install
make[1]: 进入目录“/opt/tengine/software/tengine-2.3.2”
test -d '/usr/local/tengine' || mkdir -p '/usr/local/tengine'
test -d '/usr/local/tengine/sbin' \
|| mkdir -p '/usr/local/tengine/sbin'
test ! -f '/usr/local/tengine/sbin/nginx' \
|| mv '/usr/local/tengine/sbin/nginx' \
'/usr/local/tengine/sbin/nginx.old'
cp objs/nginx '/usr/local/tengine/sbin/nginx'
test -d '/usr/local/tengine/conf' \
|| mkdir -p '/usr/local/tengine/conf'
cp conf/koi-win '/usr/local/tengine/conf'
启动服务
[root@study ~]# /usr/local/tengine/sbin/nginx