第1节. 软件管理基础

img

ABI 应用程序二进制接口,API是开发接口

image-20221227160922300

WINE,让linux上跑windows的软件

Cygwin,windows上跑linux的软件

img

预处理:去掉注释、打上行号、引用的文件(include代码)等放进来,等

编译:语法分析,错误,转成汇编代码

汇编:汇编代码还是文本,汇编之后就是机器码了,还要把库连接起来。这些库有静态和动态之分

静态:把库和二进制结合在一起,合成一个文件;

动态:程序运行的时候再寻找依赖库;不合并。

.so是shareobject

img

共享对象,好多程序会共用这个库

ldd可以看用的哪些库,不仅仅cat依赖这个库,ls也依赖。共同依赖的库

img

img

共用的库

img

.c源代码C语言写的---用gcc预处理成.i后缀---compilation编译成汇编语言assembly----汇编成二进制.o对象文件----link链接.a静态库----生成最终的一个文件。

image-20220211181721592

动静优缺点

img

应用案例:注意通常我们都是动态链接的库,所以把一个二进制程序复制过去别的电脑上需要考虑把依赖的库文件也一并找出来复制过去。

img

img

img

JAVA号称一次编译,到处运行的底层思路:

1、存在本质上的两次编译

2、第1次编译,是编译成标准字节码文件

3、然后再各个系统上面预装了JVM java虚拟机,当字节码在这些JVM上运行的时候 就会再次编译一次。

image-20220211184231669

需求产生了,降低使用开源软件的难度,直接给C,编译困难,就出来了debian版本

三大主流linux分支debian、redhat、slackware。

debian就率先考虑的需求,就帮你编译好,打好包,让你使用的时候自动的解包,dpkg

debian package管理器,Ubuntu就是debian咯。

image-20220211184305130

RPM GNU自己定义自己~八错八错~

linux-5.1.4 5是大版本号,1是次版本号,4是小版本号;大5-就是版本大变动,次1-就是小变化,小4-就是打个补丁。大概这么个意思。

image-20220212131433048

rpm就是什么,就是开源软件,红帽拿过来打包整合的rpm包。所以包名的意思是

bash-4.3.46-19.el7.x86_64.rpm

包名和人家包自己的版本

19是红帽拿过来编译的次数

el7是红帽企业版7

x86_64CPU架构

神奇的文件夹/misc,

明明里面没东西,强行进入/misc/cd下就生成了cd文件夹,并自动挂载了光盘

img

img

后面补一个这个神奇的文件夹是什么来的,6上面可能自带的。7上面要想这么用,就执行systemctl start autofs systemctl enable autofs ;-安装方法要对--应该是server的套餐吧,反正最小化安装是没有这东西的。

在centos6和7上进到这Packages文件夹下,注意5和8都不叫这么名字好像,不管了8也不用了

img

img

img

img

img

img

img

img

用sed来弄

img

img

img

问题来了,什么用-n什么时候用p,怎么这里不用-n 和p呢,结果是对的。它这个上图的命令是已经对print的结果进行编辑过了修改过了,所以无需-n p,当然你加上-n 和p应该也是OK的

image-20220212135451317

1、-n就是不打印了呗,全都不打印

2、xxxp就是你处理后的结果也要打印出来,如果此时前头没有-n就是说默认打印+处理后的打印

3、-n xxxp就是只打印处理后的结果

4、-n和xxxp 两个都不带,就是处理后的全文显示。

5、上图为啥-n xxxp和 都不带 效果一样呢,因为匹配了所有都能匹配到的,所以就一样咯。

image-20220212140026939

image-20220212140224768

================================================================================

rpm包el6\el7\x86_64\noarch\i686

img

img

img

img

img

img

img

大软件 一般会拆包,挑着安装就可以比较方便。

img

img

这就是拆包分类

img

rpm安装的依赖只是直接的依赖包,间接依赖包不会显示,所以一眼看不见

image-20220212154600080

---------------------------

lib64库文件

img

img

思考是不是cat命令就是用的/bin/cat文件,还是后面调用了C语言的库呢?

img

再者so就是share object

img

很多二进制文件都是依赖一些共同的so库

例子-移动一个库及修复

img

可惜mv也是依赖这个库

img

然后图形界面也死掉了

img

修复要么快照,或者借助光盘

