标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、XWindow、办公套件、Internet工具和数据库等。
角色 | 系统命令 | 应用程序 |
---|---|---|
文件位置 | 一般在/bin 和/sbin 目录中,或为Shell内部指令 |
通常在/usr/bin 、/urs/sbin 和/usr/local/bin 、/usr/local/sbin 目录中 |
主要用途 | 完成对系统的基本管理工作,例如IP配置工具 | 完成相对独立的其他辅助任务,例如网页浏览器 |
适用环境 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
运行格式 | —般包括命令字、命令选项和命令参数 | 通常没有固定的执行格式,由程序开发者自行定义 |
文件类型 | 保存目录 | 说明 |
---|---|---|
普通执行程序文件 | /usr/sbin |
所有用户可执行 |
服务器执行程序文件和管理程序文件 | /usr/sbin |
只有管理员能执行 |
应用程序配置文件 | /etc |
通过rpm或yum方式安装的应用程序 |
日志文件 | /var/log |
系统日志 |
应用程序参考文档文件 | /usr/share/doc |
关于应用程序的参考文档等数据 |
应用程序手册页文件 | /usr/local/share/man |
执行文件及配置文件的man手册页 |
文件类型 | 保存目录 |
---|---|
RPM软件包 | 扩展名为“.rpm",适用于RHEL、CentOS等系统 |
DEB软件包 | 扩展名为“.deb",适用于Ubuntu、Debian等系统 |
源代码软件包 | 一般为“.tar.gz” . “.tar.bz2”等格式的压缩包 包含程序的原始代码 |
附带安装程序的软件包 | 软件包的扩展名不一,以TarBall格式的居多 在软件包中会提供用于安装的可执行程序或脚本文件,如 install .sh 、setup 等安装时只需运行安装文件就可以根据向导程序的提示完成安装操作 |
RPM包 : RPM Package Manager的缩写 是红帽公司自主研发的一款工具,实用性强。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在相互依赖的情况。
RPM软件包想要软件素材参考:http://www.rpm.org
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:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行。
RPM命令能够实现几乎所有对RPM软件包的管理功能。如果想要知道RPM命令的详细帮助信息,可以通过执行man 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 -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 [选项] 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 -e ROM包文件
常用选项参数以及含义
选项 | 含义 |
---|---|
-e | 卸载指定名称的软件包 |
–nodeps | 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系 |
-h | 在安装或升级软件包的过程中,以“#”号显示安装进度 |
-v | 显示软件安装过程中的详细信息 |
卸载tomcat软件包
[root@host Packages]# rpm -evh tomcat
准备中... ################################# [100%]
正在清理/删除...
1:tomcat-0:7.0.76-15.el7 ################################# [100%]
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(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
需要手动确认的命令格式:
yum install 软件名
不需要手动确认的命令格式:
yum install -y 软件名
命令 | 含义 |
---|---|
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 命令 | 查询命令属于哪个软件包 |
第一步:挂载光盘镜像文件(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
完毕!
对于想要的程序包并不能直接获取到,或者在已编译好的程序包中没有需要的功能,这个时候就需要进行源代码编译安装。将需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。
第一步:在xshell中安装所需要的依赖包,比如:
gcc
、gcc-c++
、zlib-devel
、pcre-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