1. Linux程序包管理:
  2.  
  3. APIApplication Programming Interface源码包
  4. POSIXPortable OS
  5.  
  6. 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
  7. 静态编译:
  8. 共享编译:.so
  9.  
  10. ABIApplication Binary Interface二进制包
  11. WindowsLinux不兼容
  12. 库级别的虚拟化:
  13. Linux: WINE
  14. ELF
  15. Windows: Cywin
  16. exe,msl
  17.  
  18. 系统级开发 : 性能要求高
  19. C/C++/go : httpd,vsftpd,nginx
  20. 应用级开发 :
  21. java/Python/php/perl/ruby : hadoop,hbase(JVM),openstack(PVM)
  22.  
  23. 二进制应用程序的组成部分:
  24. 二进制文件、库文件、配置文件、帮助文件
  25.  
  26. 程序包管理器:
  27. debiandeb, dpt
  28. redhat: rpm, rpm
  29. rpm: Redhat Package Manager
  30. RPM is Package Manager
  31.  
  32. Gentoo: ports
  33. Archlinux:
  34.  
  35. 源代码:name-VERSION.tar.gz
  36. VERSION: major.minor.release
  37. rpm包命名方式:
  38. name-VERSION-release.arch.rpm
  39. VERSION: major.minor.release
  40. release.archrpm的发行号
  41. releaserelease.OS
  42.  
  43. 如: zlib-1.2.7-13.el7.i686.rpm
  44. redis-3.0.2-1.centos7.x64.rmp
  45.  
  46. 常见的arch
  47. x86: i386, i486, i586, i686
  48. x86_64: x64, x86_64, amd64
  49. powerpc: ppc
  50. 跟平台无关:noarch
  51.  
  52. testapp: 拆包
  53. testapp-VERSION-ARCH.rpm: 主包
  54. testapp-devel-VERSION-ARCH.rpm:支包
  55. testapp-testing-VERSION-ARHC.rpm:
  56.  
  57. 包之间:存在依赖关系
  58. X, Y, Z
  59. x-->a,b,c
  60. a-->y
  61.  
  62. 前段工具:自动决绝依赖关系
  63. yumrhel系列系统上rpm包管理器的前端工具;
  64. apt-getdeb包管理器前端工具;
  65. zypper: suse上的rpm前端管理工具;
  66. dnf: Fedora 22+系统上的 rpm包管理器前端管理工具;
  67.  
  68. 查看二进制程序所依赖的库文件:
  69. ldd /PATH/TO/BINARY_FILE
  70.  
  71. 管理及查看本机装载的库文件:
  72. ldconfig
  73. /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系;
  74.  
  75. 配置文件为:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
  76. 缓存文件:/etc/ld.so.cache
  77.  
  78. 程序包管理:
  79. 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作;
  80.  
  81. 1、程序的组成组成清单 (每个包独有)
  82. 文件清单
  83. 安装或卸载时运行的脚本
  84. 2、数据库(公共)
  85. 程序包名称及版本
  86. 依赖关系;
  87. 功能说明;
  88. 安装生成的各文件的文件路径及校验码信息;
  89. 等等等
  90.  
  91. /var/lib/rpm
  92.  
  93. 管理程序包的方式:
  94. 使用包管理器:rpm
  95. 使用前端工具:yum, dnf
  96.  
  97. 获取程序包的途径:
  98. (1) 系统发版的光盘或官方的服务器;
  99. CentOS镜像:
  100. http://mirrors.aliyun.com
  101. http://mirrors.sohu.com
  102. http://mirrors.163.com
  103. http://mirror.hust.edu.cn
  104. (2) 项目官方站点
  105. http://zabbix.com
  106. (3) 第三方组织:
  107. Fedora-EPEL
  108. 搜索引擎:
  109. http://pkgs.org
  110. http://rpmfind.net
  111. http://rpm.pbone.net
  112. (4) 自己制作
  113.  
  114. 建议: 检查其合法性
  115. 来源合法性;
  116. 程序包的完整性;
  117.  
  118. CentOS系统上rpm命令管理程序包:
  119. 安装、卸载、升级、查询、校验、数据库维护
  120. -i:安装
  121. -U:升级
  122. -e:卸载
  123. -q:查询
  124. -V:校检
  125. --builddb,--initdb:数据库维护
  126. 安装:INSTALL OPTIONS
  127.  
  128. rpm {-i|--install} [install-options] PACKAGE_FILE ...
  129. -v: verbose,详细详细
  130. -vv: 更为详细的输出
  131. -h: 以#显示程序包管理执行进度;每个#表示2%的进度
  132.  
  133. rpm -ivh PACKAGE_FILE ...
  134.  
  135. [install-options]
  136. --test: 测试安装,但不真正执行安装过程;dry run模式;
  137. --nodeps:忽略依赖关系;
  138. --replacepkgs: 重新安装;
  139.  
  140. --nosignature: 不检查来源合法性;即密钥;
  141. --nodigest:不检查包完整性;
  142.  
  143. --noscipts:不执行程序包脚本片断;
  144. %pre: 安装前脚本; --nopre
  145. %post: 安装后脚本; --nopost
  146. %preun: 卸载前脚本; --nopreun
  147. %postun: 卸载后脚本; --nopostun
  148.  
  149. 升级: UPGRADE OPTIONS
  150.  
  151. rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
  152. rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
  153.  
  154. -U :升级;安装;
  155. 安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
  156. -F :升级;
  157. 安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
  158.  
  159. rpm -Uvh PACKAGE_FILE ...
  160. rpm -Fvh PACKAGE_FILE ...
  161.  
  162. --oldpackage:降级;
  163. --force: 强行升级;
  164.  
  165. 注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核;
  166. (2) 如果原程序包的配置文件安装后曾被修改,长级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;
  167.  
  168. 查询: QUERY OPTIONS
  169.  
  170. rpm {-q|--query} [select-options] [query-options]
  171. PACKAGE SELECTION OPTIONS:
  172. [select-options]
  173. -a: 所有包
  174. [root@study_centos6 ~]# rpm -qa | grep "^zsh"
  175. zsh-4.3.11-9.el6_10.x86_64
  176.  
  177. -f: 查看指定的文件由哪个程序包安装生成
  178. [root@study_centos6 ~]# rpm -qf /etc/fstab
  179. setup-2.8.14-23.el6.noarch
  180.  
  181. -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
  182.  
  183. --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
  184. --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
  185. PACKAGE QUERY OPTIONS:
  186. [query-options]
  187. --changelog:查询rpm包的changlog
  188. # rpm -q --changelog bash
  189. -c: 查询程序的配置文件
  190. -d: 查询程序的文档
  191. -i: information
  192. -l: 查看指定的程序包安装后生成的所有文件;
  193. rpm -ql bash
  194. --scripts:程序包自带的脚本片断
  195. -R: 查询指定的程序包所依赖的CAPABILITY;
  196. --provides: 列出指定程序包所提供的CAPABILITY;
  197.  
  198. 用法:
  199. -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
  200. -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
  201. -qa
  202.  
  203. 卸载:ERASE OPTIONS
  204.  
  205. rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
  206.  
  207. --allmatch: 卸载所有匹配指定名称的程序包的个版本
  208. --nodeps:
  209. --test:测试卸载;
  210.  
  211. 校验:VERIFY OPTIONS
  212. rpm {-V|--verify} [select-options] [verify-options]
  213.  
  214. S file Size differs
  215. M Mode differs (includes permissions and file type)
  216. 5 digest (formerly MD5 sum) differs
  217. D Device major/minor number mismatch
  218. L readLink(2) path mismatch
  219. U User ownership differs
  220. G Group ownership differs
  221. T mTime differs
  222. P caPabilities differ
  223.  
  224. 包来源合法性验正及完整性验正:
  225. 完整性验正:SHA256
  226. 来源合法性验正:RSA
  227.  
  228. 公钥加密:
  229. 对称加密:加密、解密使用同一密钥;
  230. 非对称加密:密钥是成对儿的;
  231. public key: 公钥,公开所有人
  232. secret key: 私钥, 不能公开
  233.  
  234. 导入所需要公钥:
  235. rpm --import /PATH/FROM/GPG-PUBKEY-FILE
  236.  
  237. CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
  238. [root@study_centos6 ~]# ls /etc/pki/rpm-gpg/
  239. RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Security-6 RPM-GPG-KEY-CentOS-Testing-6
  240. 验正:
  241. (1)安装此组织签名的程序时,会自动执行验正;
  242. (2)手动验正:rpm -K package_file
  243.  
  244. 数据库重建:
  245. centos6: man rpm
  246. centos7: man rpmdb
  247.  
  248. rpm {--initdb|--rebuilddb}
  249. initdb: 初始化
  250. 如果事先不存在数据库,则新建之;否则,不执行任何操作;
  251.  
  252. rebuilddb:重建
  253. 无论当前存在与否,直接重新创建数据库;
  254.  
  255. 回顾:Linux程序包管理的实现、rpm包管理器
  256.  
  257. rpm命令实现程序管理:
  258. 安装:-ivh, --nodeps, --replacepkgs
  259. 卸载:-e, --nodeps
  260. 升级:-Uvh, -Fvh, --nodeps, --oldpackage
  261. 查询:-q, -qa, -qf, -qi, -qd, -qc, -q --scripts, -q --changlog, -q --provides, -q --requires
  262. 校验:-V
  263.  
  264. 导入GPG密钥:--import, -K, --nodigest, --nosignature
  265. 数据库重建:--initdb, --rebuilddb
  266.   
  267. Linux程序包管理(2)
  268.  
  269. CentOS: yum, dnf
  270.  
  271. YUM: yellow dog, Yellowdog Update Modifier
  272.  
  273. yum repository: yum repo
  274. 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);
  275.  
  276. 文件服务器:
  277. ftp://
  278. http://
  279. nfs://
  280. file:///
  281.  
  282. yum客户端:
  283. 配置文件:
  284. /etc/yum.conf:为所有仓库提供公共配置
  285. /etc/yum.repos.d/*.repo:为仓库的指向提供配置
  286.  
  287. 仓库指向的定义:
  288. [repositoryID]
  289. name=Some name for this repository
  290. baseurl=url://path/to/repository/
  291. enabled={1|0}
  292. gpgcheck={1|0}
  293. gpgkey=URL
  294. enablegroups={1|0}
  295. failovermethod={roundrobin|priority}
  296. 默认为:roundrobin,意为随机挑选;
  297. cost=
  298. 默认为1000
  299.  
  300. 教室里的yum源:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
  301. CentOS 6.6 X84_64 epel: http://172.16.0.1/fedora-epel/6/x86_64/
  302.  
  303. yum命令的用法:
  304. yum [options] [command] [package ...]
  305.  
  306. command is one of:
  307. * install package1 [package2] [...]
  308. * update [package1] [package2] [...]
  309. * update-to [package1] [package2] [...]
  310. * check-update
  311. * upgrade [package1] [package2] [...]
  312. * upgrade-to [package1] [package2] [...]
  313. * distribution-synchronization [package1] [package2] [...]
  314. * remove | erase package1 [package2] [...]
  315. * list [...]
  316. * info [...]
  317. * provides | whatprovides feature1 [feature2] [...]
  318. * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
  319. * makecache
  320. * groupinstall group1 [group2] [...]
  321. * groupupdate group1 [group2] [...]
  322. * grouplist [hidden] [groupwildcard] [...]
  323. * groupremove group1 [group2] [...]
  324. * groupinfo group1 [...]
  325. * search string1 [string2] [...]
  326. * shell [filename]
  327. * resolvedep dep1 [dep2] [...]
  328. * localinstall rpmfile1 [rpmfile2] [...]
  329. (maintained for legacy reasons only - use install)
  330. * localupdate rpmfile1 [rpmfile2] [...]
  331. (maintained for legacy reasons only - use update)
  332. * reinstall package1 [package2] [...]
  333. * downgrade package1 [package2] [...]
  334. * deplist package1 [package2] [...]
  335. * repolist [all|enabled|disabled]
  336. * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
  337. * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
  338. * check
  339. * help [command]
  340.  
  341. 显示仓库列表:
  342. repolist [all|enabled|disabled]
  343.  
  344. 显示程序包:
  345. list
  346. # yum list [all | glob_exp1] [glob_exp2] [...]
  347. # yum list {available|installed|updates} [glob_exp1] [...]
  348.  
  349. 安装程序包:
  350. install package1 [package2] [...]
  351.  
  352. reinstall package1 [package2] [...] (重新安装)
  353.  
  354. 升级程序包:
  355. update [package1] [package2] [...]
  356.  
  357. downgrade package1 [package2] [...] (降级)
  358.  
  359. 检查可用升级:
  360. check-update
  361.  
  362. 卸载程序包:
  363. remove | erase package1 [package2] [...]
  364.  
  365. 查看程序包information:
  366. info [...]
  367.  
  368. 查看指定的特性(可以是某文件)是由哪个程序包所提供:
  369. provides | whatprovides feature1 [feature2] [...]
  370.  
  371. 清理本地缓存:
  372. clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
  373.  
  374. 构建缓存:
  375. makecache
  376.  
  377. 搜索:
  378. search string1 [string2] [...]
  379.  
  380. 以指定的关键字搜索程序包名及summary信息;
  381.  
  382. 查看指定包所依赖的capabilities:
  383. deplist package1 [package2] [...]
  384.  
  385. 查看yum事务历史:
  386. history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
  387.  
  388. 安装及升级本地程序包:
  389. * localinstall rpmfile1 [rpmfile2] [...]
  390. (maintained for legacy reasons only - use install)
  391. * localupdate rpmfile1 [rpmfile2] [...]
  392. (maintained for legacy reasons only - use update)
  393.  
  394. 包组管理的相关命令:
  395. * groupinstall group1 [group2] [...]
  396. * groupupdate group1 [group2] [...]
  397. * grouplist [hidden] [groupwildcard] [...]
  398. * groupremove group1 [group2] [...]
  399. * groupinfo group1 [...]
  400.  
  401. 如何使用光盘当作本地yum仓库:
  402. (1) 挂载光盘至某目录,例如/media/cdrom
  403. # mount -r -t iso9660 /dev/cdrom /media/cdrom
  404. (2) 创建配置文件
  405. [CentOS7]
  406. name=
  407. baseurl=
  408. gpgcheck=
  409. enabled=
  410.  
  411. yum的命令行选项:
  412. --nogpgcheck:禁止进行gpg check;
  413. -y: 自动回答为“yes”;
  414. -q:静默模式;
  415. --disablerepo=repoidglob:临时禁用此处指定的repo;
  416. --enablerepo=repoidglob:临时启用此处指定的repo;
  417. --noplugins:禁用所有插件;
  418.  
  419. yum的repo配置文件中可用的变量:
  420. $releasever: 当前OS的发行版的主版本号;
  421. $arch: 平台;
  422. $basearch:基础平台;
  423. $YUM0-$YUM9:自定义变量
  424.  
  425. http://mirrors.magedu.com/centos/$releasever/$basearch/os
  426.  
  427. 创建yum仓库:
  428. createrepo [options] <directory>

  

程序包管理rpm和yum的更多相关文章

  1. 程序包管理rpm、yum与简单编译安装程序

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  2. Linux程序包管理rpm与yum

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  3. linux基础之程序包管理(rpm,yum)

    一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...

  4. Linux 程序包管理-RPM

    程序简介:  POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...

  5. 【程序包管理】本地yum仓库的创建

    一.yum优势 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器 ...

  6. Linux程序包管理之yum及源代码安装

    第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...

  7. Linux 程序包管理-YUM

    前端工具YUM管理程序包:  rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...

  8. 十七、程序包管理之yum和编译安装

    YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...

  9. 十六、程序包管理之 rpm

    c语言程序的构建过程 1.程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接--> 可执行程序 开放源码:就是程序码,文本格式的源代码,写给人类看的程序 ...

随机推荐

  1. ios 导航栏(自己定义和使用系统方式)

    系统方式: //1.设置导航栏背景图片 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] ini ...

  2. Swift基本常识点

    import Foundation // 单行注释 // 多行注释(支持嵌套,OC是不支持的) // 常量let,初始化之后就不可改变. // 常量的具体类型可以自动识别,等号后面是什么类型,它就是什 ...

  3. AFNetworking 3.0携带參数上传文件Demo

    一.服务端代码: 服务端是java用国产nutz搞的,实际mvc框架都大同小异.就是提交文件的同一时候还带了个表单參数 @AdaptBy(type=UploadAdaptor.class, args= ...

  4. The Elder HDU - 5956

    /* 树上斜率优化 一开始想的是构造出一个序列 转化成一般的dp但是可能被卡 扫把状的树的话可能变成n*n 其实可以直接在树上维护这个单调队列 dfs虽然搞得是一棵树,但是每次都是dfs到的都是一个序 ...

  5. SQL Server 2005数据库定期备份(非常详细)与 SQL Server 2005数据库备份定期清理

     SQL Server 2005数据库定期备份 分类: SQL Server 20052011-01-06 16:25 3320人阅读 评论(1) 收藏 举报 sql server数据库sqlserv ...

  6. bzoj 1026 [ SCOI2009 ] windy数 —— 数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 蛮简单的数位DP,预处理 f[i][j] 表示 i 位数,以 j 开头的 windy ...

  7. 杂项-Java:JNI

    ylbtech-杂项-Java:JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始, ...

  8. codevs1288 埃及分数(IDA*)

    1288 埃及分数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的 ...

  9. JavaScript表格搜索高亮功能模拟

    在网页表格中模拟excle的搜索高亮显示功能.当在搜索框中输入需要的姓名时,若表格中存在对应的数据,则该表格背景色变为黄色. 下面为表的HTML源码: <!doctype html> &l ...

  10. 后台传list,前台接受

    @RequestMapping("/page1") public ModelAndView editSharing(Integer id) { ModelAndView mav=n ...