码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-10-25 22:49:38      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:linux

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の 程序包管理综述

标签:linux

原文地址:http://wukong0716.blog.51cto.com/10442773/1706024

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!