Linux之程序包管理基础知识

简介:

内核不提供特定的功能:功能由程序提供

1、查看程序所依赖的库文件

2、显示或配置系统内存中装载的库,库映射关系路径

3、光盘的挂载及使用

4、dd命令

5、特殊设备


6、程序跨平台运行

7、写程序面向的对象

8、写程序面向的对象


9、程序包管理器的分类

10、源代码名、rpm包源码格式名、二进制格式名

11、主、支包的关系

12、包间依赖性

13、包管理器的前端工具

14、获取rpm包的途径

15、来源合法性、完整性定义



程序的格式,ABI

  Windows:EXE

  Linux:ELF


程序编译的过程:

  源程序 --> 编译 --> 汇编代码 --> 汇编 --> 二进制程序 --> 链接

  

编译的分类:

  静态编译: 将程序运行时依赖的库编译进程序

  动态编译:编译后需要链接库,在程序运行时,依据链接找到共享的库


程序跨平台运行

1、库虚拟化,虚拟出对应平台的库和ABI;程序运行在库之上

   1)、Linux上运行WINE程序,即可虚拟出Linux程序运行所依赖的库和ABI。Windows程序即可跨平台运行。

   2)、Windows上运行Cywins程序,即可虚拟出Windows程序运行所依赖的库和ABI。Linux程序即可跨平台运行。

   3)、不稳定


2、java虚拟机:不用考虑依赖的库和ABI(Sun,C语言研发,开发环境JDK,运行环境JVM,javac编译器,java环境内存监视器);程序运行在JVM之上

  用C写的程序,调用C库,源代码级别兼容,可在任意平台编译出对应平台的JAVA,JDK,JVM

  1)、在JKD中开发的java程序,无论在什么平台,不再考虑系统级别的库,只需要JVM即可运行。

  2)、稳定    


  Andoriod = Linux + busybox + JVM


写程序面向的对象

  1)应用级: JAVA语言(JDK),go,python(统一的接口,稳定,简洁),php,perl(灵活)

  2)系统级: Syscall,Libcall

  3) 硬件规格: 二进制、微码编程、高级语言


程序的组成及功用

   二进制格式程序、库、配置文件、帮助手册

     配置文件:启用或关闭某些功能特性

     库:提供二次开发接口

     帮助手册:命令的使用手册

     

     程序: /bin,/sbin,/usr/sbin,/usr/bin

    库:/lib,/lib64,/usr/lib,/usr/lib64

     配置文件:/etc

     帮助手册: /usr/share/man


程序包管理器

功能:将程序各组成部分打包成一个整体,从而方便:安装、查询、卸载、校验、升级。


程序包管理器的分类

wKioL1mRc2rzpwBOAAAls33JMfw509.png

红帽

1)源代码包的命令:name-version.tar.gz

    version:major.minor.release

        major:  主干分支:功能特大变化

        minor:  添加分支,修改功能

        release: 修复一个BUG

1
mariadb-10.3.0. tar .gz


2)rpm包命名

    源代码: name-version-release(rpm包).操作系统平台.src.rpm

            jackson-parent-2.6.2-1.el7.src.rpm 

    二进制: name-version-release.操作系统平台.CPU平台.rpm

      

    操作系统平台: el5,el6,el7,...

    CPU平台:

        x86:i386,i486 ,i586 ,i686适用更新的平台,向下兼容

        x86_64/x64/amd64:第一颗32bit平台或x86平台的64bitCPU是AMD研发的。注重技术的平台叫amd64

        noarch: 含有python,c,java代码所写的兼容ELF格式的rpm包

testapp-1.2.3-1.操作系统平台.CPU平台.rpm
fann-2.2.0-6.el7.x86_64.rpm


3)包的拆分: 不同的用户用到rpm包的功能范围都不相同,对于只用少部分功能的用户,安装整个rpm包,浪费空间,又没有什么用处。就有需求将功能拆分:主干包和支包

    主干包: 包的主要功能: name-version-release.操作系统平台.CPU平台.rpm

    支包/支包/分包: 包的附加功能: name-devel-version-release.操作系统平台.CPU平台.rpm

      

f22-backgrounds-21.91.0-1.el7.noarch.rpm 
f22-backgrounds-base-21.91.0-1.el7.noarch.rpm  
f22-backgrounds-gnome-21.91.0-1.el7.noarch.rpm 
f22-backgrounds-kde-21.91.0-1.el7.noarch.rpm
f22-backgrounds-mate-21.91.0-1.el7.noarch.rpm
f22-backgrounds-xfce-21.91.0-1.el7.noarch.rpm

      

