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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
39 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
36 1
|
28天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
60 5
|
1月前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
53 1
|
1月前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
33 0
|
1月前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
37 2
|
15天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
Linux 开发工具 C语言
Linux 安装 gcc 编译运行 C程序
Linux 安装 gcc 编译运行 C程序
10 0
|
9天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
101 2
|
15天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0