程序包管理(一)

网友投稿 266 2022-11-07

程序包管理(一)

ABI

ABI即 Application Binary Interface #Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) #库级别的虚拟化: Linux: WINE Windows: Cygwin

API

API即Application Programming Interface,API可以在各种不同的操作系统上实现给应用程序提供完全 相同的接口,而它们本身在这些系统上的实现却可能迥异,主流的操作系统有两种,一种是Windows系 统,另一种是Linux系统。由于操作系统的不同,API又分为Windows API和Linux API。在Windows平 台开发出来的软件在Linux上无法运行,在Linux上开发的软件在Windows上又无法运行,这就导致了软 件移植困难,POSIX 标准的出现就是为了解决这个问题 POSIX:Portable Operating System Interface 可移植操作系统接口,定义了操作系统应该为应用程序 提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。 Linux和windows都要实现基本的posix标准,程序就在源代码级别可移植了

# 1 ABI接口 不同的系统的ABI接口不一样,接口标准,Windows的ABI接口和linux的就不一样,接口就相当于电源的插座,就比如香港的插座的插口就不一样了, posix国际标准,windows的调用的库和linux的库都可以使用,C语言和linux是天生一对。很多的软件都是C写的, API即应用程序的开发接口,程序员写的代码要调用别人的库 deb 是Ubuntu的安装包 rpm( 红帽的)是centos的安装包 x8646: 64位 i686: 32位 noarch:无位数 windows : Program File 32位 Program File(X86) 64位 二进制的可以直接使用,如果是源代码就要自己编译安装,编译安装的过程 API接口 应用编程接口 ABI应用程序的二进制接口,基于二进制程序,windows有windows ABI接口,linux有linux的ABI接口,网上下载的软件有自己的安装版本 相同的API可以跨操作系统,只有相同的ABI才能真正的运行程序 主要遵循posix规范 api兼容,那么源代码可以在系统平台上进行编译 系统调用 库调用 apm 程序包管理器,作用是管理linux的二进制程序的组合包 apm 程序包之间很有可能就有依赖关系, yum dnf 升级版程序包管理 源代码编译安装,而不用程序包管理器, 程序源代码-->预处理--->编译---->汇编 Linux常见软件包分为两种, 源代码包(Source Code)是没有经过编译的包,需要经过GCC、C++编译 器环境编译才能运行 二进制包(Binary Code)二进制包无需编译,可以直接安装使用。 Windows有自己的ABI接口,linux 有自己的ABI接口 [root@localhost ~]# file /bin/ls /bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=bed150f5bac8514e69b3b98eb6fd3e75d6b277c8, stripped, too many notes (256) ls 命令就是基于ELF格式 例如:windows的可执行文件放在linux下无法运行,因为ABI的标准不一样,导致不兼容。用虚拟化的技术就可以, 程序员整合别人的库,但是我们是直接用的别人的,比如说一些加密技术都要数学,程序员调用第三方的库文件 linux内核

C**语言程序的实现过程**

#预处理(Pre-Processing) 1)将所有的#define删除,并且展开所有的宏定义 2)处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等 3)处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。 4)删除所有注释 “//”和”/* */”. 5)添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。 6)保留所有的#pragma编译器指令,因为编译器需要使用它们 #编译 (Compiling) 编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后,最后生成 相应的汇编代码 #汇编 (Assembling) 汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编 相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可 #链接 (Linking) 通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可 执行文件

查看linux的内核文件有多少行

[root@centos8 linux-5.11.13]#find -name ".c" |xargs cat |wc -l 20413035 [root@centos8 linux-5.11.13]#echo 20413035/100/365 |bc 559 (五百多年看完linux内核文件) [root03:09 PMcentos8 /data/linux-5.4.120]#cat `find -name "*.c" ` |wc -l 18959556 方法一 cat `find -name "*.c"` |wc -l 方法二 find -name "*.c" |xargs cat |wc -l 方法三 for file in `find -name "*.c"`;do line=`cat $file |wc -l`;let sum+=line;done;echo $sum 或者: for file in `find -name "*.c"`;do line=`cat $file |wc -l`; sum+$line;done;echo $sum

统计rpm的架构类型及相应的包数量

[root@centos8 Packages]#pwd /misc/cd/BaseOS/Packages [root@centos8 Packages]#ls *.rpm | grep -Eo '[^.]+\.rpm$'| grep -Eo '^[^.]+'|sort |uniq -c 389i686 211noarch 1061 x86_64 [root@centos8 Packages]#ls *.rpm |rev|cut -d. -f2|rev |sort |uniq -c 389i686 211noarch 1061 x86_64 [root@centos8 Packages]#ls *.rpm | grep -Eo '[^.]+\.rpm$'|cut -d. -f1|sort |uniq -c 389i686 211noarch 1061 x86_64

分类和拆包

软件包为了管理和使用的便利,会将一个大的软件分类,放在不同的子包中。

包的分类

Application-VERSION-ARCH.rpm: 主包

Application-devel-VERSION-ARCH.rpm 开发子包

Application-utils-VERSION-ARHC.rpm 其它子包

Application-libs-VERSION-ARHC.rpm 其它子包

包的依赖

软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包

安装软件包时,会因为缺少依赖的包,而导致安装包失败。

解决依赖包管理工具:

yum:rpm包管理器的前端工具dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yumapt:deb包管理器前端工具zypper:suse上的rpm前端管理工具

程序包管理器相关文件

1.包文件组成 (每个包独有)

包内的文件

元数据,如:包的名称,版本,依赖性,描述等

可能会有包安装或卸载时运行的脚本

数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息

获取程序包的途径

软件包需要事先将源码进行编译后打包形成,获取包的途径如下:

2.1.7.1 系统发版的光盘或官方网站

CentOS镜像:

Ubuntu 镜像:

查看一个可执行文件所依赖的库

[root03:19 PMcentos8 /data/linux-5.4.120]#ldd /bin/cat linux-vdso.so.1 (0x00007fff511aa000) libc.so.6 => /lib64/libc.so.6 (0x00007f4f9f89d000) /lib64/ld-linux-x86-64.so.2 (0x00007f4f9fe68000) [root03:19 PMcentos8 /data/linux-5.4.120]#ldd /bin/ls linux-vdso.so.1 (0x00007fffc7bf2000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff3cc04c000) libcap.so.2 => /lib64/libcap.so.2 (0x00007ff3cbe46000) libc.so.6 => /lib64/libc.so.6 (0x00007ff3cba84000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007ff3cb800000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ff3cb5fc000) /lib64/ld-linux-x86-64.so.2 (0x00007ff3cc49a000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff3cb3dc000) [root03:19 PMcentos8 /data/linux-5.4.120]#

故障:移动库文件

/lib64/libc.so.6 /data

root03:26 PMcentos8 /data/linux-5.4.120]#ldd /bin/ls linux-vdso.so.1 (0x00007ffd6adce000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f805f154000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f805ef4e000) libc.so.6 => /lib64/libc.so.6 (0x00007f805eb8c000) libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f805e908000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f805e704000) /lib64/ld-linux-x86-64.so.2 (0x00007f805f5a2000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f805e4e4000) [root03:26 PMcentos8 /data/linux-5.4.120]#mv /lib64/libc.so.6 /data [root03:27 PMcentos8 /data/linux-5.4.120]#ls ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory [root03:27 PMcentos8 /data/linux-5.4.120]#

问题:删除库 /lib64/libc.so.6 以后怎么解决

程序包管理器

主流的程序包管理器

redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager debian:deb文件, dpkg 包管理器

rpm2cpio 命令

[root06:07 PMcentos8 /misc/cd/BaseOS/Packages]#cp bash-4.4.19-10.el8.x86_64.rpm /data/ [root06:07 PMcentos8 /misc/cd/BaseOS/Packages]#cd /data [root06:07 PMcentos8 /data]#ls bash-4.4.19-10.el8.x86_64.rpm 将rpm文件转化为 cpio格式,然后解开里面的文件 -v 显示过程 -t 预览 [root06:08 PMcentos8 /data]#rpm2cpio bash-4.4.19-10.el8.x86_64.rpm |cpio -id 13573 blocks [root06:09 PMcentos8 /data]#ls bash-4.4.19-10.el8.x86_64.rpm etc usr

常见的arch:

x86: i386, i486, i586, i686 x86_64: x64, x86_64, amd64 powerpc: ppc 跟平台无关:noarch

bash-3.2-32.el5_9.1.i386.rpm bash-4.2.46-19.el7.x86_64.rpm bash-4.4.19-7.el8.x86_64.rpm bash-4.4.19-7.el8.aarch64.rpm bash-4.4.19-7.el8.ppc64le.rpm bc_1.07.1-2_amd64.deb bc_1.07.1-2_s390x.deb

查找rpm包支持的架构

[root@localhost dev]# lsblk [root@localhost dev]# mount /dev/sr0 /mnt mount: /mnt: WARNING: device write-protected, mounted read-only. [root@localhost dev]# cd /mnt [root@localhost mnt]# ls AppStream BaseOS EFI images isolinux media.repo TRANS.TBL [root@localhost mnt]# du -sh * 6.1G AppStream 1014M BaseOS 9.5M EFI 613M images 72M isolinux 512 media.repo 1.0K TRANS.TBL libmicro yum-utils-4.0.12-3.el8.noarch.rpm libmnl-1.0.4-6.el8.i686.rpm zip-3.0-23.el8.x86_64.rpm libmnl-1.0.4-6.el8.x86_64.rpm zlib-1.2.11-13.el8.i686.rpm libmodman-2.0.1-17.el8.i686.rpm zlib-1.2.11-13.el8.x86_64.rpm libmodman-2.0.1-17.el8.x86_64.rpm zlib-devel-1.2.11-13.el8.i686.rpm libmodulemd1-1.8.16-0.2.8.2.1.i686.rpm zlib-devel-1.2.11-13.el8.x86_64.rpm libmodulemd1-1.8.16-0.2.8.2.1.x86_64.rpm zsh-5.5.1-6.el8_1.2.x86_64.rpm libmodulemd-2.8.2-1.el8.i686.rpm 从后往前操作: [root@localhost mnt]# find -name "*.rpm" |sed -En 's#.*\.([^.]+)\.rpm#\1#p'|sort |uniq -c 1288 i686 2168 noarch 3544 x86_64 [root@localhost Packages]# pwd /mnt/BaseOS/Packages 或者锚点词尾加$: [root@localhost Packages]# find -name "*.rpm" |sed -En 's#.*\.([^.]+)\.rpm$#\1#p'|sort |uniq -c 393 i686 215 noarch 1066 x86_64 .*表示任意内容 方法二: 挂载光盘 mount /dev/sr0 /mnt [root@localhost Packages]# pwd /mnt/BaseOS/Packages [root@localhost Packages]# ls *.rpm |rev |cut -d. -f2 |rev |sort |uniq -c 393 i686 215 noarch 1066 x86_64 方法三: [root@localhost Packages]# ls *.rpm |grep -Eo [^.]+\.rpm$|cut -d. -f1 |sort |uniq -c 393 i686 215 noarch 1066 x86_64 以rpm结尾是因为 [root@localhost Packages]# ls *.rpm |grep python3-rpm python3-rpm-4.14.2-37.el8.x86_64.rpm