4) 包间的依赖关系:安装程序包时,必须先安装主干包,而后才能安装支包。

            

前端管理工具

   将远端或本地的某个仓库中的程序包的依赖关系抽取出来,放到本地的元数据目录路径中,每次安装时,通过校验码与,仓库中的程序包的校验码比对,如果没有变化,分析本地程序包的依赖关系。如果变化了,重新获取对应仓库中的程序包的依赖关系。

        

1、获取rpm包的途径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1、系统发行光盘
清华大学: mirror.tuna.tsinghua.edu.cn
华中科技大学: mirrors.hust.edu.cn
mirrors.aliyun.com
mirrors.sohu.com
mirrors.163.com
2、项目官方站点
3、第三方组织
优先:Fedora-EPEL http: //download .fedoraproject.org /pub/epel/
搜索引擎:
http: //pkgs .org
http: //rpmfind .org
 
4、自己制作
1)获取官方源码
2)编写sparc文件

2、rpm命令的使用

   1)安装

   2)查询

   3)卸载

   4)校验:来源合法性,完整性

   5)升级

   6)数据库


来源合法性:程序包制作者是我们认可的第三方组织(由对方的公钥验证)

完整性:未经制作者,向程序包中额外添加的其他内容


补充:

  1、查看程序所依赖的库文件

  2、显示或配置系统内存中装载的库,库映射关系路径

  3、光盘的挂载及使用

  4、dd命令

  5、特殊设备


  1、查看程序所依赖的库文件

1
# ldd  FILE...
1
2
3
4
5
6
7
8
9
1、获取命令的路径
[root@izpo45bh60h6bsz ~] # which --skip-alias ls
/usr/sbin/ls
 
2、获取命令依赖的共享库文件
[root@izpo45bh60h6bsz ~] # ldd   /bin/ls
     linux-vdso.so.1 =>  (0x00007ffd021f3000)   ## 库的入口
     libselinux.so.1 =>  /lib64/libselinux .so.1 (0x00007f614409b000)
         依赖的共享库       库名    (16进制表示库装载在当前内存的哪个地址空间中    )


  2、显示或配置系统内存中装载的库,库映射关系路径

1
2
3
4
5
6
7
8
9
10
# ldconfig [选项...]
  -p, --print-cache          打印缓冲区
  
  1、设定库的映射
  ldconfig FILE
  2、配置文件
  /etc/ld .so.conf.d/*.conf
  /etc/ld .so.conf
  3、生成缓存的文件路径
  /etc/ld .so.cache


  3、光盘使用

   光盘名:/dev/sr0 CentOS 5 /dev/hdc

   链接文件: /dev/cdrom,/dev/cdrw,/dev/dvd,/dev/dvdrw

   只读光盘的挂载:

1
2
3
4
5
# [ -d /media/cdrom ] || mkdir /media/cdrom
# mount -r /dev/cdrom /media/cdrom
# mount -o ro /dev/cdrom /media/cdrom
 
**不加-r或-o ro 时,会有报错信息


   对光盘的卸载:

    1、对设备文件  

1
# umount /dev/cdrom

    2、对挂载点

1
# umount /media/cdrom

   

   4、dd命令

1
2
3
dd  if =/PATH/TO/FROM/SRC of=/PATH/TO/DEST count=  bs=#
     bs=  复制单元大小,block size (M,G,T,E。默认单位为字节)
     count= 复制多少个bs,单位为byte

1、文件底层复制,比copy效率高

2、磁盘复制

dd if=/dev/sda of=/dev/sdb

3、备份mbr

dd if=/dev/sda of=/tmp/mbr.bak count=1 bs=512

4、破坏mbr

dd if=/dev/zero of=/dev/sda count=1 bs=512

5、破坏bootloader

dd if=/dev/zero of=/dev/sda count=1 bs=256

分区表存在,bootloader消失

两个特殊设备:

  数据黑洞: /dev/null

  吐零机;  /dev/zero


查看效果: dd if=/dev/zero of=/dev/null 










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1956235,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
189 6
|
4月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
677 2
|
4月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
70 2
|
5月前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
42 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
45 5
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
104 3
|
5月前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
4月前
|
算法 Ubuntu Linux
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
|
4月前
|
Linux API
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
下一篇
无影云桌面