redhat安装一个软件一般有三种方式:yum 安装、rpm安装、源码编译安装。
区别与联系判断方法yum安装软件联网的话可以自动解决依赖问题,非常方便,但是yum、rpm安装的软件无法自定义安装路径。
而rpm是红帽的包管理工具,其一般是安装以后缀.rpm结尾的二进制包,yum其实可以安装rpm包,而不管是通过yum安装还是通过rpm安装,其安装路径是无法自定义的,
yum安装与rpm安装两者的区别就是,yum能自动解决依赖问题,而rpm安装需要我们自己手动解决依赖问题。源码包,顾名思义就是程序的原始代码,下载源码包后,需要你解压,然后./configure --prefix=xxxx 预编译,即检测环境并指定软件安装目录,生成Makefile,再make 编译生成可执行的二进制文件,最后make install 真正安装。
./configure:预编译,它是用来检测你的安装平台的目标特征的,比如它会检测是否有CC或GCC,是否有安装所需要的依赖包,然后生成Makefile文件,你也可以指定很多参数,如–prefix=安装目录等;
make :是用来编译的,它从Makefile中读取指令,然后编译,加 -j 4参数的话表示开启4个内核进行并行编译;
make install:是正真用来安装的,它也从Makefile中读取指令,安装到指定的位置。注意:对于make出错的情况,需要先解决错误,然后最好使用 make clean 命令先清除make失败的内容然后再重新make编译。
源码包安装的软件卸载
进入到之前解压的源码包位置、make uninstall(卸载安装)、make distclean(卸载编译和配置过程) 、删除软件安装目录; 以上是标准的卸载源码编译安装的软件的步骤,如果觉得麻烦,可以直接删除软件的安装目录及相关命令文件都可以。
如果我们需要判断目标可执行二进制文件的安装方式 我们可以通过使用rpm -qf 来判断使用源码还是yum/rpm来安装的。
[root@server1 ~]# rpm -qf /usr/local/nginx/sbin/nginx file /usr/local/nginx/sbin/nginx is not owned by any package #这是通过源码编译的nginx可以发现rpm找不到这个包 [root@server2 ~]$ rpm -qf /usr/sbin/nginx nginx-1.20.1-9.el7.x86_64 #返回了相应的包iptables mark标记
iptable的mark功能可以用于标记网络数据包,用于标记数据包。在一些不同的table或者chain之间需要协同处理某一个数据包时尤其有用。
mark简单的用法iptables -t mangle -A PREROUTING -j MARK --set-mark 33 -j MARK # -j代表动作这里代表要执行mark操作 iptables -t nat -A PREROUTING -m mark --mark 33 -j ACCEPT -m mark # -m代表匹配mark iptables -t nat -A PREROUTING -m mark --mark 0x400/0x400 -j ACCEPT –mark xxx/yyy # xxx代表要匹配的mark的值,yyy代表掩码,如果要完全匹配可以省略掉掩码x86和arm架构 X86架构与ARM架构的区别
(1)本质区别:X86使用CISC(Complex Instruction Set Computer,复杂指令集计算机),ARM使用RISC(Reduced Instruction Set Computer,精简指令集计算机),ARM英文全称Advanced RISC Machine。
(2)各自追求:X86追求性能最优,缺点是功耗大,不节能(和ARM对比);ARM追求低功耗(节能),缺点是采用精简指令集,导致编译器处理复杂,因此性能相对X86差。
(3)应用领域:X86主要是PC机(Intel、AMD),X86服务器;ARM主要是应用于移动设备(手机、平板电脑等嵌入式领域)。
(4)典型代表:X86结构主要是Intel、AMD等PC电脑;ARM主要是移动终端,IBM的Power PC。
2、CISC 和 RISC(1)CISC:复杂指令集CPU,指令众多,通常有300+条的指令。每条指令的操作都有对应的电路设计,因此CPU的电路设计较复杂,功耗较大。但是相对的,对应编译器的设计比较简便,因为各种编程操作都有对应的指令。
(2)RISC:精简指令集CPU,指令相对较少,通常只有几十条指令。CPU设计相对简便,功耗较小。但是,编译器的设计比较复杂,许多编程操作都需要一些指令的灵活组合。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。
(3)两者区别
RISC的设计重点在于降低由硬件执行指令的复杂度,因为软件比硬件容易提供更大的灵活性和更高的智能,因此RISC设计对编译器有更高的要求;CISC的设计则更侧重于硬件执行指令的功能,使CISC的指令变得很复杂。总之RISC对编译器的要求高,CISC强调硬件的复杂性,CPU的实现更复杂。
32位64位32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。
linux中32位和64位区别1、设计初衷不同
64位是为视频、绘画、高性能应用程序所设计开发的,32位是为普通用户开发的。
2、配置要求不同
64位操作系统只能安装在64位电脑上(CPU是64位)。32位操作系统可以安装在64位电脑上,但其硬件性能也会大打折扣。
3、运算速度不同
64位cpu的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据,比32位提高了一倍,理论上性能会相应提升1倍。
4、寻址能力不同
32位系统最大只能支持3.2G左右内存。而64位系统支持高达128G的物理内存和多达16TB的虚拟内存。
5、软件普及不同
64位软件相较32位软件少。
二进制可执行文件分析方法ldd动态链接库信息.so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。
动态链接库,即没有在编译链接的时候直接打入到程序中的,而是运行时候动态加载了,从而节省内存,通过动态链接库,我们可以知道这个可执行文件用了哪些动态库,方法也比较简单。
[root@server1 ~]# ldd /usr/local/nginx/sbin/nginx linux-vdso.so.1 => (0x00007fff543f3000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f3e286c9000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3e284ad000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3e28276000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3e28014000) libssl.so.10 => /lib64/libssl.so.10 (0x00007f3e27da2000) libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f3e27941000) libz.so.1 => /lib64/libz.so.1 (0x00007f3e2772b000) libc.so.6 => /lib64/libc.so.6 (0x00007f3e2735e000) /lib64/ld-linux-x86-64.so.2 (0x00007f3e288cd000) libfreebl3.so => /lib64/libfreebl3.so (0x00007f3e2715b000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f3e26f0e000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f3e26c25000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f3e26a21000) libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f3e26806000) libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f3e265f7000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f3e263f3000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3e261da000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3e25fb3000)objdump 将二进制代码转汇编指令
1、查看依赖库
[root@server1 ~]# objdump -x /usr/local/nginx/sbin/nginx | grep NEEDED NEEDED libdl.so.2 NEEDED libpthread.so.0 NEEDED libcrypt.so.1 NEEDED libpcre.so.1 NEEDED libssl.so.10 NEEDED libcrypto.so.10 NEEDED libz.so.1 NEEDED libc.so.6
1.2、查看动态库,依赖的库有哪些
[root@server1 ~]# objdump -x /usr/lib64/libdl.so.2 | grep NEEDED NEEDED libc.so.6 NEEDED ld-linux-x86-64.so.2
通常可以通过yum provides来查看某些函数库可以通过安装包下载
[root@server1 ~]# yum provides libz.so.1 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. zlib-1.2.7-18.el7.i686 : The compression and decompression library Repo : lcf Matched from: Provides : libz.so.1



