API:Application Programming Interface
POSIX:Portable OS
程序源代码-->预处理--> 编译-->汇编-->链接
静态编译:
共享编译:.so
ABI:Application Binary Interface
Windows与Linux不兼容
库级别的虚拟化:
Linux:WiNE
Windows:Cywin
系统级开发
C++
应用级开发
java
Python
php
二进制应用程序的组成部分:
二进制文件,库文件,配置文件,帮助文件
程序包管理器
debian:deb, dpt
redhat:rpm, rpm
rpm:Redhat Package Manager
RPM is Package Manager
Gentoo
Archlinux
I
源代码:name-VERSION. tar. gz
VERSION:major minor. release
rpm包命名方式:
name -VERSION-ARCH.rpm
VERSION:major,minor.release
ARCH:release.os.arch
testapp:拆包
testapp-VERSION-ARCH.RPM主包
testapp-devel-VERSION-ARCH.RPM支包
testapp-testing-VERSION-ARCH.RPM
包之间存在依赖关系
查看二进制程序所依赖的库文件:
ldd /PATH/T0/BINARY FILE
管理及查看本机装载的库文件:
ldconfig
/sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系:
配置文件为:/etc/1d.so. conf, /etc/ld. so. conf .d/* . conf
缓存文件:/etc/ld. so. cache
程序包管理:
功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作:
1、程序的组成组成清单(每个包独有)
文件清单
安装或卸载时运行的脚本
2、数据库(公共)
程序包名称及版本
依赖关系:
功能说明:
安装生成的各文件的文件路径及校验码信息:
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf
获取程序包的途径:
(1)系统发版的光盘或官方的服务器:
CentOS镜像:
http://mirrors . aliyun. com
http://mirrors . sohu. com
http://mirrors .163. com
(2)项目官方站点
(3)第三方组织:
Fedora-EPEL I
搜素引擎:
http://pkgs .org
http://rpmf ind . net
http://rpm. pbone . net
(4)自己制作
Cent0S系统上rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-1|--instal1} 【install-options】 PACKAGE FILE
-V:verbose
-VV :
-h:以#显示程序包管理执行进度:每个#表示2%的进度
rpm -ivh PACKAGE FILE
【install-opt ions 】
--test:测试安装,但不真正执行安装过程:dry run模式:
--nodeps:忽略依赖关系:
--replacepkgs:重新安装:
--nosignature:不检查来源合法性:
--nodigest:不检查包完整性:
--noscipts:不执行程序包脚本片断:
%pre:安装前脚本:-- nopre
%post:安装后脚本:-- nopost
%preun:卸载前脚本:--nopreun
%postun:卸载后脚本:.--nopostun
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrage:安装有旧版程序包,则“升级”:如果不存在旧版程序包,则“安装”;
freeshen:安装有旧版程序包,则“升级”:如果不存在旧版程序包,则不执行升级操作:
rpm -Uvh PACKAGE FILE
rpm -Fvh PACKAGE FILE ...
--oldpackage:降级;
--force:强行升级;
注意:(1)不要对内核做升级操作:Linux支持多内核版本并存,因此,对直接安装新版本内核:
(2)如果原程序包的配置文件安装后曾被修改,长级时,新版本的提供的同一个配置文件并不会直接厦盖老版本的配置文件,而把新版本的文件重命名(FILENAME . rpmnew)后保留;
查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a所有包
-f:查看指定的文件由哪个程字包安装生成
-p package_filename:针对尚未安装的程序包做查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供:
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖:
[query-options]
--changelog 查询rpm包的changlog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-1:查看指定的程序包安装后生成的所有文件:
--scripts:程序包自带的脚本片断
-R:查询指定的程序包所依赖的CAPABILITM
--provides;列出指定程序包所提供的CAPABILITM
卸载
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
校验
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
导入所需要公钥:
rpm -- import /PATH/FROM/GPG PUBKEY-FILE
CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-Cent0S-7
数据库重建:
rpm {--initdb| -- rebui lddb}
initdb:初始化
如果事先不存在数据库,则新建之:香则,不执行任何操作:
rebuilddb:重建
无论当前存在与否,直接重新创建数据库:
linux 程序包管理(2)
linux 程序包管理(2)
yum repository:yum repo
存储了众多rpm包,以及包的相关元数据文件(放置于特定目录下:repodata);
文件服务器:
ftp://
http://
nfs://
file://
yum客户端:
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置信息
仓库的定义
[repository] OPTIONS
[repositoryid]
name=Some name for this repository
baseurl=url://server1/path/to/repository/
enbled=(1|0):启用或不启用此仓库
gpgcheck:检验包的完整性