解决依赖包管理工具:

yum:rpm包管理器的前端工具 dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum apt:deb包管理器前端工具 zypper:suse上的rpm前端管理工具

程序包管理器相关文件

1. 包文件组成 (每个包独有) 包内的文件 元数据,如:包的名称,版本,依赖性,描述等 可能会有包安装或卸载时运行的脚本 2. 数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息

/var/lib/rpm 主要文件

通过这个数据库是可以查询到文件属性的,不要移动,动了啥也做不了 #公共数据库,记载各个RPM包安装完了的公共数据库 #rpm包安装完成以后,各种文件的的信息会存在这个库里面 ,安装的软件都会查找这个库,这个库删除以后将无法安装软件包 [root@centos8 Packages]#ls /var/lib/rpm Basenames __db.002 Enhancename Installtid Packages Requirename Suggestname Triggername Conflictname __db.003 Filetriggername Name Providename Sha1header Supplementname __db.001 Dirnames Group Obsoletename Recommendname Sigmd5 Transfiletriggername https://mirrors.aliyun.com/ #包的版本:主版本号 次版本号 最小的版本号 rpm包安装时生成的信息,都放在rpm数据库中 可以重建数据库 rpm {--initdb|--rebuilddb} initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作 rebuilddb:重建已安装的包头的数据库索引目录 [root05:29 PMcentos7 /var/lib/rpm]#pwd /var/lib/rpm [root05:29 PMcentos7 /var/lib/rpm]#ll total 55840 -rw-r--r--. 1 root root 1409024 Jun 5 12:55 Basenames -rw-r--r--. 1 root root 8192 Jun 2 09:38 Conflictname -rw-r--r--. 1 root root 270336 Jun 5 17:10 __db.001 -rw-r--r--. 1 root root 81920 Jun 5 17:10 __db.002 -rw-r--r--. 1 root root 1318912 Jun 5 17:10 __db.003 -rw-r--r--. 1 root root 446464 Jun 5 12:55 Dirnames -rw-r--r--. 1 root root 8192 Jun 5 12:55 Group -rw-r--r--. 1 root root 12288 Jun 5 12:55 Installtid -rw-r--r--. 1 root root 24576 Jun 5 12:55 Name -rw-r--r--. 1 root root 16384 Jun 2 09:38 Obsoletename -rw-r--r--. 1 root root 51511296 Jun 5 12:55 Packages -rw-r--r--. 1 root root 1978368 Jun 5 12:55 Providename -rw-r--r--. 1 root root 143360 Jun 5 12:55 Requirename -rw-r--r--. 1 root root 40960 Jun 5 12:55 Sha1header -rw-r--r--. 1 root root 24576 Jun 5 12:55 Sigmd5 -rw-r--r--. 1 root root 8192 Jun 2 09:38 Triggername

获取程序包的途径

CentOS镜像:

Ubuntu 镜像:

389 i686

211 noarch

1061 x86_64

第三方组织提供

Fedora-EPEL:Extra Packages for Enterprise Linux

Rpmforge:官网:RHEL推荐,包很全,即将关闭

Community Enterprise Linux Repository:软件项目官方站点

2.1.7.4 搜索引擎

自己制作

将源码文件,利用工具,如:rpmbuild,fpm等工具制作成rpm包文件注意:第三方包建议要检查其合法性,来源合法性,程序包的完整性

包管理器**rpm**

安装

rpm {-i|--install} [install-options] PACKAGE_FILE…

-v: verbose -vv: -h: 以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE ... --test: 测试安装,但不真正执行安装,即dry run模式 --nodeps:忽略依赖关系 --replacepkgs | replacefiles --nosignature: 不检查来源合法性 --nodigest:不检查包完整性 --noscripts:不执行程序包脚本 %pre: 安装前脚本 --nopre %post: 安装后脚本 --nopost %preun: 卸载前脚本 --nopreun %postun: 卸载后脚本 --nopostun

升级和降级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE... rpm {-F|--freshen} [install-options] PACKAGE_FILE...

upgrade:安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”

freshen:安装有旧版程序包,则“升级”, 如果不存在旧版程序包,则不执行升级操作

--oldpackage:降级

--force: 强制安装

rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ..

升级注意项:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核

