您的位置:首页 > 运维架构 > Linux

学习日志---linuxの 程序包管理综述

2015-10-25 14:39 429 查看
Linux的程序包管理:

应用程序:

GPL:源码,

POSIX: Portable Operatin System

API: 兼容,意味开发库兼容,因此,源代码可跨平台
ABI:兼容,编译后的程序可以跨平台;
不同的平台可执行的二进制程序格式不同,因此编译后的相同程序在不同平台不一定都能运行

库:可执行程序,本身不能作为程序执行入口,但可以被调用
编译好的二进制格式

程序:预编译、编译、汇编、链接
静态:
动态链接:dll(windows),
在linux下,so(shared object),在lib和usr目录下

编译:源代码-->cpu指令集
操作系统的版本,例如操作系统支持x86的cpu,则操作系统只能安装在该cpu的机器上,需要符合硬件平台的要求;
例子:
有A和B两台机器,都是centos6,并且glibc都相同,在A机器上编译的程序,在B上也不一定跑的起来,因为如果A和B的cpu不同,则两者的cpu指令集也不会相同,编译后的程序也不同,即二进制执行程序的格式不同。编译就是把源程序翻译为cpu指令集,因此cpu的硬件平台不同,则编译后的程序无法跨平台!!

OS, CPU

注意:1、OS平台:应用程序必须为特定平台所支持的版本,调用的库相同才可跨。
2、硬件平台:应用程序必须为特定的CPU所支持,cpu架构相同才可跨。
例子:
CentOS 6.5 (amd 64bits) 64bits, 二进制程序
CentOS 6.5 (intel 64bits) 64bits,
以上两个都是X86架构的cpu,因此指令集相同,编译后的程序可以跨平台
因此在安装应用程序时,需要考虑os是否兼容,底层架构是否兼容

软件包的组成部分:
二进制程序一般位置:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
假如:安装nginx, /usr/local/nginx/
库:/lib, /usr/lib, /lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64
假如:安装nginx, /usr/local/nginx/
ldd指令只会找前四个库
/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
配置文件:/etc
帮助文件:
man文件, info文件, README, INSTALL, ChangeLog

man COMMAND
到某路径下查找与命令名同名的通常以.gz结尾的压缩文件的名字
/usr/share/man/
man指令只会找上面这个路径下的文件
例如如果man一个/usr/local/nginx/下的指令,不能直接man到,可以修改man的manpath或者指定man访问的路径

总结:安装nginx程序在该路径下:
/usr/local/nginx/,那么下面的这些都在该路径下,内核是无法自动识别的
二进制程序:bin、sbin
库:lib
头文件:include
帮助文件:man
配置文件:etc/conf

函数名(参数), 头文件

ldd命令:
查看应用所依赖的共享库
ldd [options] FILE...
[root@xuanxuan ~]# ldd /bin/vi
linux-gate.so.1 => (0x00a03000)
libm.so.6 => /lib/libm.so.6 (0x00f6c000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00a96000)

#include stdio.h 头文件,里面存放了函数的名字,参数等,一般在include目录下有该类文件

应用程序管理器:
1、数据库:
软件名和版本
安装生成的各文件路径及校验码
依赖关系
提供功能性说明
2、提供程序组成格式:
文件清单
安装卸载时运行的脚本

应用程序:源代码 name-major.minor.release.tar.gz

依赖关系:X --> Y
循环依赖:
版本依赖:

程序管理工具:
Debian: .deb, dpkg
RedHat: .rpm, rpm (RedHat Package Manager)
rpm: RPM is Package Manager

包管理器的基本功能:
打包
安装
查询
升级
卸载
校验
数据库管理

依赖关系:X, Y, M,N, l,i,k

前端管理器:解决了依赖关系
apt-get
yum

总结:应用的安装方式
使用包管理器:便捷、易用
包管理器的前端工具:yum
源代码编译:源代码使用gcc编译后使用
简单打包的二进制格式:这种方式tar打包的,用tar解压后就可以使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux