首页 > 系统服务 > 详细

Linux 软件管理

时间:2020-03-01 12:13:42      阅读:35      评论:0      收藏:0      [点我收藏+]

一、软件包分类

1、源码包

1)常见后缀:.tar.gz

2)优点:

1)开源,如果有足够的能力,可以修改源代码
2)可以自由选择所需的功能
3)软件是编译安装,所以更加适合自己的系统,更加稳定也性能更高
# 官方给出估算,相比二进制包大约可以提升5%的性能
4)卸载方便

3)缺点:

1)安装过程步骤较多,尤其安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误
2)编译时间较长,安装比二进制安装时间长
3)因为是编译安装,安装过程中一旦报错新手很难解决

2、二进制包

1)常见后缀:.rpm

2)二进制包分类:

1)DPKG包:在线安装工具(yum)
   是由 Debian Linux 所开发出来的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理。主要应用在 Debian 和 Unbuntu 中。
   
2)RPM包:在线安装工具(apt-get)
   是由 Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多 Linux 都在使用这种包管理方式,包括 Fedora、CentOS、SUSE 等。我们学习的是CentOS 6.3。

3)优点:

1)包管理系统简单,只通过几个命令就可能实现包的安装、升级、查询和卸载
2)安装速度比源码包安装快得多

4)缺点:

1)经过编译,不再可以看到源代码
2)功能选择不如源码包灵活
3)依赖性。
# 依赖分类:
	树形依赖
	环形依赖
	模块依赖(模块可以理解为各种函数库 .so)
-----------------------------------------------------------------------------------------
# 模块依赖
  如果安装时报出依赖 .so 文件,查询该文件属于哪个包,把包安装上就可以了。怎么查询这个文件是属于哪个包呢?下面的网站就可以帮助查询。
  ---------------------------------------------------------------------------------------
  常用RPM包搜索网站:
  a. http://rpmfind.net——这个网站一般较旧的包是找不到的。
  b. http://rpm.pbone.net/——这个几乎所有的都能招到。
  c. http://download.fedora.redhat.com/pub/fedora-secondary/releases/——可以找到所有fedora版本的rpm包和src-rpm。
  d. http://rpmfusion.org/——可以添加第三方yum源,包括开源的和非开源的包。
  ---------------------------------------------------------------------------------------
  公司内部人士提供
  http://rpm.pbone.net/ 
  http://pkgs.org/ 
  这俩网站联合使用,基本能找到linux需要的大部分的rpm的安装包

5)RPM 包命令规则

# 以 httpd-2.2.15-15.el6.centos.1.i686.rpm 为例
a. httpd:软件包名。
b. 2.2.15:软件版本。
c. 15:软件发布的次数。
d. el6:软件发行商。el6 是由 Red Hat 公司发布的,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
e. i686:适合的硬件平台。
   # RPM 包可以在不同的硬件平台上安装,选择适合不同 CPU 的软件版本,可以最大限度地发挥 CPU 性能,所以出现了所谓的 i386(386 以上的计算机都可以安装)、i586 (586 以上的计算机都可以安装)、i686(奔腾II以上的计算机都可以安装,目前所有的 CPU 是奔腾II以上的,所以这
个软件版本居多)、x86_64 (64 位 CPU 可以安装)和 noarch(没有硬件限制)等文件名。 f. rpm:RPM 包的扩展名。 # 我们说过,Linux 下的文件不是靠扩展名区分文件类型的,也就是说 Linux 中的扩展名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果不把 RPM 包的扩展名叫作".rpm",那么管理员很难知道这是一个 RPM 包,当然也就无法正确安装了。换句话说,如果 RPM 包
不用".rpm"作为扩展名,那么系统可以正确识别,但是管理员很难识别这是一个什么样的软件。 PS:我们把 httpd-2.2.15-15.el6.centos.1.i686.rpm 叫作包全名,而把 httpd 叫作包名。 为什么要做出特殊说明呢?因为有些命令后面一定跟的是包全名,如安装和升级;而有些命令后面一定跟的是包名,如查询和卸载。如果弄错,命令就会报错。

6)包名的使用

a. 包全包:如果操作的是未安装软件包,则使用包全包,而且需要绝对路径;
b. 包  名:如果操作的是已安装软件包,则使用包名,系统会生成RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作。

PS:(脚本安装包)

3、软件包选择建议