(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老

版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留

包查询

rpm {-q|--query} [select-options] [query-options] [select-options] -a:所有包 rpm -qa |grep " 或者 rpm -qa "*httpd*" -f:查看指定的文件由哪个程序包安装生成 -p rpmfile:针对尚未安装的程序包文件做查询操作 [query-options] --changelog:查询rpm包的changelog -c:查询程序的配置文件 -d:查询程序的文档 -i:information -l:查看指定的程序包安装后生成的所有文件 --scripts:程序包自带的脚本 #和CAPABILITY相关 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖 --provides:列出指定程序包所提供的CAPABILITY -R:查询指定的程序包所依赖的CAPABILITY -qa -q PACKAGE -qi PACKAGE -qc PACKAGE -ql PACKAGE -qd PACKAGE -q --scripts PACKAGE -qf FILE -qpi PACKAGE_FILE rpm -qpi #文件的路径名,查询安装前的信息 -qpl PACKAGE_FILE, ... #安装将生成哪些文件

包卸载

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

注意:当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

范例:强行删除rpm包,并恢复

[root@centos7 ~]#rpm -e rpm --nodeps #重启进入rescue模式 #mkdir /mnt/cdrom #mount /dev/sr0 /mnt/cdrom #rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-40.el7.x86_64.rpm --root=/mnt/sysimage #reboot

rpm 命令(redhat package manager)

[13:54:21root@localhost ~]#rpm -q yum yum-3.4.3-132.el7.centos.0.1.noarch [13:54:30root@localhost ~]#rpm -qc yum /etc/logrotate.d/yum /etc/yum.conf #为所有仓库提供公共配置 #(主配置文件包含/etc/yum.repos.d/*repo 结尾的文件,切割为多个,便于管理) /etc/yum/version-groups.conf RPM 包的命名格式 name-VERSION-arch.rpm -ivh 安装 --nodeps 忽略依赖 --replacepkgs 重新安装程序包 -q 查询 -qa 查询所有安装的程序包 -qf 查询某个文件由那个程序包安装生成 -ql 查看包里面的安装文件列表 -qi 查询某个程序包的安装信息,此包必须是已经安装的 -qd 查询某个程序包的帮助文档 -qc 查询某个程序包的配置文件 -q --scripts 查询脚本 -q --changlog 查询更新日志 -q --provides -q --requires -e 卸载程序包 --nodeps 忽略依赖 ——Uvh 升级或安装程序包 -Fvh 只能升级 --oldpackage 降级 -qR 离开了哪些文件我玩不了 [root@centos7 yum.repos.d]# rpm -qR tree -V 校验哪里发生变化了 [root@centos8 cd]#rpm -V tree .......T. /usr/bin/tree 时间发生变化 [root@centos8 cd]#ll /usr/bin/tree -rwxr-xr-x 1 root root 83544 Apr 12 21:24 /usr/bin/tree [root@centos8 cd]#chgrp bin $_ [root@centos8 cd]#ll /usr/bin/tree -rwxr-xr-x 1 root bin 83544 Apr 12 21:24 /usr/bin/tree [root@centos8 cd]#rpm -V tree 属组发生变化 ......GT. /usr/bin/tree [root@centos8 Packages]#rpm -q --whatrequires /bin/bash 哪些包的安装需要 /bin/bash 这个包 [root@centos8 Packages]#rpm -qR tree (tree这个文件依赖哪些) libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 rtld(GNU_HASH) --scripts 安装httpd这个包时候所执行的脚本 [root@centos8 data]#rpm -q --scripts httpd #安装vsftpd [root@centos8 cd]#find -name "vsf*" ./AppStream/Packages/vsftpd-3.0.3-31.el8.x86_64.rpm [root@centos8 cd]#rpm -ivh AppStream/Packages/vsftpd-3.0.3-31.el8.x86_64.rpm Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.3-31.el8 ################################# [100%] [root@centos8 cd]#rpm -q vsftpd vsftpd-3.0.3-31.el8.x86_64 #卸载 [root@centos8 cd]#rpm -e vsftpd [root@centos8 cd]#rpm -q vsftpd package vsftpd is not installed #查看安装这个包以后的信息 [root@centos8 cd]#rpm -qi vsftpd Name : vsftpd Version : 3.0.3 Release : 31.el8 Architecture: x86_64 Install Date: Mon 12 Apr 2021 09:00:14 PM CST Group : System Environment/Daemons Size : 351645 License : GPLv2 with exceptions Signature : RSA/SHA256, Sun 26 Apr 2020 11:08:52 AM CST, Key ID 05b555b38483c65d Source RPM : vsftpd-3.0.3-31.el8.src.rpm Build Date : Fri 24 Apr 2020 11:01:34 AM CST Build Host : x86-02.mbox.centos.org Relocations : (not relocatable) Packager : CentOS Buildsys Vendor : CentOS URL : https://security.appspot.com/vsftpd.html Summary : Very Secure Ftp Daemon Description : vsftpd is a Very Secure FTP daemon. It was written completely from scratch. #qa 查看所有的包 [root@centos8 cd]#rpm -qa |wc -l 707 #模糊匹配 [root@centos8 cd]#rpm -qa "vs*" 注意加双引号 vsftpd-3.0.3-31.el8.x86_64 或者 [root@centos8 cd]#rpm -qa |grep vs libedit-3.1-23.20170329cvs.el8.x86_64 vsftpd-3.0.3-31.el8.x86_64 -qf 查看这个文件来自于哪个安装包, # 这个查询实际上是查询的/var/lib/rpm数据库 [root@centos8 cd]#rpm -qf `which tree` tree-1.7.0-15.el8.x86_64 --force 某个文件被移动删除了,强制安装某个包 [root@centos8 cd]#mv /usr/bin/tree /opt [root@centos8 cd]#tree -bash: tree: command not found [root@centos8 cd]#rpm -ivh BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm Verifying... ################################# [100%] Preparing... ################################# [100%] package tree-1.7.0-15.el8.x86_64 is already installed [root@centos8 cd]#rpm -ivh BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm --force 强制安装才可以再一次使用tree 命令 --replacepkgs 覆盖安装 [root@centos8 cd]#rpm -ivh BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm --replacepkgs 或者: [root@centos8 data]#rpm2cpio /msic/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm |cpio -tv #预览 -rwxr-xr-x 1 root root 83544 May 11 2019 ./usr/bin/tree drwxr-xr-x 1 root root 0 May 11 2019 ./usr/lib/.build-id drwxr-xr-x 1 root root 0 May 11 2019 ./usr/lib/.build-id/d8 lrwxrwxrwx 1 root root 24 May 11 2019 ./usr/lib/.build-id/d8/6d516d7cb07fb9334cb268af808119e33a5ac5 -> ../../../../usr/bin/tree drwxr-xr-x 1 root root 0 May 11 2019 ./usr/share/doc/tree -rw-r--r-- 1 root root 18009 Aug 13 2004 ./usr/share/doc/tree/LICENSE -rw-r--r-- 1 root root 5620 Apr 22 2014 ./usr/share/doc/tree/README -rw-r--r-- 1 root root 4430 Apr 24 2014 ./usr/share/man/man1/tree.1.gz 221 blocks [root@centos8 data]# rpm2cpio /msic/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm |cpio -idv ./usr/bin/tree #解出来 (./usr/bin/tree前面有一个点) ./usr/bin/tree 221 blocks [root@centos8 data]#\mv usr/bin/tree /usr/bin/ 这样就可以使用tree命令了 # 忽略依赖关系卸载rpm包 卸载也有依赖关系: [root@centos8 Packages]#which rpm /usr/bin/rpm [root@centos8 Packages]#rpm -e rpm error: Failed dependencies: rpm = 4.14.2-37.el8 is needed by (installed) rpm-libs-4.14.2-37.el8.x86_64 rpm is needed by (installed) policycoreutils-2.9-9.el8.x86_64 rpm >= 4.2.3-24_nonptl is needed by (installed) rhn-client-tools-2.8.16-13.module_el8.1.0+211+ad6c0bc7.x86_64 rpm is needed by (installed) efi-srpm-macros-3-2.el8.noarch rpm >= 4.11.0 is needed by (installed) redhat-rpm-config-123-1.el8.noarch [root@centos8 Packages]#rpm -e rpm --nodeps (忽略依赖关系rpm被卸载) [root@centos8 Packages]#rpm -bash: /usr/bin/rpm: No such file or directory

rpm2cpio

#挂载光盘以后预览yum-utils-4.0.12-3.el8.noarch.rpm这个包的所有文件 -tv :预览 [root@centos8 Packages]#pwd /msic/cd/BaseOS/Packages [root@centos8 Packages]#rpm2cpio yum-utils-4.0.12-3.el8.noarch.rpm |cpio -tv lrwxrwxrwx 1 root root 22 Apr 25 2020 ./usr/bin/debuginfo-install -> /usr/libexec/dnf-utils lrwxrwxrwx 1 root root 22 Apr 25 2020 ./usr/bin/find-repos-of-install -> /usr/libexec/dnf-utils lrwxrwxrwx 1 root root 22 Apr 25 2020 ./usr/bin/needs-restarting -> /usr/libexec/dnf-utils lrwxrwxrwx 1 root root 22 Apr 25 2020 ./usr/bin/package-cleanup -> /usr/libexec/dnf-utils lrwxrwxrwx 1 root root 22 Apr 25 2020 ./usr/bin/repo-graph -> /usr/libexec/dnf-utils #rpm2cpio yum-utils-4.0.12-3.el8.noarch.rpm |cpio -idv 解开这个包到当前文件

包的校验

[root@centos8 ~]#ll /etc/pki/rpm-gpg/ total 8 -rw-r--r--. 1 root root 1683 Jun 3 2020 RPM-GPG-KEY-centosofficial -rw-r--r--. 1 root root 1687 Jun 3 2020 RPM-GPG-KEY-centostesting [root@localhost Packages]# ll /etc/pki/rpm-gpg/ total 20 -rw-r--r--. 1 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-7 -rw-r--r--. 1 root root 1004 Dec 9 2015 RPM-GPG-KEY-CentOS-Debug-7 -rw-r--r--. 1 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-Testing-7 -rw-r--r-- 1 root root 1722 May 21 2014 RPM-GPG-KEY-elrepo.org -rw-r--r-- 1 root root 1662 Sep 5 01:37 RPM-GPG-KEY-EPEL-7 [root@localhost Packages]# [root@centos8 ~]#cat /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (GNU/Linux) mQINBFzMWxkBEADHrskpBgN9OphmhRkc7P/YrsAGSvvl7kfu+e9KAaU6f5MeAVyn rIoM43syyGkgFyWgjZM8/rur7EMPY2yt+2q/1ZfLVCRn9856JqTIq0XRpDUe4nKQ 8BlA7wDVZoSDxUZkSuTIyExbDf0cpw89Tcf62Mxmi8jh74vRlPy1PgjWL5494b3X 5fxDidH4bqPZyxTBqPrUFuo+EfUVEqiGF94Ppq6ZUvrBGOVo1V1+Ifm9CGEK597c aevcGc1RFlgxIgN84UpuDjPR9/zSndwJ7XsXYvZ6HXcKGagRKsfYDWGPkA5cOL/e f+yObOnC43yPUvpggQ4KaNJ6+SMTZOKikM8yciyBwLqwrjo8FlJgkv8Vfag/2UR7 JINbyqHHoLUhQ2m6HXSwK4YjtwidF9EUkaBZWrrskYR3IRZLXlWqeOi/+ezYOW0m vufrkcvsh+TKlVVnuwmEPjJ8mwUSpsLdfPJo1DHsd8FS03SCKPaXFdD7ePfEjiYk nHpQaKE01aWVSLUiygn7F7rYemGqV9Vt7tBw5pz0vqSC72a5E3zFzIIuHx6aANry Gat3aqU3qtBXOrA/dPkX9cWE+UR5wo/A2UdKJZLlGhM2WRJ3ltmGT48V9CeS6N9Y m4CKdzvg7EWjlTlFrd/8WJ2KoqOE9leDPeXRPncubJfJ6LLIHyG09h9kKQARAQAB tDpDZW50T1MgKENlbnRPUyBPZmZpY2lhbCBTaWduaW5nIEtleSkgPHNlY3VyaXR5 #导入公钥: [root@centos8 ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial #查看公钥的信息 [root@centos8 ~]#rpm -qa "gpg-pubkey" gpg-pubkey-8483c65d-5ccc5b19 (这一窜可以用 -e卸载 rpm -e gpg-pubkey-8483c65d-5ccc5b19) [root@centos8 ~]#rpm -qi gpg-pubkey-8483c65d-5ccc5b19 Name : gpg-pubkey Version : 8483c65d Release : 5ccc5b19 Architecture: (none) Install Date: Tue 23 Mar 2021 02:18:08 AM CST Group : Public Keys Size : 0 License : pubkey Signature : (none) Source RPM : (none) Build Date : Fri 03 May 2019 11:15:37 PM CST Build Host : localhost Relocations : (not relocatable) Packager : CentOS (CentOS Official Signing Key) Summary : gpg(CentOS (CentOS Official Signing Key) ) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.14.2 (NSS-3) mQINBFzMWxkBEADHrskpBgN9OphmhRkc7P/YrsAGSvvl7kfu+e9KAaU6f5MeAVyn rIoM43syyGkgFyWgjZM8/rur7EMPY2yt+2q/1ZfLVCRn9856JqTIq0XRpDUe4nKQ 8BlA7wDVZoSDxUZkSuTIyExbDf0cpw89Tcf62Mxmi8jh74vRlPy1PgjWL5494b3X #验证包的合法性 [root@centos8 ~]#rpm -K /msic/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm /msic/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm: digests signatures OK [root@centos8 ~]#cp /msic/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm /opt [root@centos8 ~]#rpm -K /opt/tree-1.7.0-15.el8.x86_64.rpm /opt/tree-1.7.0-15.el8.x86_64.rpm: digests signatures OK [root@centos8 ~]#echo >> /opt/tree-1.7.0-15.el8.x86_64.rpm #修改包里面换行 [root@centos8 ~]#rpm -K /opt/tree-1.7.0-15.el8.x86_64.rpm /opt/tree-1.7.0-15.el8.x86_64.rpm: DIGESTS SIGNATURES NOT OK #验证不通过

issue 这个包是由 别的包提供的,所以修改issue那么 就可在 -V 查找

yum和dnf

yum 的基本命令: Yum可以在线安装,而rpm需要下载后才可以安装,yum和rpm安装的都是.rpm的二进制程序包 Yum安装是单线程,不可以并行处理,但是rpm却可以 #centos8 [root@centos8 yum.repos.d]#yum repolist -v [root@centos8 yum.repos.d]#yum list 列出仓库里所有的包 [root@centos8 yum.repos.d]#yum list "cow*" 模模糊糊匹配要找的包

包卸载不干净处理情况

安装一个httpd以后在日志里面找信息 [root@centos7 yum.repos.d]# cat /var/log/yum.log [root@centos7 yum.repos.d]# yum remove httpd centos7虽然卸载了httpd,但是依赖包却没有卸载 centos8 就可以卸载以后依赖关系的也卸载 #卸载包:centos7 卸载不干净,用一下的方法解决问题 remove [root@centos7 ~]# yum remove httpd [root@centos7 ~]# yum history 查看历史 [root@centos7 ~]# yum history info 18 查看编号为18的做了什么 [root@centos7 ~]# yum history undo 18 撤销 [root@centos7 ~]# yum history redo 18 重做

-q 静默模式 能够安装 nginx 说明yum源没有问题 移除包:-y remove [root@wanghua backup]# yum -y remove nginx 更新安装包 -y update yum check-update 检查更新 查看程序包安装信息 yum info 相当于 rpm -qi yum provides 相当于rpm -qf [root@wanghua backup]# yum provides gcc 模糊搜索:yum serach 程序包组 [root@wanghua backup]# yum groups list [root@wanghua backup]# yum groups info "开发工具"

源代码程序:基于程序调用或库调用,使用高级语言,以文本的形式写出来,源代码程序都是兼容的API,在任何操作系统上进行编译 二进制程序:已编译完成,可以直接运行在操作系统之上的二进制程序语音的程序,一般不能跨操作系统

yum主配置文件yum.conf

yum的命令行选项 --nogpgcheck 禁止进行gpg check 优先级高于文本配置文件里写的 -q 静默模式 yum 的repo 配置文件可用的变量 $releasever 当前OS发布的主版本号,可执行yum whatprovides 'system-release(releasever)' centos-release或yum version查看 $arch 平台 $basearch 基础平台 $YUM0-$YUM9 $infra 其值可查看文件/etc/yum/vars/infra,此参数目前尚未使用。 CentOS 7,$releasever值为7,$basearch值为x86_64,$infra值为stock,替换后extras mirrorlist的值为: http://mirrorlist.centos.org/release=7&arch=x86_64&repo=extras&infra=stock http://mirrors.wanghua.com/centos/$releasever/$basearch/os Yum配置文件/etc/yum.conf,可使用man yum.conf查看各配置项的意义。 # 定义全局配置选项 [main] # yum缓存目录 cachedir=/var/cache/yum/$basearch/$releasever # 1或0,安装成功后是否保存header和package keepcache=0 # debug message输出级别,0 - 10 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 # 1或0,是否执行gpg签名检查 gpgcheck=1 # 1或0,是否启用yum plugins plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum # 指定一个包,Yum据此判断发行版本来设置配置文件中的$releasever,可执行yum whatprovides 'system-release(releasever)' centos-release或yum version查看 distroverpkg=centos-release 查看YUM的主配置文件 [root@localhost ~]# less /etc/yum.conf 内容: [main] //这个主配置文件用中括号定义的,每一个中括号中,定义了一个配置段,配置段只对某些地方代码有效,而main配置段,就叫主配置段。 cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 //使用过的文件是否保存在缓存 debuglevel=2 //调试级别 logfile=/var/log/yum.log //用到的安装日志文件。 exactarch=1 //安装程序包时,是否进行精确平台匹配 obsoletes=1 gpgcheck=1 //安装包时,是否检查包的完整性跟合法性 plugins=1 //是否支持插件机制 installonly_limit=5 //同时安装几个程序包 bugtracker_url= //bug错误的追踪地址 distroverpkg=centos-release

仓库路径

yum history 撤销反撤销

yum history info

epel

[root01:34 AMcentos7 /etc/yum.repos.d]#yum list |grep epel epel-release.noarch 、 7-11 extras yum install epel-release -y

相关变量

yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号,如:8,7,6 $arch: CPU架构,如:aarch64, i586, i686,x86_64等 $basearch:系统基础平台;i386, x86_64 $contentdir:表示目录,比如:centos-8,centos-7 $YUM0-$YUM9:自定义变量

[root@centos8 ~]#yum repolist --disabled 查看禁用的仓库 [root@centos7 yum.repos.d]# yum repolist all 查看所有的源 [root@centos7 yum.repos.d]# yum repolist 禁用的源不看 #临时启用被禁用的仓库安装sl命令 [root@centos8 ~]#yum install --enablerepo sl [root@centos8 ~]#yum list --disablerepo=e* 不显示epel仓库里面的 #只显示extras仓库的包 [root@centos8 yum.repos.d]#yum list --disablerepo=* --enablerepo=extras |wc -l Repository epel is listed more than once in the configuration Repository AppStream is listed more than once in the configuration Repository extras is listed more than once in the configuration 755

临时的开启或禁用仓库,不修改文件

#以 ep开头的仓库虽然被禁用,但是在命令中开启 以A开头的仓库虽然被开启,在命令中禁用 [root@centos8 ~]#yum --enablerepo=ep* --disablerepo=A* repolist Last metadata expiration check: 0:01:18 ago on Sun 29 Dec 2019 12:13:27 AM CST. repo id                   repo name                                           status BaseOS                     BaseOS                                             1,657 epel                       EPEL                                               3,733

yum-config-manager 启用和关闭yum源,修改文件

yum-utils提供该命令 yum install yum-utils -y [root@centos8 ~]#yum-config-manager --disable extras 关闭该源 [root@centos8 ~]#yum repolist BaseOS                             3.8 MB/s | 3.9 kB     00:00     AppStream                          4.2 MB/s | 4.3 kB     00:00     repo id               repo name                                           status AppStream             AppStream                                           4,755 BaseOS               BaseOS                                              1,659 [root@centos8 ~]#yum-config-manager --enable extras 启用该源 [root@centos8 ~]#yum repolist BaseOS                                3.8 MB/s | 3.9 kB     00:00     AppStream                             4.2 MB/s | 4.3 kB     00:00     extras                                12 kB/s | 1.5 kB     00:00     repo id               repo name                                           status AppStream             AppStream                                           4,755 BaseOS               BaseOS                                              1,659 extras extras

显示程序包

yum list yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] [root@centos8 data]#dnf list mariadb-server Last metadata expiration check: 0:05:03 ago on Sun 08 Dec 2019 04:11:17 PM CST. Available Packages mariadb-server.x86_64                     3:10.3.11-2.module_el8.0.0+35+6f2527ed                     AppStream [root@centos8 data]#dnf list mariadb-server --showduplicates   Last metadata expiration check: 0:05:11 ago on Sun 08 Dec 2019 04:11:17 PM CST. Available Packages mariadb-server.x86_64                     3:10.3.11-2.module_el8.0.0+35+6f2527ed                     AppStream [root@centos8 data]#dnf list mariadb-server   --disablerepo=AppStream Last metadata expiration check: 0:05:23 ago on Sun 08 Dec 2019 04:11:17 PM CST. Available Packages MariaDB-server.x86_64                                  10.4.10-1.el8                                 mariadb2 [root@centos8 data]#dnf list mariadb-server --showduplicates --disablerepo=AppStream 显示多个版本的仓库 Last metadata expiration check: 0:05:41 ago on Sun 08 Dec 2019 04:11:17 PM CST. Available Packages MariaDB-server.x86_64                                  10.3.17-1.el8                                 mariadb MariaDB-server.x86_64                                  10.3.18-1.el8                                 mariadb MariaDB-server.x86_64                                  10.3.20-1.el8                                 mariadb                     MariaDB-server.x86_64                                  10.4.7-1.el8                                   mariadb2 MariaDB-server.x86_64                                  10.4.8-1.el8                                   mariadb2 MariaDB-server.x86_64                                  10.4.10-1.el8                                 mariadb2 [root@centos8 ~]#yum --disablerepo="A*" --disablerepo="B*" --disablerepo="e*" list available