img

上面的关闭客户机这些本质上还是调系统的命令,下面的重置才是按电源重启。

重启也起不来了

重试救援光盘来解决

1、插入光盘,连着的

2、进度条出来后果断esc

img

3、选择3 CD-ROM启动

img

4、选择troubleshooting

img

5、救援系统

img

就是类似windows的pe,交换机路由器的RMON,类似这种最小操作系统。

6、进入后界面

img

因为是从光盘启动,所根不再是/了,而是/mnt/sysimage/

img

你的系统被挂载到了/mnt/sysimage。你看到的文件系统是/mnt/sysimage这套

上图system写错了改成sysimage。

img

img

而我们要找的文件就在:

img

思考此时mv能用吗?

img

因为用的是光盘里的mv,不是硬盘里的mv。所以是可以用的。

img

然后exit退出,自动重启就修复好了。

以上就是mv修复,下面是rm修复:

img

应该就在上面救援模式的/lib64下面有的。

img

lib64,库现在都是64位的了

img

学习包管理

img

一个RPM包里可能包含的东西比较多:

img

脚本的意义在于,你安装程序前先给你创建好用户,这样你才有所有者,所有组啊。诸如此类的信息。

前两行都有:

img

第三行的脚本不一定每个RPM包里都有。

img

RPM包不是安装好了就行了,还需要处理文件的属性信息存放便于后续查找。

数据库简单说就是文件夹,里面存放了安装rpm包的很多信息。如果没有/var/lib/rpm,你都不知道你安装了那些程序。也不知道哪些文件来自哪个包。

/var/lib/rpm的意义

img

img

比如安装软件,如果已经安装过了,就不会安装了,这就是到这里查找的。

img

有些官网提供了编译好的,有些就是提供源码给你自己编译。

img

img

img

操作路径

img

img

ppc是powerpc的,不用管

img

EPEL

img

img

Fedora是红帽的上游测试版,dnf在Fedora 18版就有了。

然后现在centos-stream要取代centos8变成rehat的上游了。

img

img

img

img

-------

img

img

配置 > /dev/null就可以实现静默安装。

img

一般warning看下,问题不大,是光盘里的,但是这里的告警是说验证来源是没有验证的。

signature是来源,其实就是公钥的验证。就是windows里的受信任的证书。

img

img

---

img

img

img

img

选项放前面,这里习惯不好。

软件脚本安装的思路

img

img

之前装过了,这里查询的话只要写名称就行了

img

没装是这个样子的

img

img

img

我们-e卸载后再试试

img

======

img

img

或者查询某个包里包含哪些文件

img

img

是不是重新安装一些tree就行了

img

因为那个var/lib/rpm里有安装过的信息了,所以不会给你安装了,你说rpm -e卸载呢,不推荐,因为说不定之前都做过一些配置优化了。

img

办法也许可以,但通常不行img,因为会全部覆盖的。方法还在下面往下看

img

img

replacepkgs和replacesfiles,就是只覆盖有的,没有的就安装。

replacefiles是只覆盖有冲突的文件。一般用在两个包一样但是版本不同,第二个包安装覆盖掉冲突的就是相同的文件就能正常安装第二个包了,同时第一个包的不同版本的软件可以自然可以使用同名的文件。

img

bash这个包基本就是随着操作系统安装而安装的,所以通过rpm -qi bash也能看到何时安装的系统

image-20220212182927941

查看软件包的信息

上图中的官方站点可以去获取最新的版本

img

img

tgz就是tar.gz

img

如何只修复其中一个文件呢

利用cpio来解开rpm

img

img

利用cpio -tv查看文件列表

img

img

不过这样cpio解开的rpm再mv过去,有个问题,文件属性可能还需要注意一下

image-20220212183542180

image-20220212183606893

img

img

据说类似于菜市场猪肉上面的蓝章。不过我想起来好像有红的。

img

默认就不具备完整性校验

img

先看下包里有没有脚本

-q --scripts 查看已安装的包

-qp --scripts 查未安装的包

img

img

img

将来如果是源码安装,就需要参考这些rpm安装的脚本来自己创建这些用户和组。

Copyright 🌹 © oneyearice@126.com 2022 all right reserved,powered by Gitbook文档更新时间: 2024-07-28 14:47:31

results matching ""

    No results matching ""