临沂市网站建设,手机上怎么做网页,天眼查官网官网,厦门企业网站推广# 软件包管理
# 1、软件包分类
# ㈠ 软件包类型
二进制包源码包
# ① 二进制包
什么是二进制包#xff1f;有什么特点#xff1f; 二进制包#xff0c;指的是已经 1 好了的软件包#xff0c;只需要直接安装就可以使用。二进制包#xff0c;不需要编译#xff0c;直接…# 软件包管理
# 1、软件包分类
# ㈠ 软件包类型
二进制包源码包
# ① 二进制包
什么是二进制包有什么特点 二进制包指的是已经 1 好了的软件包只需要直接安装就可以使用。二进制包不需要编译直接下载安装即可二进制包需要根据自己的计算机CPU以及操作系统去选择合适的二进制包命名方式一般为 xlockmore-5.31-2.el6.x86_64.rpm httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6 软件发行商。el6是RedHat公司发布适合RHEL6.xRed Hat Enterprise Linux和CentOS6.x下使用
i686 适合的硬件平台。RPM包可以在不同的硬件平台安装选择适合不同CPU的软件版本可以最大化的发挥CPU性能所以出现了所谓的i386386以上计算机都可以安装、i586586以上的计算机都可以安装、i686奔腾II以上计算机都可以安装目前所有的CPU都是奔腾II以上所以这个软件版本居多、x86_6464位CPU可以安装和noarch没有硬件限制等文件名了。
rpm rpm包的扩展名。我们说过Linux下文件不是靠扩展名区分文件类型也就是Linux中扩展名没有任何含义。可是这里怎么又出现了扩展名呢原因很简单如果我不把RPM的扩展名叫做“.rpm”管理员很难知道这是一个RPM包当然也就无法正确安装了。也就是说如果RPM包不用“.rpm”作为扩展名系统可以正确识别没有问题可是管理员很难识别这是个什么样的软件。
包全名如果操作的是未安装软件包则使用包全名而且需要注意绝对路径
包名如果操作的是已经安装的软件包则使用包名即可系统会生产RPM包的数据库/var/lib/rpm/而且可以在任意路径下操作
# ② 源码包
什么是源码包有什么特点 源码包指的是程序员写的原始的程序代码文件不能够直接在计算机上运行。源码包需要进行编译变成二进制的软件包后才可安装使用源码包一般可以在任何的计算机上安装使用源码包命名方式一般为 软件包名.tar.gz软件包名.tar.bz2软件包名.tar.xz软件包名.zip
[rootlocalhost ~]#vim hello.c
#include stdio.h
int main (void)
{printf (hello world\n);
}[rootlocalhost ~]# rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.el6.i686.rpm[rootlocalhost ~]# gcc -c hello.c
#-c 生成“.o”头文件。这里会生成hello.o头文件但是不会生成执行文件
[rootlocalhost ~]# gcc -o hello hello.o
#-o 生成执行文件并制定执行文件名。这里生成的hello就是可执行文件
[rootlocalhost ~]# ./hello hello world
#执行hello文件
# ③ 二进制源码包(了解)
什么是二进制源码包有什么特点 二进制源码包是一个半成品安装后不能直接使用二进制源码包需要使用 rpmbuild 工具重建成真正的 rpm 包或者重建成源码包才可安装使用二进制源码包命名方式一般为 mysql-community-5.7.25-1.el6.src.rpmmysql-community-5.7.25-1.el7.src.rpm
# ㈡ 常见的二进制包
系统平台包类型工具在线安装RedHat/Centos/Fedora/SUSErpmrpm,rpmbuildyum/dnfUbuntu/Debiandebdpkgapt
# ㈢ 总结二进制包和源码包区别
软件包类型是否编译安装难易程度可定制性二进制包否易(直接安装)差源码包是难(配置—编译—安装)好
# 2、软件包安装方式
# ㈠ 二进制包
# ① rpm工具安装 首先需要下载好rpm包到本地 然后直接使用rpm工具安装
RPM包依赖 1树形依赖a----b----c 2环形依赖a----b----c----a 3函数库依赖
什么是模块依赖我们举一个例子尝试安装以下文件
[rootlocalhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm
错误依赖检测失败libodbc.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要libodbcinst.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要
发现报错需要安装“libodbc.so.2”函数库文件这时会发现在光盘中根本找不到这个文件。那是因为函数库没有单独成包是包含在某一个软件包中的。而如果要知道在哪个软件包中需要查询网站www.rpmfind.net如图 # ② yum/dnf工具安装 首先需要**配置软件仓库**(里面存放很多软件包但不一定在本地) 然后使用yum/dnf工具安装
# ㈡ 源码包
# ① 根据需求配置
功能的定制
# ② 编译
使用编译器编译成二进制的软件包
# ③ 安装
将软件包安装到指定位置
# ④ 源码包安装优点 可以在任意平台上编译安装编译出来的软件包非常适应所在机器。 可以在编译的时候通过配置对某些功能进行定制开启或关闭相应的功能。
# 3、二进制rpm包如何管理(重点)
# ㈠ 如何获取rpm包
Linux只是内核Linux发行版本GNU/Linux RedHat/Centos光盘 推荐网站 www.rpmfind.net rpm.pbone.net 相应软件官方网站 http://www.mysql.com http://nginx.org/packages/
# ㈡ 如何选择合适的rpm包 选择适合当前系统的版本号 找不到适合的才去尝试别的系统版本号 el6兼容el5el5无法安装 el6 选择适合当前计算机cpu的架构 x86_64包只能安装在64位的系统上 i386,i586,i686的软件包可以安装在32和64位系统上 noarch表示这个软件包与硬件构架无关可以通用 32位系统不能安装64位包
建议 建议不要跨大版本号去安装软件包尽量使用当前版本自带软件包安装
# ㈢ 如何管理rpm包
RPM包默认安装路径
路径说明/etc/配置文件安装目录/usr/bin/可执行的命令安装目录/usr/lib/程序所使用的函数库保存位置/usr/share/doc/基本的软件使用手册保存位置/usr/share/man/帮助文件保存位置
# 1rpm工具管理
# ① rpm工具安装rpm包
(1)安装命令
# rpm -ivh 包全名注意软件包的名字必须写全xxx.rpm
选项-i install安装install-v 显示更详细的信息verbose-h 打印#显示安装进度hash
--nodeps 不检测依赖性安装。软件时会检测依赖性确定所需的底层软件是否安装。如果没有安装则会报错。如果我不管依赖性想强行安装可以使用这个选项。注意这样不检测依赖性安装的软件基本是不能使用的所以不建议这样做
--replacefiles 替换文件安装。如果安装软件包可是包中部分文件已经存在那么正常安装时候会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错而覆盖安装
--replacepkgs 替换软件包安装。如果软件包已经安装此选项可以把软件包重复安装一遍。
--force 强制安装。不管是否已经安装都重新安装。就是—replacefiles和—replacepkgs的综合。
--test 测试安装。不会实际安装只是检测一下依赖性。--prefix 指定安装路径。为安装软件指定安装路径而不使用默认安装路径。注意如果指定了安装路径软件没有安装到系统默认路径中的话系统会找不到这些安装的软件需要进行手工配置才能被系统识别。所以rpm包我们一般都采用默认路径安装。
xshell上传下载工具 rz 下载
sz 上传
2服务启动
[rootlocalhost ~]# service 服务名 start|stop|restart|status
[rootlocalhost ~]# systemctl start|stop|restart|status 服务名
# ② rpm工具卸载rpm包
# rpm -e 包名
选项--nodeps 不检查依赖性-e 卸载
注意卸载软件只需要跟软件包名字即可
# ③ rpm包的升级rpm包
# rpm -Uvh 包全名
或者
# rpm -Fvh 包全名选项说明-v:输出详细信息-h:打印散列标记一般和-v一起使用-U:升级软件包如果该软件包没安装会自动帮你安装-F:升级软件包如果该软件包没安装不会自动帮你安装
# ④ 查看rpm包相关信息
# 查看已经安装的所有rpm包
rpm -qa 软件包名
rpm -aq|grep 软件包名字# 查看已经安装软件的详细信息
rpm -qi 软件包名
# 查看未安装的软件包的详细信息
rpm –qip 包全名# 查看已经安装的软件的文件列表
rpm -ql 软件包名
# 查看未安装的rpm包里的文件列表
rpm -qlp 软件包(xxx.rpm)# 查看指定文件来自哪个rpm包
rpm -qf 文件名# 查询软件包所依赖的软件包
rpm –qR 包名
# 查询未安装软件包所依赖的软件包
rpm –qRp 包名# 查看已经安装软件的文档列表
rpm -qd 软件包名# 查看已经安装软件的配置文件
rpm -qc 软件包名选项-q 查询query-a 所有all-i 查询软件信息(information)-p 查询没有安装的软件包package-l 列出软件包中所有文件列表以及安装目录-d 查看文档-c 查看配置文件目录-f 系统文件属于哪个软件包file-R 查询软件包的依赖性requires
# ⑤ rpm工具其他安装选项
--force
表示强制
rpm -ivh 软件包 --force
强制安装软件包
rpm -e 软件包名 --force
强制卸载软件包--nodeps
忽略依赖关系
rpm -ivh 软件包 --nodeps
忽略依赖关系安装
rpm -e 软件包 --nodeps
忽略依赖关系卸载其他了解
rpm --import key_file
导入公钥用于检查rpm文件的签名
rpm --checksig package.rpm
检查rpm包的签名
rpm工具管理rpm软件包安装、卸载、升级、查看
缺点有依赖关系需要我们人肉去解决 A----B和C
# ⑥rpm校验
[rootlocalhost ~]#rpm –Va
选项-Va 校验本机已经安装的所有软件包[rootlocalhost ~]#rpm –V 已安装的包名
选项-V校验指定RPM包中的文件verify[rootlocalhost ~]#rpm –Vf 系统文件名
选项-Vf校验某个系统文件是否被修改
验证举例
[rootiZuf616fn1k2l61xnal11vZ html]# rpm -V nginx
S.5....T. c /etc/nginx/nginx.conf
出现了提示信息我们来解释下最前面共有8个信息内容是表示验证内容的。文件名前面的c是表示这是个配置文件configuration。最后是文件名。那么验证内容中的8个信息的具体内容如下
S 文件大小是否改变 M 文件的类型或文件的权限rwx是否被改变 5 文件MD5校验和是否改变可以看成文件内容是否改变 D 设备的主从代码是否改变 L 文件路径是否改变 U 文件的属主所有者是否改变 G 文件的属组是否改变 T 文件的修改时间是否改变 apache配置文件的文件类型是c那么还有哪些文件类型呢
c 配置文件config file d 普通文档documentation g “鬼”文件ghost file很少见就是该文件不应该被这个RPM包包含 l 授权文件license file r 描述文件read me
# ⑦数字证书
刚刚的校验方法只能对已经安装的RPM包中的文件进行校验但是如果RPM包本身就被动过手脚那么校验就不能解决问题了。我们就必须使用数字证书验证了。
数字证书有如下特点
首先必须找到原厂的公钥文件然后进行安装再安装RPM包是会去提取RPM包中的证书信息然后和本机安装的原厂证书进行验证如果验证通过则允许安装如果验证不通过则不允许安装并警告
数字证书位置
#光盘中的数字证书位置
[rootlocalhost ~]# ll /media/centos7_iso/RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 17 root root 1690 12月 10 2015 /media/centos7_iso/RPM-GPG-KEY-CentOS-7#系统中的数字证书位置
[rootlocalhost ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 10月 23 2020 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
数字证书导入
[rootlocalhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
我们如何查询系统中安装好的数字证书呢命令如下
[rootlocalhost ~]# rpm -qa | grep gpg-pubkey
gpg-pubkey-621e9f35-58adea78
gpg-pubkey-f4a80eb5-53a7ff4b
数字证书移除
rpm -e gpg-pubkey-621e9f35-58adea78
⑧提取rpm包包中文件了解
1cpio命令
cpio命令主要有三种基本模式“-o”模式指的是copy-out模式就是把数据备份到文件库中“-i”模式指的是copy-in模式就是把数据从文件库中恢复“-p”模式指的是复制模式就是不把数据备份到cpio库中而是直接复制为其他文件。命令如下 举几个例子吧先来看看使用cpio备份数据的方法命令如下 再来看看如何恢复cpio的备份数据命令如下 在CentOS5.x的版本中是可以利用上面的命令备份与恢复指定的文件。但是到CentOS6.x当中需要更加严谨。如果备份时使用绝对路径则恢复的数据会直接到绝对路径指定的路径中如果需要把数据恢复到当前目录中则需要使用相对路径例如
最后来演示一下cpio命令的“-p”复制模式命令如下 2提取RPM包中文件 举个例子现在我假设把系统中的/bin/ls命令不小心误删除了那么我可以修复回来吗这时有两种方法修复要不就是使用—force选项覆盖安装一遍coreutils-8.4-19.el6.i686包要不就可以使用cpio命令提取出/bin/ls命令文件再把它拷贝到对应位置就可以了。不过我是怎么知道/bin/ls命令是属于coreutils-8.4-19.el6.i686这个软件包的呢还记得-qf选项吗命令如下 那么我们在讲RPM包中文件提取所以我们使用第二章方法cpio命令提取出ls命令文件然后拷贝到对应位置命令如下 # 2yumdnf工具管理
yum/dnf优点能够自动解决依赖关系
核心需要有一个软件仓库软件仓库指的是来存放软件包和软件包之间的依赖关系地方。 需要有软件仓库 仓库可以在本地——本地yum源 仓库可以在远程——网络yum源——网络必须ok 需要告诉yum工具到哪个仓库里找 默认有一个地方存放了xxx.repo文件——定义了去哪个仓库里找
# yum源文件解析
yum源配置文件保存在/etc/yum.repos.d/目录中文件的扩展名一定是“.repo”。也就是说yum源配置文件只要扩展名是“.repo”就会生效。
[rootlocalhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo
CentOS-Sources.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
默认情况下CentOS-Base.repo文件生效。 [base]
nameCentOS-$releasever
enabled1
failovermethodpriority
baseurlhttp://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck1
gpgkeyhttp://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7[updates]
nameCentOS-$releasever
enabled1
failovermethodpriority
baseurlhttp://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck1
gpgkeyhttp://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7[extras]
nameCentOS-$releasever
enabled1
failovermethodpriority
baseurlhttp://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck1
gpgkeyhttp://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 解释一下base这个容器。 [base]容器名称一定要放在[]中。name容器说明可以自己随便写。mirrorlist镜像站点这个可以注释掉。baseurl我们的yum源服务器的地址。默认是CentOS官方的yum源服务器是可以使用的。 如果你觉得慢则可以改成你喜欢的yum源地址。enabled此容器是否生效如果不写或写成enabled1则表示此容器生效写成enabled0 则表示此容器不生效。gpgcheck如果为1则表示RPM的数字证书生效如果为0则表示RPM的数字证书不生效。gpgkey数字证书的公钥文件保存位置。不用修改。 光盘yum源CentOS-Media.repo
# 搭建本地光盘yum源
第一步放入CentOS安装光盘并挂载光盘到指定位置。命令如下 第二步修改其他几个yum源配置文件的扩展名让它们失效因为只有扩展名是“*.repo”的文件才能作为yum源配置文件。当然也可以删除其他几个yum源配置文件但是如果删除了当你又想用网络作为yum源时就没有了参考文件所以最好还是修改扩展名。命令如下 第三步修改光盘yum源配置文件CentOS-Media.repo参照以下方法修改 配置完成现在可以感受一下yum的便捷了。
# 搭建本地yum源
1本地仓库的分类
_BaseOS_存储库 BaseOS存储库旨在提供一套核心的底层操作系统的功能为基础软件安装库 _AppStream_存储库 AppStream存储库中包括额外的用户空间应用程序、运行时语言和数据库以支持不同的工作负载和用例。AppStream中的内容有两种格式——熟悉的RPM格式和称为模块的RPM格式扩展 2配置本地仓库
步骤1挂载镜像到本地系统
/mnt
/media 一般用于第三方设备的挂载点 [rootRedHat8 ~]# mount -o ro /dev/sr0 /mnt
手动将/dev/sr0设备挂载到指定 /mnt目录下列出BaseOS和AppStream的内容如下说明仓库已准备好
[rootRedHat8 ~]# ls /mnt/BaseOS/
Packages repodata
[rootRedHat8 ~]# ls /mnt/AppStream/
Packages repodata
步骤2修改配置文件指定本地存储库 [rootRedHat8 yum.repos.d]# pwd
/etc/yum.repos.d[rootRedHat8 yum.repos.d]# cat local.repo
[BaseOS]
nameBaseOS
# 开启
enabled1
# 本地软件包地址
baseurlfile:///mnt/BaseOS
# 不校验签名
gpgcheck0[AppStream]
nameAppStream
enabled1
baseurlfile:///mnt/AppStream
gpgcheck0
步骤3查看是否成功
清空yum缓存
[rootRedHat8 yum.repos.d]# yum clean all
创建yum缓存
[rootRedHat8 yum.repos.d]# yum makecache
查看仓库
[rootRedHat8 yum.repos.d]# yum repolist
仓库标识 仓库名称 状态
AppStream AppStream 4,672
BaseOS BaseOS 1,658
# yumdnf工具使用 查看 查看仓库软件
# yum list | grep samba查看已安装的软件
# yum list installed | samba
# rpm -q vsftpd
# dnf list installed| grep vsftpdsearch查找
# yum search httpd查询指定软件包的信息。
# yum info samba 安装软件包 # yum -y install 软件包1 软件包2
# yum -y groupinstall 包组名
注意
1.其中-y选项表示取消交互
2.包组里面包含很多的软件包。 升级rpm包 注意在进行升级操作时yum源服务器中软件包的版本要比本机安装的软件包的版本高。 # yum update 软件包名
# yum update 卸载软件包 再次强调一下除非你确定卸载的软件的依赖包不会对系统产生影响否则不要执行yum的卸载因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件这就有可能导致系统崩溃。卸载命令如下 # yum -y remove 软件包名
# yum -y groupremove 包组名
# yum组管理命令
查询可以安装的软件组 查询软件组内包含的软件 安装软件组 卸载软件组 # 4、源码包安装
1、应该选择哪种软件包
如果软件包是给大量客户提供访问建议使用源码包安装如LAMP环境搭建因为源码包效率更高。如果软件包是给Linux底层使用或只给少量客户访问建议使用rpm包安装因为rpm包简单。
2、源码包是从哪里来的
rpm包是光盘中直接包含的所以不需要用户单独下载。而源码包是通过官方网站下载的如果需要使用是需要单独下载的。
3、是否可以在系统中即安装rpm包的Apache又安装源码包的Apache
答案是可以因为两种安装方法安装的Apache安装位置是不一样的例如 1.4生产服务器上是否会同时安装两种Apache
当然不会啊因为系统中只有一个80端口所以你只能启动一个Apache装多个只能浪费资源。我们建议安装源码包的Apache。
# 安装过程
我们来解释一下源码包安装的具体步骤。
1下载软件包。
2解压缩。
3进入解压目录。
4./configure 编译前准备
这一步主要有三个作用
① 在安装之前需要检测系统环境是否符合安装要求。
② 定义需要的功能选项。“./configure”支持的功能选项较多可以执行“./configure --help” 命令查询其支持的功能。一般都会通过“./configure --prefix安装路径”来指定安装路径。
③ 把系统环境的检测结果和定义好的功能选项写入Makefile文件后续的编译和安装需要依赖这个文件的内容。
需要注意的是configure不是系统命令而是源码包软件自带的一个脚本程序所以必须采用“./configure”方式执行“./”代表在当前目录下。 5make 编译
make会调用gcc编译器并读取Makefile文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被Linux识别的可执行文件这些可执行文件保存在当前目录下。编译过程较为耗时需要有足够的耐心。
6make clean清空编译内容非必需步骤。
如果在“./configure”或“make”编译中报错那么我们在重新执行命令前一定要记得执行make clean命令它会清空Makefile文件或编译产生的“.o”头文件。
7make install编译安装
这才是真正的安装过程一般会写清楚程序的安装位置。如果忘记指定安装目录则可以把这个命令的执行过程保存下来以备将来删除使用。 vim INSTALL 启动 ps aux # 删除
源码包没有删除命令如果需要删除直接删除安装目录即可。
# 打入补丁
# 补丁的生成 举例 比较下两个文件的不同并生成补丁文件“txt.patch”命令如下 #后一个文件比前一个文件多两行表示
# 打入补丁 “-pn”不好理解我们说明下。补丁文件是要打入旧文件的但是你当前所在的目录和补丁文件中的记录的目录是不一定匹配的所以就需要“-pn”来同步两个目录。比如我当前是在“/root/test”目录中我要打补丁的旧文件就在当前目录下补丁文件中记录的文件目录为“/root/test/old.txt”这时如果写入“-p1”在补丁文件目录中取消一级目录那么补丁文件就会打入“/root/test/root/test/old.txt”文件中这显然是不对的。那如果写入的是“-p2”在补丁文件目录中取消二级目录那么补丁文件打入的就是“/root/test/test/old.txt”,这显然也不对。如果写入的是“-p3”在补丁文件目录中取消三级目录那么补丁文件就是打入的“/root/test/old.txt”我们的old.txt文件就在这个目录下所以就应该是“-p3”。那么我们更新下“old.txt”文件命令如下 # 脚本安装程序
脚本程序包并不多见所以在软件包分类中并没有把它列为一类。它更加类似于Windows下的程序安装有一个可执行的安装程序只要运行安装程序然后进行简单的功能定制选择比如指定安装目录等就可以安装成功只不过是在字符界面下完成的。
目前常见的脚本程序以各类硬件的驱动居多我们需要学习一下这类软件的安装方式以备将来不时之需。
# Webmin安装
我们来看看脚本程序如何安装和使用。安装一个叫作Webmin的工具软件Webmin是一个基于Web的系统管理界面。借助任何支持表格和表单的浏览器和File Manager模块所需要的Java你就可以设置用户账号、apache、DNS、文件共享等。Webmin包括一个简单的Web服务器和许多CGI程序这些程序可以直接修改系统文件比如/etc/inetd.conf和/etc/passwd。Web服务器和所有的CGI程序都是用Perl 5编写的没有使用任何非标准Perl模块。也就是说Webmin是一个用Perl语言写的、可以通过浏览器管理Linux的软件。
首先下载Webmin软件地址为http://sourceforge.net/projects/webadmin/files/webmin/这里下载的是webmin-1.610.tar.gz。
接下来解压缩软件命令如下 进入解压目录命令如下 执行安装程序setup.sh并指定功能选项命令如下 本文 https://docs.xiaoshaozi.site/zs-use/linux