1)源码包:
如果服务是给大量客户端提供访问的,建议使用源码包,源码包效率性能更高(例如LAMP);
2)RPM包:
如果程序是给少量用户访问,或者本地使用,建议RPM包,因为RPM管理方便。
-----------------------------------------------------------------------------------------
3)包名的使用:
	包全包:如果操作的是未安装软件包,则使用包全包,而且需要绝对路径;
	包  名:如果操作的是已安装软件包,则使用包名,系统会生成RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作。

二、安装、卸载与升级

1、源码包

1)安装步骤

必须在安装路径下执行安装命令。

# 1)解压
[root@centos6 ~]# cd /usr/src
[root@centos6 src]# tar -xvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
# 2)
[root@centos6 ~]# cd mysql-5.6.38-linux-glibc2.12-x86_64
[root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# ./configure
# 3)
[root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# make
# 4)
[root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# make install

2)启动方式

绝对路径

3)卸载:

没有删除命令,删除掉安装目录即卸载;所以安装的时候必须指定安装路径。

2、二进制包

1)依赖性

一般安装软件包的时候都需要先安装依赖包。

1)挂载 ISO

# 查看 ISO
[root@centos6 ~]# mount
...省略
/dev/sr0 on /media/CentOS_6.9_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
[root@centos6 ~]# mkdir /mnt/cdrom
[root@centos6 ~]# mount /dev/sr0 /mnt/cdrom
[root@centos6 ~]# cd /mnt/cdrom/Packages
[root@centos6 Packages]# ll
# 系统会显示出光盘镜像文件中所以的软件包
[root@centos6 Packages]# ll | wc -l
# 系统会显示出软件包的总共数量

2)安装命令

可以在任意路径下执行安装命令,但是需要注意:

# 如果执行命令的当前路径是在包路径中,只需要写包全名即可,如:
[root@centos6 Packages]# rpm -ivh 软件包全名
# 如果命令当前路径不在包路径中,则需要写包所在的绝对路径。如:
[root@centos6 ~]# rpm -ivh /mnt/cdrom/Packages/软件包全名

 

-----------------------------------------------------------------------------------------
[root@centos6 Packages]# rpm -ivh 软件包全名
# 注意一定是包全包。如果跟包全名的命令要注意路径,因为软件包在光盘中。
# 选项意义:
  -i               # 安装(install)
  -v               # 显示更详细的信息(verbose)
  -h               # 打印显示安装进度(hash)
-----------------------------------------------------------------------------------------
  --nodeps         # 不检测依赖性安装。安装软件时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错;如果不管依赖性,想强行安装,可以使用这个选项,但是需注意:这样不检测依赖性安装的软件一般是不能使用的,所以不建议这样做。
-----------------------------------------------------------------------------------------
  --replacefiles   # 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么正常安装的时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错,而覆盖安装。
  --replacepkgs    # 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍。
-------------------
  --force          # 强制安装。不管是否已经安装,都重新安装。即 --replacefiles 和 --replacepkgs的综合。
                   ----------------------------------------------------------------------
                   # 有时把配置文件误删了,服务启动报错,但是重新安装还安装不了,这时候就是这个选项的作用,强制重新安装,这样被误删的配置文件就又生成了,服务也可以正常启动了。
-----------------------------------------------------------------------------------------
  --test           # 测试安装。不会实际安装,只是检测一下依赖性。
-----------------------------------------------------------------------------------------
  --prefix         # 指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中的话,系统会找不到这些安装的软件,需要手工配置才能被系统识别。
                   ----------------------------------------------------------------------
                   # 所以 rpm 包我们一般都采用默认路径安装。
                     如果使用该选项,一般指定路径为 --prefix=/usr/local/http
-----------------------------------------------------------------------------------------

3)默认安装路径

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

4)控制方式

以 Apache 为例:

-----------------------------------------------------------------------------------------
centos6:
1)redhat系列专用方式:
   service httpd start|restart|stop|status
   # service 命令调用的就是 /etc/rc.d/init.d/httpd 这个文件。
2)所有linux系统通用标准方式:
   /etc/rc.d/init.d/httpd start|restart|stop|status
   /etc/init.d/httpd start|restart|stop|status
   # lrwxrwxrwx.  1 root root     11 Nov 11 11:06 init.d -> rc.d/init.d
-----------------------------------------------------------------------------------------
centos7:
1)
2)
-----------------------------------------------------------------------------------------

