【Linux】安装与管理程序

文章目录

  • 一、Linux应用程序基础
    • 1.应用程序与系统命令的关系
    • 2.典型应用的目录结构
    • 3常见的软件包封装类型
  • 二、RPM软件包管理工具
    • 1.RPM命名格式
    • 2.RPM命令
    • 3.RPM命令——查询软件包信息
      • 查询已安装的RPM软件信息
      • 查询RPM软件包文件中的信息
      • 安装或升级RPM软件
      • 卸载指定的RPM软件
    • 4.维护RPM数据库
  • 三、yum源安装
    • 1.命令格式
    • 2.常用操作命令
    • 3.配置本地yum源与安装
  • 四、源代码编译安装
    • 1.优点
    • 2.编译过程

一、Linux应用程序基础

  标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、XWindow、办公套件、Internet工具和数据库等。

1.应用程序与系统命令的关系

角色 系统命令 应用程序
文件位置 一般在/bin/sbin目录中,或为Shell内部指令 通常在/usr/bin/urs/sbin/usr/local/bin/usr/local/sbin目录中
主要用途 完成对系统的基本管理工作,例如IP配置工具 完成相对独立的其他辅助任务,例如网页浏览器
适用环境 一般只在字符操作界面中运行 根据实际需要,有些程序可在图形界面中运行
运行格式 —般包括命令字、命令选项和命令参数 通常没有固定的执行格式,由程序开发者自行定义

2.典型应用的目录结构

文件类型 保存目录 说明
普通执行程序文件 /usr/sbin 所有用户可执行
服务器执行程序文件和管理程序文件 /usr/sbin 只有管理员能执行
应用程序配置文件 /etc 通过rpm或yum方式安装的应用程序
日志文件 /var/log 系统日志
应用程序参考文档文件 /usr/share/doc 关于应用程序的参考文档等数据
应用程序手册页文件 /usr/local/share/man 执行文件及配置文件的man手册页

3常见的软件包封装类型

文件类型 保存目录
RPM软件包 扩展名为“.rpm",适用于RHEL、CentOS等系统
DEB软件包 扩展名为“.deb",适用于Ubuntu、Debian等系统
源代码软件包 一般为“.tar.gz” . “.tar.bz2”等格式的压缩包
包含程序的原始代码
附带安装程序的软件包 软件包的扩展名不一,以TarBall格式的居多
在软件包中会提供用于安装的可执行程序或脚本文件,如install .shsetup
安装时只需运行安装文件就可以根据向导程序的提示完成安装操作

二、RPM软件包管理工具

  RPM包 : RPM Package Manager的缩写 是红帽公司自主研发的一款工具,实用性强。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在相互依赖的情况。

  RPM软件包想要软件素材参考:http://www.rpm.org

1.RPM命名格式

RPM包的一般格式为:

name-version-arch.rpm
name-version-arch.src.rpm

例如:

httpd-devel-2.2.3-29.el5.i386.rpm
  • name:如: httpd,是软件的名称。

  • version:如:2.2.3 ,是软件的版本号。版本号的格式通常为“主版本号.次版本号.修正号”。

  • arch:29,是发布版本号,表示这个RPM包是第几次编译生成的。
    ​    i386,表示包的适用的硬件平台,目前RPM支持的平台有: i386、i586、i686、sparc和alpha。

  • .rpm或.src.rpm:是RFPM包类型的后缀,.rpm是编译好的二进制包,可用rpm命令直接安装;.src.rpm表示是源代码包,需要安装源码包生成源码.并对源码编译生成.rpm格式的RPM包,就可以对这个RPM包进行安装了。

注意:

1、el*表示这个软件包的发行商 版本,el5表示这个软件包是在RHEL 5.x/CentOS 5.x下使用。

2、devel:表示这个RPM包是软件的开发包。

3、noarch:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行。

2.RPM命令

  RPM命令能够实现几乎所有对RPM软件包的管理功能。如果想要知道RPM命令的详细帮助信息,可以通过执行man rpm命令获取。

  RPM命令具有以下几个功能:

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护重建RPM数据库信息等综合管理操作

3.RPM命令——查询软件包信息

查询已安装的RPM软件信息

RPM 的命令格式:

rpm -q[子选项] [软件名]

常用选项的参数以及含义

选项 含义
-qi 显示己安装的指定软件的详细信息
-ql 显示己安装的指定软件的文件列表
-qc 列出已安装的指定软件的配置文件
-qd 列出己安装的指定软件的软件包文档所在位置
-qR 列出己安装的指定软件的依赖的软件包及文件
-qf 查询已安装的指定软件属于哪个安装包
-qa 显示当前系统中以rpm方式安装的所有软件列表
-qa l grep -i postfix 查询软件postfix是否己安装