利用elrepo源在CentOS 7 安装新版内核

https://elrepo.org/tiki/HomePage #下载包https://elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm #安装该包 [root@centos7 ~]# yum install elrepo-release-7.el7.elrepo.noarch.rpm -y #查看包里面生成了什么东西 [root@centos7 ~]# rpm -ql elrepo-release /etc/pki/elrepo /etc/pki/elrepo/SECURE-BOOT-KEY-elrepo.org.der /etc/pki/rpm-gpg /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org /etc/yum.repos.d /etc/yum.repos.d/elrepo.repo 生成了elrepo.repo文件 #只查看elrepo的包 [root@centos7 yum.repos.d]# yum list --disablerepo=* --enablerepo=elrepo #启用kernel [root@centos7 yum.repos.d]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available Loaded plugins: fastestmirror Repository base is listed more than once in the configuration Repository updates is listed more than once in the configuration Repository extras is listed more than once in the configuration Repository centosplus is listed more than once in the configuration Repository contrib is listed more than once in the configuration Repository base is listed more than once in the configuration Loading mirror speeds from cached hostfile * elrepo-kernel: mirror-hk.koddos.net Available Packages kernel-lt.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-devel.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-doc.noarch 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-headers.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-tools.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs-devel.x86_64 5.4.111-1.el7.elrepo elrepo-kernel kernel-ml-devel.x86_64 5.11.13-1.el7.elrepo elrepo-kernel kernel-ml-doc.noarch 5.11.13-1.el7.elrepo elrepo-kernel kernel-ml-headers.x86_64 5.11.13-1.el7.elrepo elrepo-kernel kernel-ml-tools.x86_64 5.11.13-1.el7.elrepo elrepo-kernel #安装 kernel-ml 内核 [root@centos7 yum.repos.d]# yum --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml #查看内核安装目录: [root@centos7 yum.repos.d]# rpm -ql kernel-ml |less #看到内核了: [root@centos7 yum.repos.d]# ls /boot/ config-3.10.0-327.el7.x86_64 initrd-plymouth.img config-5.11.13-1.el7.elrepo.x86_64 symvers-3.10.0-327.el7.x86_64.gz grub symvers-5.11.13-1.el7.elrepo.x86_64.gz grub2 System.map-3.10.0-327.el7.x86_64 initramfs-0-rescue-73130982d56a42eebae4cd3fd350eade.img System.map-5.11.13-1.el7.elrepo.x86_64 initramfs-3.10.0-327.el7.x86_64.img vmlinuz-0-rescue-73130982d56a42eebae4cd3fd350eade initramfs-3.10.0-327.el7.x86_64kdump.img vmlinuz-3.10.0-327.el7.x86_64 initramfs-5.11.13-1.el7.elrepo.x86_64.img vmlinuz-5.11.13-1.el7.elrepo.x86_64 initramfs-5.11.13-1.el7.elrepo.x86_64kdump.img

