本文共 6286 字,大约阅读时间需要 20 分钟。
命令:
mount 挂载光盘wget 下载文件du 查看使用空间(文件和目录磁盘使用的空间)-s只显示总和(sum),-h以K,M,作为单位dd if= of= bs= count= 复制文件并对原文件的内容进行转换和格式化处理if代表输入文件(/dev/zore/全零的字符设备)of代表输出文件bs代表字节为单位的块大小count代表被复制的块数附
1、误删处理开机进救援模式:CentOS6:进光盘-->Rescue install systemCentOS7:进光盘-->Troubleshooting-->Rescue a CentOS system寻找删除文件或目录,用相对路径还原2、rpm误卸载:进救援模式,用rmp重装注意:安装路径用特殊命令:--root=/mnt/sysimage软件包管理
软件运行和编译
ABI:Application Binary Interface(应用程序二进制接口)操作系统接口标准API:Application Programming Interface(应用程序设计接口)程序源代码-->预处理-->编译-->汇编-->链接(链接库文件)静态编译:.a(静态库:lib.a)动态编译:.so(动态库:lib.so)链接
链接主要作用是把各个模块之间相互引用的部分处理好,使各个模块间能正确的衔接,分为静态链接和动态链接静态链接把程序对应的依赖库复制一份到包libXXX.a嵌入程序包升级难,需要重新编译占用较多空间,迁移容易动态链接只把依赖加做一个动态链接libXXX.so链接指向占用空间少,升级方便开发语言
系统级开发cc++应用级开发javadelphiPythongophpperlruby包管理器
二进制应用程序的组成部分二进制文件、库文件、配置文件、帮助文件程序包管理器debian:deb文件、dpkg包管理器rehat:rpm文件、rpm包管理器,rpm(RPM Package Manager)包命名
源代码:name-VERSION(版本号).tar.gz|bz2|xzVERSION:major(主版本号).minor(次要版本号).release(发行号)rpm包:name-VERSION-release.arch.rpmrelease:release.OS常见的arch(架构):i686、x86_64、平台无关noarch包安装工具
包之间:可能存在依赖关系,甚至循环依赖解决依赖包管理工具:yum:rpm包管理器前端工具(底层调用rpm,不能完全代替rpm)apt-get:deb包管理器前端工具zypper:suse上的rpm前端管理工具dnf:Fedora 18+ rpm前端管理工具库文件
查看二进制程序所依赖的库文件ldd /PATH/TO/BINARY_FILE管理及查看本机装载的库文件ldconfig:加载库文件/sbin/ldconfig -p/:显示本机已经缓存的所有可用库文件名及文件路径映射关系配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf缓存文件:/etc/ld.so.cache包组成(每个包独有)
RPM包内文件RPM的元数据(名称,版本,依赖性,描述等)安装或卸载时用的脚本(前pre;后post)数据库(公共):/var/lib/rpm程序包名名称及版本依赖关系功能说明包安装后生成的各文件路径及校验码信息程序包的来源
获取程序包的途径:(1)系统发版的光盘或官方的服务器CentOS镜像(版本太老,一般不用)(2)项目官方站点(3)第三方组织Fedora-EPLE:Extra Packages for Enterprise LinuxRpmforge:RHEL推荐,包很全搜索引擎:(4)自己制作注意:第三方包建议要检查其合法性(来源合法性,程序包完整性)rpm包管理
CentOS上使用rpm命令管理程序包:安装、卸载、升级、查询、校验、数据库维护安装:
rpm -i(--install);v(显示安装过程);h(以#显示程序包管理执行进度)--text:测试安装,不是真正执行安装,即dry run模式--nodeps:忽略依赖关系,强制安装--replacepkgs|replacefiles:覆盖安装,强制重装--nosignature:不检查来源合法性(不安全)(附:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-{6,7}:导入钥匙)--nodigest:不检查包完整性(不安全)--noscripts:不执行脚本升级:
-U(--upgrade)有旧版本则升级,没有旧版本则安装-F(--freshen)有旧版本则升级,没有旧版本则不执行升级操作不建议使用升级操作,会覆盖旧版本;内核升级一般直接安装新版本并保留原版本,但一般软件不支持保留两个版本--oldpackage:降级--force:强制安装注意:如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一配置文件不会覆盖被修改过的配置文件,而是把新版本的文件重命名(filename。rpmnwe)后保存查询
rpm -q(--query)查询 [select-options] [query-options] 包名(不需要路径)select-options(选择选项)-a:所有包-f:查看指定文件由哪个程序包安装生成-p:针对尚未安装的程序包文件做查询操作(这对文件名而不是包名)--whatprovides CAPABILITY(能力):查询指定的功能由哪个包所提供--whatrequires CAPABILITY:查询指定的功能被哪个包所依赖rpm2cpio 包文件|cpio -itv:预览包内文件rpm2cpio 包文件|cpio -id:“*.conf” 释放包内文件query-options(问题选项)--changelog:查询rpm包的changelog-c:查询程序的配置文件-d:查询程序的文档-i:informatio描述信息-l:查看指定的程序包安装后生成的所有文件--scripts:程序包自带脚本--provides:列出指定程序包所提供的能力-R:查询指定的程序包所依赖的能力常用:-qi、-qf、-qp后跟rpm文件、-ql卸载
-e(--erase)卸载--allmatches:删除所有匹配到的--nodeps--noscript--notriggers:忽略触发器--test:测试卸载校验
-V(--verify)校验结果:S:file size differsM:mode differs(include permissions(许可) and file type)5(代表哈希值):digest(formerly(原来) MD5 sum)differsD:Device major/minor number mismatchL:readLink(2) path mismatch(匹配错误)U:User ownership differsG:Group ownership differsT:mTime differsP:capabilities differ包来源合法性及包完整性校验
公钥加密对称:加密、解密使用同一密钥非对称:密钥是成对的public key:公钥,公开所有人secret key:私钥,不能公开先导入密钥才能进行校验导入:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-{6,7}:导入密钥(光盘中路径:6:/media/CentOS_6.9_Final/RPM-GPG-KEY-CentOS-67:/run/media/root/CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7)校验:rpm -K|checksig:检查包的完整性和签名查看密钥:rpm -qa “gpg-pubkey*”:查看导入的密钥内容rpm数据库
数据库重建:/var/lib/rpmrpm --initdb|--rebuilddbinitdb:初始化,不存在则新建,存在则不执行任何操作rebuilddb:重建已安装的包头的数据库索引目录建议不重建数据库YUM
CentOS:yum、dnfYUM:Yellowdog Updata Modfiler,rpm的前端程序,可解决软件包相互依赖性,可在多个库之间定位软件包,up2data的替代工具基于c/s结构(client/server)yum repository:yum repo(yum软件仓库的配置文件)存储了众多rpm包以及包的相关的元数据文件,放置于特定目录repodata下文件服务器:http://、https://、ftp://、file://yum配置文件
/etc/yum.conf:为所有仓库提供公共配置(很少改动)cachedir(缓存目录)=/var/cache/yum/$basearch(CPU架构)/$releasever(版本号)keepcache(保留安装包缓存)=0(默认)debuglevel(调试)logfile(yum日志路径)=/var/log/yum.logexactarch(架构)obsoletes(淘汰)gpgcheck(检查包签名和完整性)=1(默认)plugins(插件启用)installonly_limit(并行安装)=5(同时安装5个包)bugtracker_url(bug提示)distroverpkg(系统发行版本)/etc/yum.repos.d/*.repo:为仓库的指向提供配置
[repositoryID](不能有空格)name=repository名或描述信息baseurl=//路径(可以是本地光盘,也可以是网络)gpgcheck=0不检查|1检查gpgkey=导入密钥路径enabled=0禁用|1不禁用(默认)enablegroups(禁用组)failovermethod(挑选路径)=roundrobin(随机挑选,默认)|priority(按顺序)cost(优先级)=默认为1000(越小越高)mirrorlist=存放路径的文件利用网上现成的yum源配置:
(1)用wget命令下载到/etc/yum.repos.d/下(2)yum-config-manager --add-repo=网址:直接生成yum源--disable|--enable 仓库名:禁用|启用仓库yum命令
用法:显示仓库列表:yum repolist[all|enabled|disabled](可用|禁用)显示程序包:yum list[all|glob(通配符)](可跟多个包)yum list[available(可获得的)|install(已安装的)|updates(更新的)][glod]安装程序包:yum install package1 [package2] [...](可安装多个)yum reinstall package1 [package2] [...](重新安装)升级程序包(不建议使用)yum update package1 [package2] [...]yum downgarde package1 [package2] [...]检查可用升级:yum check-update卸载程序包:yum remove|erase package1 [package2] [...]查看程序包:(类似rpm -qi)yum info查看指定的特性(可以是文件)是由哪个程序包所提供:(查询文件的话,类似rpm -qf)yum provides|whatprovides feature(特性)/file清理本地缓存:(/var/cache/yum/$basearch/$releasever缓存)yum clean [package|metadata元数据|expire-cache失效缓存|rpmdb|plugins插件|all]构建缓存:(一般不需要手工构建,默认存在)yum makecache搜索:yum search string(字符串),1以制定关键字搜索程序包名及summary(摘要)信息查看指定包所依赖的capabilties(能力):yum deplist package查看yum历史:yum history配合undo使用可撤销历史操作:yum history undo #(历史条目),redo重做该条历史yum日志:/var/log/yum.log用yum安装和升级本地程序包:yum localinstall(用install替代) rpmfile/rpmpackage较rpm安装的优势在于可自动安装依赖的包yum localupdate(用update代替) rpmfile/rpmpackage包组管理:查看包组名称:yum grouplist安装包组:yum groupinstall(yum安装包组大小写不敏感,安装包大小写敏感)查看包组信息:yum groupinfo升级包组:yum groupupdate卸载包组:yum groupremove选项:
--nogpgcheck:禁止进行gpgcheck-y:自动回答“yes”-q:静默模式--disablerepo=repoidglob:临时禁用此处指定的repo--enablerepo=repoidglob:临时启用此处指定的repo--noplugins:禁用所有插件yum仓库
自定义创建仓库:createrepo 目录(存放rpm包)程序包编译
程序包编译安装:源代码-->预处理-->编译-->汇编-->链接-->执行make项目管理器,用来实现上面的复杂流程make:(针对C、C++,java用maven)configure脚本(定制安装,如路径)-->Makefile.in(模板文件)-->Makefile(记录定制内容,如安装路径)编译安装三步骤
1、./configure(1)通过选项传递参数,指定启用特性(功能)、安装路径等,根据选择及Makefile.in,生成Makefile(2)运行时,检查依赖的外部环境(软件依赖性)2、运行make,根据Makefile文件,构建应用程序3、make install 复制文件到相应的路径注意:安装前查看INSTALL,README转载于:https://blog.51cto.com/13672914/2106656