基本用法:

查询软件是否安装(软件名称必须是完整的字符串)

[root@host ~]# rpm -q rpm
rpm-4.11.3-45.el7.x86_64

查询系统中所有的软件

[root@host ~]# rpm -qa
libstoragemgmt-python-1.8.1-1.el7.noarch
lksctp-tools-1.0.17-2.el7.x86_64
libvirt-gobject-1.0.0-1.el7.x86_64

...

libgcab1-0.7-4.el7_4.x86_64
python-pyudev-0.15-9.el7.noarch
libss-1.42.9-19.el7.x86_64
[root@host ~]# 

统计当前系统中软件安装的个数

[root@host ~]#  rpm -qa | wc -l
1481

过滤想要查询的软件

[root@host ~]#  rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs4-acl-tools-0.3.3-21.el7.x86_64
nfs-utils-1.3.0-0.68.el7.x86_64

查询软件的详细信息

[root@host ~]# rpm -qi yum
Name        : yum
Version     : 3.4.3
Release     : 168.el7.centos
Architecture: noarch
Install Date: 2023年03月22日 星期三 19时47分09秒
Group       : System Environment/Base
Size        : 5829237
License     : GPLv2+
Signature   : RSA/SHA256, 2020年10月15日 星期四 03时21分12秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-3.4.3-168.el7.centos.src.rpm
Build Date  : 2020年10月02日 星期五 01时03分49秒
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://yum.baseurl.org/
Summary     : RPM package installer/updater/manager
Description :
Yum is a utility that can check for and automatically download and
install updated RPM packages. Dependencies are obtained and downloaded
automatically, prompting the user for permission as necessary.

查询并列出与软件相关的文件

[root@host ~]# rpm -ql yum
/etc/logrotate.d/yum
/etc/yum
/etc/yum.conf
/etc/yum.repos.d
/etc/yum/fssnap.d

...

/var/lib/yum/plugins
/var/lib/yum/uuid
/var/lib/yum/yumdb

查询软件的配置文件