缓存清理

[root@centos7 yum.repos.d]# ls /var/cache/yum yum makecache 构建缓存 yum clean all 清空缓存 [root@centos7 yum.repos.d]# du -sh /var/cache/yum/x86_64/ yum makecache 缓存的更新

模糊的搜索

模糊搜索:yum serach

显示程序包的依赖关系

yum deplist

日志 文件:

#CentOS 7以前版本日志 /var/log/yum.log #CentOS 8 版本日志 /var/log/dnf.rpm.log /var/log/dnf.log

日志命令

yum history [info|list|packages-list|packages-info|summary|addoninfo|redo|undo|rollback|new|sync|stats] [root@centos8 ~]#dnf history [root@centos8 ~]#dnf history info 22 [root@centos8 ~]#dnf history undo 22 -y [root@centos8 ~]#dnf history redo 22 -y

救援模式安装rpm包

[root09:48 AMcentos7 ~]#rpm -e rpm --nodeps 忽略依赖关系 卸载

查看包组

[root@centos8 cd]#ll `which yum` lrwxrwxrwx. 1 root root 5 Apr 25 2020 /usr/bin/yum -> dnf-3 前端软件包管理器(Yellow Updater Modified, YUM)适用于CentOS、Fedora、RedHat及SUSE中的 Shell命令行,主要用于管理RPM包,于RPM工具使 用范围类似,YUM工具能够从指定的服务器自动下 载RPM包并且安装,还可以自动处理依赖性关系。 #工作逻辑 yum基于C/S结构,yum 安装要仓库 https://mirrors.huaweicloud.com/centos/7/os/x86_64/ https://mirrors.aliyun.com/centos/7/os/x86_64/ 这样具有通用性 https://mirrors.huaweicloud.com/centos/$releasever/os/$baserach/ [root@centos7 yum.repos.d]# yum groups list Server with GUI 图像界面安装包组 yum --disablerepo=EPEl --disablerepo=extras group install " Server with GUI" 禁用EPEl extras 以后安装 图像

