Linux学习日志(八)

本文发布时间: 2019-Mar-22
Linux的程序包管理专业概念POSIX:Portable Openratin System 跨平台调用API:兼容,意味开发库兼容,因此,源代码可跨平台ABI:兼容,编译后的程序可以跨平台库为函数,function 库:可执行程序,本身不能作为程序执行入口,但可以被调用,是编译好的二进制格式程序的过程: 预编译、编译、汇编、链接 #静态链接:将库包含在程序中 #动态链接:dll,so(shared object) #编译:源代码翻译成cpu指令集的过程*注意:1.os平台:编译好的应用程序必须为特定平台所支持的版本2.硬件平台:应用程序为特定的cpu所支持*软件包的组成部分 二进制程序:/bin,/sbin /usr/sbin,/usr/local.bin,/usr/local/sbin 自身库文件:/lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 开发时调用API,运行时调用ABI 通过调整/etc/ld.so.conf /etc/ld.so.conf.d/*.conf 配置文件:/etc,无须额外配置 帮助文件: man文件,info文件,README,INSTALL,ChangeLog man COMMAND 到某路径下查找与命令名同名的通常以。gz结尾的压缩文件的名字 /usr/share/manldd命令:查看应用所依赖的共享库ldd [options] 二进制文件 root@localhost Desktop]# ldd /bin/cat linux-vdso.so.1 => (0x00007ffff63ea000) libc.so.6 => /lib64/libc.so.6 (0x0000003cc4400000) /lib64/ld-linux-x86-64.so.2 (0x0000003cc3c00000)应用程序管理器1、数据库: 名称和版本, 安装生成的各文件路径,校验码, 依赖关系 提供功能性的说明2、提供程序组成格式: 文件清单 安装卸载时运行的脚本 应用程序格式:源代码 name(名称)-major(主版本).minor(次版本).release(修正号).tar.gz依赖关系 循环依赖: x-->Y 版本依赖: x-->y-->x Debian:.deb dpkg RadHat: .rpm(perl编写),rpm(RadHat Package Manager) rpm:RPM is Package Manager SUSE: rpm包管理器的基本功能 打包 安装 查询 升级 卸载 校验 数据库管理前段管理器:出现原因:因为依赖关系太麻烦 apt-get yumrpm包的使用:rpm包命名格式: 源程序:name-version.tar.{gz|bz2|xz} 命名格式: version:major.minor.release rpm包:name-version-release.arch.rpm release:通常包含rpm的只做发行号,还包含使用的OS(平台)OS平台 el6:redhat enterprise linux6 el5:redhat enterprise linux5 CentOS5: suse11 arch: X86_64 i386,i586,i686 ppc noarch 来源合法性验证: 源程序:通过md5或sha1校验码验证; rpm包:发行商提供的是合法性是可信的 验证包完整性:校验码 验证来源合法:公钥加密算法获取rpm的途径: 1、发行商的光盘或站点服务器 CentOS: http://mirrors.163.com http://mirrors.sohu.com 2、rpmfind http://rpmfind.net 3、rpmpbone http://rpm.pbone.net**注意:1、发行商。发行光盘中的包,需要升级时,官方释放出升级包2、Fedora EPEL**安装程序包 rpm -i --install 安装 rpm -i /path/to/rpm_package ... -v:显示安装信息 -vv:二级详细 -vvv:三级详细 -h:hash 以#的个数显示安装进度,一个#表示2%的进度 --test:仅测试,不真正执行安装过程如果存在依赖 解决依赖关系: 忽略依赖关系:--nodeps重新安装: -ivh --replacepkgs 原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件卸载: rpm -e --erase rpm -e package_name 如果卸载被其他程序所依赖的包 1、把依赖者一同卸载 2、忽略依赖关系:--nodeps 3、不在卸载rpm管理:查询 查询 rpm -q 查询所有已安装的包: rpm -qa 查询包的描述信息: rpm -qi package_name 查询某单个包是否安装: rpm -q 包名 查询安装包生曾的列表的位置 rpm -ql package 查询某文件是那个包安装生成的: rpm -qf 文件 查询包安装后生成的帮助文档: rpm -qd 包名 查询安装后生成的配置文件: rpm -qc 包名 查询包相关的脚本: rpm -q --scripts 包名 脚本分四类 preinstall 安装前脚本 postinstall 安装后脚本 preuninstall 卸载前脚本 postuninstall 卸载后脚本 查询尚未安装的rpm包文件的相关信息: 查询安装后会生成的文件列表: rpm -qpl 包名 查询其简单描述信息: rpm -qpi 包名rpm管理:升级rpm -U:升级或安装rpm -F:只升级rpm {-Uvh|-Fvh}/path/to/package_file --nodeps: 忽略依赖关系 --force:强行安装**注意:不要对内核执行升级操作;多版本内核可以并存,因此,建议执行安装操作**rpm管理:校验:检查包安装后生成的文件是否被修改过 rpm -V package_Name S file Size differs 大小 M Mode differs (includes permissions and file type) 头文件 5 digest (formerly MD5 sum) differs MD5 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管理:校验来源合法性和软件完整性 包完整行:通过单向加密机制(MD5|sha1) 来源合法性:通过公钥加密机制(RSA)命令:gpg rpm -K /path/to/somefile rpm --checksig /path/to/package_file --nosigeature:不检查来源合法性 --nodigest:不检查包完整性rpm管理:导入密钥rpm --import /path/to/gpg-key-file 导入以后再做验证rpm包管理:数据库 位置:/var/lib/rpm 重建:rpm --initdb:初始化 如果事先不存在一个数据库,则新建之 rpm --rebuilddb 重建 直接新建数据库,会覆盖原有库依赖关系:解决依赖关系:程序包管理器的前段工具 yum(Yellowdog Update Modifier)依赖于rpm 文件服务器(共享rpm包): 通过yum所支持的文件共享机制将各rpm包通过文件服务共享 repository:仓库 1.需要的各rpm包 2.依赖关系、程序包安装后所能够生成的列表等元数据文件yum客户端 1.配置文件:指定各可用的yum仓库; 2.缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地 3、分析元数据:根据具体的操作请求完成元数据分析,可能包括依赖关系、文件列表等信息 4.执行具体操作客户端配置文件指定对服务器配置文件: ftp ftp://server/path/to/repo http http://server/path/to/repo nfs nfs://servr/nfs_path file file:///path/to/pathyum操作格式:yum [install] command check 检查在rpmdb中的问题 check-update 检查可升级的软件包 clean [all|package|metadata|expire-cache|rpmdb|plugins] 清除缓存 deplist 列出软件包的依赖 downgrade 降级包 groupinfo “package_group_name” 显示包组信息 groupinstall 'group_name' 安装包组 grouplist 列出所有包组 groupremove ”group_name“: 卸载组 help 显示有帮助的用法信息 history 查看yum的命令历史 info 列出包的描述信息 install 安装 list [all|installed|available] 把所有可以使用的 provides 查询某文件是由那个包安装的 reinstall 重新安装指定的程序包 repolist[all|enabled|disabled] 显示各可用的仓库列表 search 对于给定的字符串搜索包详细信息 update package_name 升级指定的程序包 updateinfo 在资料库更新信息的行为 upgrade 更新程序包回吐废弃考虑 version 显示机器和/或可用回购一个版本。要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中 /etc/yum.conf /etc/yum.repo.d/*.repo配置文件格式:由两段组成。类似window的ini配置文件[main]:主配置段[repo]:仓库配置段 配置repo [repo_ID] name=String baseurl=仓库的访问路径 enabled={1|0}1,表示启用。0表示不启用 gpgcheck={1|0}1,验证gpg。0表示不验证 gpgkey=公钥地址(可以是本地,也可以是服务器端路径) cost=定义此仓库开销,默认为1000安装本地包 install /path/to/package_file 手动禁止检查来源及完整性:--nogpgcheck*如果系统为Centos 5,开发包组为”Development Tools“和”DeveLopment Libraries“如何系统为centos 6,常用的开发包为”Development tools“和”Server Platform Development”yum配置文件中可用的宏*yum配置文件中可用的宏 $releasever:程序的版本,对Yum而言指的是redhat-relrase版本。只替换为主版本号,如Redhat6.5 则替换为6 $arch:系统架构 $basharch:系统基本架构,如i686,i586等的基本架构为i386 $YUM0-9:在系统定义的环境变量,可以在yum中使用获取当前系统相应宏替换的办法 python import yum,pprint yb=yum.YumBase() pprint.pprint(yb.conf.yumvar,width=1) Loaded plugins: product-id, refresh-packagekit {'arch': 'ia32e', 'basearch': 'x86_64', 'releasever': '6Server', 'uuid': '238c299d-9681-4725-ad7a-c2ae6302e693'} quit()测试实现yum repository的配置yum repository:制作yum仓库文件 1.yum install createrepo -y 制 作creatrepo 2.createrepo 路径 3.配置yum源 制作一个远程的yum仓库 1.准备文件服务器;使用httpd为例,请事先确保以安装httpd程序包 2.在/var/www/html目录。使用一个目录来保存准备制作称为yum仓库的所有rpm包 cd /var/www/html lftp 172.16.0.1/pub/Sources/6.x86_64 lftp : >mirror openstack bye 3.创建yum仓库 rm -rf /var/www/html/openstack/repodata createrepo /var/www/html/openstack 4.启动http服务 service httpd start 5.配置实用自建的yum仓库 [openstack] name=Openstack Repository baseurl=http://172.16.100.7/openstack enabled=1 gpgcheck=0 6.配置好epel的yum源 7.测试使用 yum install openstack-keystone程序包管理之编译安装源码程序包:c,c++ perl源码 python源码应用程序:项目组 软件基金会:FSF,ASF 项目组:主导者,contributor 小项目:一个人维护 商业公司支持:开源版/企业版开源网站 github.com code.google.com源程序:项目工程:把代码分散于多个源代码文件GNU/make(项目编译工具)autoconf:configre脚本, 用来检查编译环境是否满足编译需求,并定义当前程序编译时启用那个特性或功能,已经安装路径的定义等等 结果:会根据makefile.in文件生成makefile文件 automake:生成Makefile.in文件 用于结合configure脚本生成makefile文件 makefile文件是make命令的配置文件编译安装的步骤: 1.拿到源代码,并解压 tar -xf package-version.tar.{gz|bz2|xz} 注意:展开后的目录通常为package-version 2.切换至源码目录中 cd package-version 3.执行configure脚本 ./configure 4.编译 make 5.安装 make installconfigure脚本的通用功能: 1.指定安装路径 --prefix=前缀,用于指定安装路径 --prefix=/usr/local/package_name --sysconfdir=/etc/package_name 2.指定启动/禁用的特性 --enable-feature:例如--enable-fpm --disable-fecture;例如 --disable-socket 3.指定所依赖功能、程序或文件 --with-function: 启用某功能 --without-function: 禁用某功能 不同的程序,其configure不尽相同,应获取帮助信息 ./configure --help二进制程序的访问方法1.vim /etc/profile.d/apache.sh PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH expore PATH2.source /etc/profile.d/apache.sh头文件输出给系统ln -sv /usr/local/apache/include /usr/include/httpd 库文件输出vim /etc/ld.so.conf.d/httpd.conf/usr/local/apache/lib让系统重新生成库文件路径缓存 ldconfig 输出man文件 1. vim /etc/man.conf 2. 添加 MANPATH /usr/local/apache/man


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表