安装及管理应用程序
一、Linux应用程序
1.应用程序组成
- 普通的可执行程序文件:一般保存在/usr/bin 目录中,普通用户即可执行。
- 服务器程序、管理程序文件:一般保存在/usr/sbin 目录中,只有管理员能执行。
- 配置文件:一般保存在/etc 目录中,配置文件较多时会建立相应的子目录。
- 日志文件:一般保存在/var/log 目录中。
- 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中。
- 执行文件及配置文件的 man 手册页:一般保存在/usr/share/man/目录中。
2.软件包的封装类型
- RPM 软件包:这种软件包文件的扩展名为“.rpm”,只能在使用 RPM(RPM Package Manager,RPM 软件包管理器)机制的 Linux 操作系统中安装,如 RHEL、Fedora、CentOS 等。RPM 软件包一般针对特定版本的操作系统量身定制,因此依赖性较强。安装 RPM 软件包需要使用操作系统中的 rpm 命令。
- DEB软件包:这种软件包文件的扩展名为“.deb”,只能在使用DPKG(Debian Package,Debian 包管理器)机制的 Linux 操作系统中进行安装,如 Debian、Ubuntu 等。安装 DEB 软件包需要使用操作系统中的 dpkg 命令。
- 源代码软件包:这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz”或“.tar.bz2”等格式的压缩包文件,因多数使用 tar 命令打包而成,所以经常被称为“TarBall”。安装源代码软件包需要使用相应的编译工具,如 Linux 中的 C语言编译器 gcc。因此,在安装操作系统的时候尽量勾选“开发工具”一项来安装基本的编译环境。
- 附带安装程序的软件包:这种软件包的扩展名不一,但仍以 TarBall 格式的居多。软件包中会提供用于安装的可执行程序或脚本文件,如 install.sh、setup 等,有时候会以“.bin”格式的单个安装文件形式出现。安装时只需运行安装文件就可以根据向导程序的提示完成安装操作。
二、RPM软件包管理
RPM 软件包管理机制最早由 Red Hat 公司提出,后来随着版本的升级逐渐融入更多的优秀 特 性 , 成 为 众 多 Linux 发 行 版 中 公 认 的 软 件 包 管 理 标 准 。 在 其 官 方 站 点http://www.rpm.org 中,可以了解到关于 RPM 包管理机制的详细资料。
1.RPM命令
#查看RPM手册页
[root@CentOS7-4 ~]# man rpm
2.查询 RPM 软件包信息
- 查询已安装的 RPM 软件包信息
-qa:显示当前系统中以 RPM 方式安装的所有软件列表
-qi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息(--info)
-ql:显示指定的软件包在当前系统中安装的所有目录、文件列表(--list)
-qf:查看指定的文件或目录是由哪个软件包所安装的(--file)
#查看系统中安装的所有rpm软件包
[root@CentOS7-4 ~]# rpm -qa
yum-3.4.3-168.el7.centos.noarch
grub2-common-2.02-0.86.el7.centos.noarch
firewalld-filesystem-0.6.3-11.el7.noarch
setup-2.8.71-11.el7.noarch
kbd-1.15.5-15.el7.x86_64
basesystem-10.0-7.el7.centos.noarch
NetworkManager-team-1.18.8-1.el7.x86_64
ncurses-base-5.9-14.20130511.el7_4.noarch
NetworkManager-tui-1.18.8-1.el7.x86_64
tzdata-2020a-1.el7.noarch
selinux-policy-targeted-3.13.1-268.el7.noarch
glibc-common-2.17-317.el7.x86_64
kexec-tools-2.0.15-51.el7.x86_64
nspr-4.21.0-1.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
libstdc++-4.8.5-44.el7.x86_64
audit-2.8.5-4.el7.x86_64
bash-4.2.46-34.el7.x86_64
kernel-3.10.0-1160.el7.x86_64
pcre-8.32-17.el7.x86_64
microcode_ctl-2.1-73.el7.x86_64
#检索某个软件包是否有安装
[root@localhost ~]# rpm -q samba
未安装软件包 samba
[root@localhost ~]# rpm -qa | grep -i samba
#查询某个已安装的软件包的摘要信息
[root@CentOS7-4 ~]# rpm -qi python
Name : python
Version : 2.7.5
Release : 89.el7
Architecture: x86_64
Install Date: 2023年03月28日 星期二 17时14分30秒
Group : Development/Languages
Size : 80835
License : Python
Signature : RSA/SHA256, 2020年10月15日 星期四 02时59分06秒, Key ID 24c6a8a7f4a80eb5
Source RPM : python-2.7.5-89.el7.src.rpm
Build Date : 2020年10月14日 星期三 23时09分26秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.python.org/
Summary : An interpreted, interactive, object-oriented programming language
Description :
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).
Programmers can write new built-in modules for Python in C or C++.
Python can be used as an extension language for applications that need
a programmable interface.
Note that documentation for Python is provided in the python-docs
package.
This package provides the "python" executable; most of the actual
implementation is within the "python-libs" package.
#查看某个软件包安装的目录和文件清单
[root@CentOS7-4 ~]# rpm -ql python
/usr/bin/pydoc
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/libexec/platform-python
/usr/share/doc/python-2.7.5
/usr/share/doc/python-2.7.5/LICENSE
/usr/share/doc/python-2.7.5/README
/usr/share/man/man1/python.1.gz
/usr/share/man/man1/python2.1.gz
/usr/share/man/man1/python2.7.1.gz
#系统中的某个文件是由哪一个软件包生成的
[root@localhost ~]# which vim
/usr/bin/vim
[root@localhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.629-8.el7_9.x86_64
- 查询 RPM 软件包文件中的相关信息
-qpi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息。
-qpl:查看该软件包准备要安装的所有目标目录、文件列表。
3.安装、升级、卸载 RPM 软件包
-i:在当前系统中安装(Install)一个新的 RPM 软件包。
-e:卸载指定名称的软件包。
-U:检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项。
-F:检查并更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装。
-h:在安装或升级软件包的过程中,以“#”号显示安装进度。
-v:显示软件安装过程中的详细信息。
--force:强制安装某个软件包,当需要替换已安装的软件包及文件,或者安装一
个比当前使用的软件版本更旧的软件时,可以使用此选项。
--nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
- 安装、升级软件包
[root@CentOS7-4 ~]# which ifconfig
/usr/sbin/ifconfig
[root@CentOS7-4 ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
[root@CentOS7-4 ~]# rpm -qpi net-tools-2.0-0.25.20131004git.el7.x86_64
#安装
[root@localhost ~]# rpm -ivh /mnt/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
[root@localhost ~]# rpm -Uvh /mnt/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
#更新,软件包必须已经安装才可更新
[root@localhost ~]# rpm -Fvh /mnt/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
- 卸载
[root@localhost ~]# rpm -e net-tools
#可以结合 --nodeps 忽略依赖
三、源码编译安装
1、编译安装过程
2、校验源码包
#使用MD5校验
[root@localhost ~]# md5sum apache-tomcat-8.5.16.tar.gz ed752991f01e270ccfc7b4e8686f4f3c
apache-tomcat-8.5.16.tar.gz
#使用sha256校验
[root@localhost ~]# sha256sum apache-tomcat-8.5.16.tar.gz 939fb7c9fae3298dd0ccb4724b9c943c524e8af287531c8f3bbec0707e5780f1 apache-tomcat-8.5.16.tar.gz
3.编译安装案例
- 安装环境
[root@CentOS7-4 ~]# yum -y install gcc gcc-c++ make
- 检查编译环境
[root@CentOS7-4 ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
[root@CentOS7-4 ~]# make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
- 下载打包源码
[root@CentOS7-4 ~]# ll httpd-2.4.9.tar.gz
-rw-r--r-- 1 root root 6784016 3月 29 18:02 httpd-2.4.9.tar.gz
- 安装依赖软件(在编译过程中可以根据报错信息来进行安装依赖软件)
[root@CentOS7-4 ~]# yum -y install pcre-devel apr-devel expat-devel libdb-devel cyrus-sasl-devel openldap-devel apr-util-devel
- 解包
[root@CentOS7-4 ~]# tar zxf httpd-2.4.9.tar.gz -C /usr/src/
[root@CentOS7-4 ~]# ls /usr/src/
debug httpd-2.4.9 kernels
- 配置
[root@CentOS7-4 ~]# cd /usr/src/httpd-2.4.9/
[root@CentOS7-4 httpd-2.4.9]# ./configure --prefix=/usr/local/apache
- 编译
[root@CentOS7-4 httpd-2.4.9]# make
- 安装
[root@CentOS7-4 httpd-2.4.9]# make install
- 配置软件并使用
- 修改配置文件
[root@CentOS7-4 httpd-2.4.9]# vi /usr/local/apache/conf/httpd.conf
- 在192行增加内容
- 启动服务
[root@CentOS7-4 httpd-2.4.9]# /usr/local/apache/bin/apachectl start
- 访问
-
如果没有看明白的话,可以看下面链接比较详细版的
源码安装HTTPD
四、使用yum源
1.yum命令
- 查询软件包
yum list [软件名]...
yum info [软件名]...
yum search <关键词>...
- 查询软件包组
yum grouplist <包组名>...
yum groupinfo <包组名>...
- 安装软件(可以使用 -y 选项表示不提醒)
yum install <软件名>...
yum groupinstall <包组名>...
- 升级软件(可以使用 -y 选项表示不提醒)
yum update <软件名>...
yum groupupdate <包组名>...
- 卸载软件(可以使用 -y 选项表示不提醒)
yum remove <软件名>...
yum groupremove <包组名>...
- 生成缓存和清空缓存
yum makecache
yum clean all
2、yum的配置文件
基本设置:/etc/yum.conf
仓库设置:/etc/yum.repos.d/*.repo
日志文件:/var/log/yum.log
3、本地yum源
使用本地ISO文件作为yum仓库
- 挂载ISO文件
[root@CentOS7-4 ~]# mkdir /ISO #创建一个ISO文件
[root@CentOS7-4 ~]# mount /dev/cdrom /ISO #把/dev/cdrom 挂载到ISO文件
mount: /dev/sr0 写保护,将以只读方式挂载
- 修改仓库文件
[root@CentOS7-4 yum.repos.d]# vi CentOS-Media.repo
# CentOS-Media.repo
#
# This repo can be used with mounted DVD media, verify the mount point for
# CentOS-7. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c7-media [command]
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///ISO #修改此处
gpgcheck=1
enabled=1 #开启
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 重命名网络源文件
[root@CentOS7-4 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@CentOS7-4 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
- 生成缓存
[root@CentOS7-4 yum.repos.d]# yum makecache
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
c7-media | 3.6 kB 00:00:00
(1/4): c7-media/group_gz | 153 kB 00:00:00
(2/4): c7-media/filelists_db | 3.3 MB 00:00:00
(3/4): c7-media/primary_db | 3.3 MB 00:00:00
(4/4): c7-media/other_db | 1.3 MB 00:00:00
元数据缓存已建立
- 安装ISO里面需要的软件包
#例如vim和net-tools
[root@CentOS7-4 yum.repos.d]# yum -y install vim net-tools wget
4、网络yum源
- 需要联网
- 备份源文件
[root@CentOS7-4 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
- 下载新的源文件
[root@CentOS7-4 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者
[root@CentOS7-4 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 生成缓存
[root@CentOS7-4 yum.repos.d]# yum makecache
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/6): extras/7/x86_64/other_db | 149 kB 00:00:00
(2/6): extras/7/x86_64/filelists_db | 276 kB 00:00:00
(3/6): updates/7/x86_64/other_db | 1.3 MB 00:00:00
(4/6): base/7/x86_64/other_db | 2.6 MB 00:00:01
(5/6): base/7/x86_64/filelists_db | 7.2 MB 00:00:04
(6/6): updates/7/x86_64/filelists_db | 11 MB 00:00:06
元数据缓存已建立
- 如果上面你跟着改过仓库文件的话要把他关闭掉就行了
[root@CentOS7-4 yum.repos.d]# vi CentOS-Media.repo
# CentOS-Media.repo
#
# This repo can be used with mounted DVD media, verify the mount point for
# CentOS-7. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c7-media [command]
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///ISO
gpgcheck=1
enabled=0 #修改此处-关闭
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 安装
#例如vim和net-tools
[root@CentOS7-4 yum.repos.d]# yum -y install vim net-tools wget