5)网页位置:

/var/www/html

6)配置文件:

/etc/httpd/conf/httpd.conf

对文件修改之后,要不要重启服务?

判断方法:修改的是不是配置文件,只有修改了配置文件才需要重启服务。

7)RPM包建议安装在默认路径中

1)默认安装位置是系统的习惯位置;
2)RPM包管理系统是有卸载命令的(数据库记录安装位置),默认位置安装方便卸载;

8)卸载

-----------------------------------------------------------------------------------------
[root@centos6 ~]# rpm -e 包名
# 选项:
   --nodeps   # 不检查依赖性
   -e         # 卸载
-----------------------------------------------------------------------------------------
# 卸载的时候也有依赖性,按安装时候依赖包的相反顺序依次卸载。
# 新手尽量少用yum卸载,因为yum卸载容易把别的软件依赖的包也卸载掉,导致别的服务异常。
-----------------------------------------------------------------------------------------

9)升级

-----------------------------------------------------------------------------------------
# 升级加安装
[root@centos6 ~]# rpm -Uvh 包全包
# 选项:
   -U    # 升级安装,如果没有安装过,系统直接安装;如果安装过的版本较旧,则升级到新版本(upgrade)。
-----------------------------------------------------------------------------------------
# 升级
[root@centos6 ~]# rpm -Fvh 包全包
# 选项:
   -F    # 升级安装,如果没有安装过,则不会安装;必须安装有较旧版本,才能升级(freshen)。
-----------------------------------------------------------------------------------------

10)查询

rpm 和 yum 查询区别

rpm 命令查询的是本地的软件包; yum 查询的是 yum 源服务器上的软件包。

-----------------------------------------------------------------------------------------
选项:
	下面是查询时可以使用的特定参数:
	-a 查询目前系统安装的所有软件包(all)
	-f 查询系统文件属性哪个软件包(file)
	-F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF)
	-q 查询该软件包(query)
	-p 查询没有安装的软件包(package)
	-R 查询软件包的依赖性(requires)
	-Q 同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ)
	下面是输出时的格式选择:
	-i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息(information)
	-l 列出软件包中所有的文件列表和软件所安装的目录(list)
	-s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing
	-d 显示软件包中的文档(如man,info,README等)
	-c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf 、 passwd 、        inittab 等
    -v 如果用-v参数就可以得到类似于ls -l的输出
-----------------------------------------------------------------------------------------
1)查询软件包是否安装
[root@centos6 ~]# rpm -q 包名
-----------------------------------------------------------------------------------------
2)查询系统中的所有安装软件包
[root@centos6 ~]# rpm -qa 包名
-----------------------------------------------------------------------------------------
3)也可以用管道符来查看所需的内容,比如:
[root@centos6 ~]# rpm -qa | grep httpd
# 1)只能查看包是否安装,但是 3)会把包含包名的所有包都列出来
-----------------------------------------------------------------------------------------
4)查询已经安装的软件包的详细信息
[root@centos6 ~]# rpm -qi [ 包名 | 包全名 ]
# 查询还未安装的软件包的详细信息
[root@centos6 ~]# rpm -qip 包全名
# 还未安装,所以要写 "包全名"
-----------------------------------------------------------------------------------------
5)查询已经安装的软件包中的文件列表和安装的完整目录
[root@centos6 ~]# rpm -ql 包名
# 查询还未安装的软件包中的文件列表和打算安装的位置
[root@centos6 ~]# rpm -qlp 包全名
-----------------------------------------------------------------------------------------
6)查询系统文件属于哪个 RPM 包
[root@centos6 ~]# rpm -qf 系统文件名
# 只有通过 rpm 或者 yum 方式安装的包的文件才可以这样查;如果是手工建立的文件是不能这样查的。
# 5)和 6)是两个反向的操作
# 举个栗子
[root@db01 ~]# rpm -qf `which ssh`
openssh-clients-7.4p1-16.el7.x86_64
[root@db01 ~]# rpm -qf `which sshd`
openssh-server-7.4p1-16.el7.x86_64
-----------------------------------------------------------------------------------------
7)查询软件包所依赖的软件包
# 查询系统中和已经安装的软件包有依赖关系的软件包(会列出所有包,分不出哪个已安装,哪个未安装,不常用)
[root@centos6 ~]# rpm -qR 包名
# 查询还未安装的软件包的依赖包
[root@centos6 ~]# rpm -qRp 包名
-----------------------------------------------------------------------------------------
8)查询软件包安装完成后的配置文件
[root@centos6 ~]# rpm -qc [ 包名 | 包全名 ]
-----------------------------------------------------------------------------------------