包组管理

程序包组 [root@wanghua backup]# yum groups list [root@wanghua backup]# yum groups info "开发工具" yum group list [16:11:34root@localhost yum.repos.d]#yum grouplist 例如: [16:14:22root@localhost yum.repos.d]#yum groupinstall "Development Tools" groupinstall 安装包组 groupupdate grouplist groupremove groupinfo yum groupinstall "Server with GUI" centos8安装图形界面 yum groupinstall "GNOME Desktop" centos7 安装图形界面

卸载虚拟网卡

centos8 私有仓库的搭建

1 服务端:执行脚本,生成仓库

[root12:06 PMcentos8 ~]#cat 7.sh #!/bin/bash # #******************************************************************************* #Author: wangyu #Data: 2021-06-06-02:13:04 #FileName: 6.sh #Description: 6.sh #Copyright (C): 2021 All rights reserved #******************************************************************************* #Fontcolor#red(31):green(32):yellow(33):blue(34):purple(35):cyan(36):white(37) #Backcolor#red(41):green(42):yellow(43):blue(44):purple(45):cyan(46):white(47) #******************************************************************************* # mkdir -p /etc/yum.repos.d/backups mv /etc/yum.repos.d/* /etc/yum.repos.d/backups &>/dev/null cat > /etc/yum.repos.d/tests.repo <

程序包编译

程序包编译安装: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软 件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特 性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具 可以大大减少编译过程的复杂度

第一步:运行 configure 脚本,生成Makefile 文件 第二步:make 第三步:make install

生产实践:基于最小化安装的系统建议安装下面相关包

yum install  gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel  vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java基础
下一篇:PLL芯片接口方面最常见的11个问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~