命令: mount 挂载光盘 wget 下载文件 du 查看使用空间(文件和目录磁盘使用的空间) -s只显示总和(sum),-h以K,M,作为单位 dd if= of= bs= count= 复制文件并对原文件的内容进行转换和格式化处理 if代表输入文件(/dev/zore/全零的字符设备) of代表输出文件 bs代表字节为单位的块大小 count代表被复制的块数

附 1、误删处理 开机进救援模式: CentOS6:进光盘-->Rescue install system CentOS7:进光盘-->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 链接指向 占用空间少,升级方便

开发语言 系统级开发 c c++ 应用级开发 java delphi Python go php perl ruby

包管理器 二进制应用程序的组成部分 二进制文件、库文件、配置文件、帮助文件 程序包管理器 debian:deb文件、dpkg包管理器 rehat:rpm文件、rpm包管理器,rpm(RPM Package Manager)

包命名 源代码:name-VERSION(版本号).tar.gz|bz2|xz VERSION:major(主版本号).minor(次要版本号).release(发行号) rpm包:name-VERSION-release.arch.rpm release: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镜像(版本太老,一般不用) https://www.centos.org/download/ http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com (2)项目官方站点 (3)第三方组织 Fedora-EPLE:Extra Packages for Enterprise Linux Rpmforge:RHEL推荐,包很全 搜索引擎: http://pkgs.org http://rpmfind.net http://rpm.pbone.net https://sourceforge.net/ (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 differs M:mode differs(include 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

包来源合法性及包完整性校验 公钥加密 对称:加密、解密使用同一密钥 非对称:密钥是成对的 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-6 7:/run/media/root/CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7) 校验: rpm -K|checksig:检查包的完整性和签名 查看密钥: rpm -qa “gpg-pubkey*”:查看导入的密钥内容

rpm数据库 数据库重建:/var/lib/rpm rpm --initdb|--rebuilddb initdb:初始化,不存在则新建,存在则不执行任何操作 rebuilddb:重建已安装的包头的数据库索引目录 建议不重建数据库

YUM CentOS:yum、dnf YUM: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.log exactarch(架构) 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