3、yum 相关命令

  • rpm 相当于 windows 的 exe。软件包管理系统通常由两种工具类型组成。

  • 底层工具用来安装和删除软件包文件(rpm)。

  • 上层工具完成元数据搜索和依赖解析(yum)。

  • yum 是方便管理 rpm 的工具。

  • repo 是资源库,其中包含了众多的 rpm 包。

# 查找命令对应的软件包
yum provides 命令

3.1 安装

命令说明
yum install 全部安装
yum install package 安装指定的安装包 package
yum install package -y 直接安装不用询问是否安装
yum groupinsall group 安装程序组 group

3.2 更新和升级

命令说明
yum update 全部更新
yum update package 更新指定程序包 package
yum check-update 检查可更新的程序
yum upgrade package 升级指定程序包 package
yum groupupdate group 升级程序组 group

3.3 查找和显示

命令说明
yum info package 显示安装包信息 package
yum info updates 列出更新信息
yum info installed 列出安装包信息
yum info extras 列出已安装,但不在 repo 中的包的信息
yum list 显示所有已经安装和可以安装的程序包
yum list updates 列出所有可更新的包
yum list installed 列出所有已经安装的包
yum list extras 列出所有已安装,但是没有在 repo 里的包
yum list package 显示指定程序包安装情况 package
yum groupinfo group 显示程序组 group 信息
yum search string 根据关键字 string 查找安装包
yum repolist 查看(开启的)资源库
yum repolist all 查看所有资源库
yum search 使用 YUM 查找软件包
yum provides 列出包中文件(正确意思应该是:查找命令对应的软件包。检查其它命令是否正确?)

3.4 删除程序

命令说明
yum remove package 删除程序包 package
yum groupremove group 删除程序组 group
yum deplist package 查看程序 package 依赖情况

3.5 清除缓存

命令说明
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean/yum clean all 清除缓存目录下的软件包及旧的 headers

3.6 Yum 配置

  • yum 的一切配置信息都储存在一个叫 yum.conf 的配置文件中。常位于 /etc 目录下

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
配置说明
cachedir yum 缓存的目录,yum 在此存储下载的 rpm 包和数据库,一般是 /var/cache/yum
debuglevel 除错级别,0~10,默认是 2
logfile yum 的日志文件,默认是 /var/log/yum.log
exactarch 有两个选项 1 和 0,代表是否只升级和你安装软件包 cpu 体系一致的包,如果设为 1,则例如安装了一个 i386 的 rpm,则 yum 不会用 686 的包来升级
gpgchkeck 有 1 和 0 两个选项,分别代表是否是否进行 gpg 校验,如果没有这一项,默认是检查

3.7 repo 配置(Yum 软件源)

[base] 
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
配置说明
[base] 这个是软件源的名字,且 [ ] 里面不能为空
name 这个只是软件源的一个描述,也可以随意些,但要有意义
baseurl 指定路径,可以用 file,ftp,http 如果用后面的两个必须开启相应的服务,file 可以用来做本地软件源(如:将本地 DVD 设置为软件源),一定要保证路径可达
enabled 有 1 和 0 两个选项,1 代表开启,0 代表关闭,开启是指激活这个软件源,关闭则不激活这个软件源
gpgcheck 指下载软件包的时候是否检查数字签名,用来检查软件包的完整性。开启 gpgcheck 后,通过 gpgkey 来指定,相应的 rpm-gpg 文件,如果不指定 gpgkey 文件,那么就必须手动的导入相应的 rpm-gpg 文件

 

3.8 手动的导入相应的 rpm-gpg 文件

rpm --import gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

三、验证与数字证书

1、验证

[root@centos6 ~]# rpm -Va
# -Va:校验本机已经安装的所有软件包
[root@centos6 ~]# rpm -V 已安装的包名
# -V:校验指定 RPM 包中的文件(verify)
[root@centos6 ~]# rpm -Vf 系统文件名
# -Vf:校验某个系统文件是否被修改

 

Linux 软件管理

原文:https://www.cnblogs.com/bread-dream/p/12388776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!