[root@host ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

查询软件的帮助文档所在位置

[root@host ~]# rpm -qd yum
/usr/share/doc/yum-3.4.3/AUTHORS
/usr/share/doc/yum-3.4.3/COPYING
/usr/share/doc/yum-3.4.3/ChangeLog
/usr/share/doc/yum-3.4.3/INSTALL
/usr/share/doc/yum-3.4.3/PLUGINS
/usr/share/doc/yum-3.4.3/README
/usr/share/doc/yum-3.4.3/TODO
/usr/share/doc/yum-3.4.3/comps.rng
/usr/share/man/man5/yum.conf.5
/usr/share/man/man8/yum-shell.8
/usr/share/man/man8/yum.8

查询安装软件需要安装哪些依赖包

[root@host ~]# rpm -qR yum
/usr/bin/python
config(yum) = 3.4.3-168.el7.centos
cpio
diffutils
pygpgme
pyliblzma
python >= 2.4
python(abi) = 2.7
python-iniparse
python-sqlite
python-urlgrabber >= 3.10-8
pyxattr
rpm >= 0:4.11.3-22
rpm-python
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
yum-metadata-parser >= 1.1.0
yum-plugin-fastestmirror
rpmlib(PayloadIsXz) <= 5.2-1

查询某个文件属于哪个软件

[root@host ~]# rpm -qf /etc/yum.conf
yum-3.4.3-168.el7.centos.noarch

查询RPM软件包文件中的信息

RPM 的命令格式:

rpm -qp[子选项] ROM包文件

常用选项的参数以及含义

选项 含义
-qpi 查询指定软件包的详细信息
-qpl 查询指定软件包的文件列表
-qpc 查询指定软件包的配置文件
-qpd 查询指定软件包的软件包文档的位置

查询软件包的信息

[root@host Packages]# rpm -qpi zip-3.0-11.el7.x86_64.rpm
警告:zip-3.0-11.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
Name        : zip
Version     : 3.0
Release     : 11.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Archiving
Size        : 815173
License     : BSD
Signature   : RSA/SHA256, 2016年11月21日 星期一 05时04分58秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : zip-3.0-11.el7.src.rpm
Build Date  : 2016年11月06日 星期日 00时49分55秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://www.info-zip.org/Zip.html
Summary     : A file compression and packaging utility compatible with PKZIP
Description :
The zip program is a compression and file packaging utility.  Zip is
analogous to a combination of the UNIX tar and compress commands and
is compatible with PKZIP (a compression and file packaging utility for
MS-DOS systems).

Install the zip package if you need to compress files using the zip

查询与软件包相关的文件列表

[root@host Packages]# rpm -qpl zip-3.0-11.el7.x86_64.rpm
警告:zip-3.0-11.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/share/doc/zip-3.0
/usr/share/doc/zip-3.0/CHANGES
/usr/share/doc/zip-3.0/LICENSE
/usr/share/doc/zip-3.0/README
/usr/share/doc/zip-3.0/README.CR
/usr/share/doc/zip-3.0/TODO
/usr/share/doc/zip-3.0/WHATSNEW
/usr/share/doc/zip-3.0/WHERE
/usr/share/doc/zip-3.0/algorith.txt
/usr/share/man/man1/zip.1.gz
/usr/share/man/man1/zipcloak.1.gz
/usr/share/man/man1/zipnote.1.gz
/usr/share/man/man1/zipsplit.1.gz

查询软件包的配置文件

[root@host Packages]# rpm -qpc yum-3.4.3-168.el7.centos.noarch.rpm 
警告:yum-3.4.3-168.el7.centos.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

查询软件包的帮助文档的位置

[root@host Packages]# rpm -qpd yum-3.4.3-168.el7.centos.noarch.rpm 
警告:yum-3.4.3-168.el7.centos.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
/usr/share/doc/yum-3.4.3/AUTHORS
/usr/share/doc/yum-3.4.3/COPYING
/usr/share/doc/yum-3.4.3/ChangeLog
/usr/share/doc/yum-3.4.3/INSTALL
/usr/share/doc/yum-3.4.3/PLUGINS
/usr/share/doc/yum-3.4.3/README
/usr/share/doc/yum-3.4.3/TODO
/usr/share/doc/yum-3.4.3/comps.rng
/usr/share/man/man5/yum.conf.5
/usr/share/man/man8/yum-shell.8
/usr/share/man/man8/yum.8

安装或升级RPM软件

RPM 的命令格式:

rpm [选项] ROM包文件

常用选项的参数以及含义

选项 含义
-i 安装一个新的RPM软件包
-U 升级某个软件包,若未安装过,则进行安装
-F 升级某个软件包,若未安装过,则放弃安装
-h 在安装或升级软件包的过程中,以“#”号显示安装进度
-v 显示软件安装过程中的详细信息
–force 强制安装某个软件包,比如要安装版本更旧的软件包
–nodeps 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系

安装tomcat软件包,但无法运行,因为没有安装依赖包

[root@host Packages]# rpm -ivh --nodeps tomcat-7.0.76-15.el7.noarch.rpm 
警告:tomcat-7.0.76-15.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:tomcat-0:7.0.76-15.el7           ################################# [100%]

卸载指定的RPM软件

RPM 的命令格式:

rpm -e ROM包文件

常用选项参数以及含义

选项 含义
-e 卸载指定名称的软件包
–nodeps 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
-h 在安装或升级软件包的过程中,以“#”号显示安装进度
-v 显示软件安装过程中的详细信息

卸载tomcat软件包

[root@host Packages]# rpm -evh tomcat
准备中...                          ################################# [100%]
正在清理/删除...
   1:tomcat-0:7.0.76-15.el7           ################################# [100%]

4.维护RPM数据库

  RPM数据库:用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成,一般不需要用户干预。

  当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包,这时可以使用--rebuilddb--initdb重建RPM数据库。

[root@host ~]# rpm --rebuilddb
//或者
[root@host ~]# rpm --initdb

  在Linux/Unix应用领域,相当一部分软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。对于用户来说,可以利用软件官方提供的公钥文件,自动对下载的软件包进行验证,如果在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法篡改。

//导入验证公钥与软件包中的密钥
[root@host ~]# rpm --import /medialcdrom/RPM-GPG-KEY-CentOS-7

三、yum源安装

  Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

1.命令格式

需要手动确认的命令格式:

yum install 软件名

不需要手动确认的命令格式:

yum install -y 软件名

2.常用操作命令

命令 含义
yum -y install 软件名 安装、升级软件包,-y选项表示自动确认,选项表示静默安装
yum -y remove/erase 软件名 卸载软件包,可自动解决其依赖关系
yum -y update软件名 升级软件包
yum list 查询软件包列表
yum list installed 查i询系统中己安装的软件包
yum list available 查询仓库中尚未安装的软件包
yum list updates 查询可以升级版本的软件包
yum info 软件名 查询软件包的描述信息
yum search [all] 关健词 根据某个关键词来查找相关的软件包
yum whatprovides 命令 查询命令属于哪个软件包

3.配置本地yum源与安装

第一步:挂载光盘镜像文件(dev/sr0 代表光盘)

[root@host ~]# mount  /dev/sr0 /mnt
//或者
[root@host ~]# mount /dev/cdrom /mnt

查看是否挂载成功

[root@host repo.bak]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2      xfs        36G  4.6G   32G   13% /
tmpfs          tmpfs     378M   36K  378M    1% /run/user/0
/dev/sr0       iso9660   4.4G  4.4G     0  100% /mnt

第二步:进入yum仓库配置目录,备份原文件

//进入yum源仓库
[root@host ~]# cd /etc/yum.repos.d/
//新建备份文件夹
[root@host yum.repos.d]# mkdir repo.bak
[root@host yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    repo.bak
//将含有.repo的文件放进备份文件夹中
[root@host yum.repos.d]# mv *.repo repo.bak/
[root@host yum.repos.d]# ls
repo.bak

第三步:创建本地yum源

//进入yum源仓库
[root@host ~]# cd /etc/yum.repos.d/
[root@host yum.repos.d]# vim local.repo

配置文件

[local]					//yum的ID,本地唯一,用于区分不同yum源
name=local				//描述信息
baseurl=file:///mnt		//前面的file://是固定格式,后面的/mnt是光盘挂载点
enabled=1				//1启用yum源,0禁用yum源
gpgcheck=0				//1使用公钥验证rpm包的正确性,0不验证

如果启用公钥验证,需要配置公钥gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

第四步:清空缓存,重新加载缓存信息

[root@host yum.repos.d]# yum clean all && yum makecache 
已加载插件:fastestmirror, langpacks
正在清理软件源: local
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
local                                        | 3.6 kB     00:00     
(1/4): local/group_gz                          | 153 kB   00:00     
(2/4): local/filelists_db                      | 3.3 MB   00:00     
(3/4): local/primary_db                        | 3.3 MB   00:00     
(4/4): local/other_db                          | 1.3 MB   00:00     
元数据缓存已建立

第五步:使用yum安装软件包

[root@host repo.bak]# yum install -y  tomcat
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
...
  tomcat-servlet-3.0-api.noarch 0:7.0.76-15.el7                xalan-j2.noarch 0:2.7.1-23.el7                        xerces-j2.noarch 0:2.11.0-17.el7_0               
  xml-commons-apis.noarch 0:1.4.01-16.el7                      xml-commons-resolver.noarch 0:1.2-15.el7             

完毕!

四、源代码编译安装

  对于想要的程序包并不能直接获取到,或者在已编译好的程序包中没有需要的功能,这个时候就需要进行源代码编译安装。将需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。

1.优点

  • 方便获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能

2.编译过程

第一步:在xshell中安装所需要的依赖包,比如:gccgcc-c++zlib-develpcre-devel

[root@host ~]# yum install -y zlib-devel  pcre-devel gcc gcc-c++ make

第二步:从官网下载源代码安装包文件。(这些软件包一般都是tar包)

这里演示的nginx安装,具体的下载链接可以参考https://nginx.p2hp.com/

第三步:进入/opt目录下,解压源代码安装包文件的压缩包。

[root@host repo.bak]# cd /opt/
[root@host opt]# rz -E
rz waiting to receive.
[root@host opt]# tar xf nginx-1.22.0.tar.gz 
[root@host opt]# ls
nginx-1.22.0  nginx-1.22.0.tar.gz  rh
[root@host opt]# cd nginx-1.22.0/

第四步:配置软件的安装路径或者安装关闭相关模块功能。定义需要的功能可以使用./configure --help,指定的安装路径一般默认放在/usr/local目录下。

[root@host nginx-1.22.0]# ./configure  --prefix=/usr/local/nginx

第五步:完成前置工作后,使用make来编译模块。编译的过程实际就是将源码转为可执行的二进制程序文件

[root@host nginx-1.22.0]# make

第六步:安装源代码安装包文件。如果在./configure或者make编译中报错,那么我们在重新执行前一定要执行make clean命令,系统清空Makefile文件或编译产生的.o开头的文件。

[root@host nginx-1.22.0]# make install

第七步:查看是否安装成功。可以进入/usr/local目录下查看。

[root@host nginx-1.22.0]# cd /usr/local/
[root@host local]# ls
bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src
[root@host local]# cd nginx/
[root@host nginx]# ls
conf  html  logs  sbin

你可能感兴趣的:(Linux,linux,服务器,运维)