{"id":11,"date":"2014-01-13T20:24:24","date_gmt":"2014-01-13T12:24:24","guid":{"rendered":"http:\/\/cmesoft.com\/?p=11"},"modified":"2014-01-24T17:19:37","modified_gmt":"2014-01-24T09:19:37","slug":"%e3%80%8alinux%e8%bd%af%e4%bb%b6%e7%ae%a1%e7%90%86%e5%b9%b3%e5%8f%b0%e8%ae%be%e8%ae%a1%e4%b8%8e%e5%ae%9e%e7%8e%b0%e3%80%8b%e5%9f%ba%e7%a1%80%e7%af%87-rpm%e6%96%87%e4%bb%b6%e8%ae%a4%e7%9f%a5%e4%b8%8e","status":"publish","type":"post","link":"http:\/\/cmesoft.com\/?p=11","title":{"rendered":"rpm\u6587\u4ef6\u8ba4\u77e5\u4e0e\u683c\u5f0f\u5256\u6790"},"content":{"rendered":"<p><span style=\"color: #ff0000;\">\u8bf4\u660e\uff1a\u672a\u7ecf\u4f5c\u8005\u540c\u610f\uff0c\u4e0d\u5f97\u8f6c\u8f7d\u672c\u7ad9\u6587\u7ae0<\/span><br \/>\n\u524d\u8a00\uff1a<\/p>\n<p>2012\u5e749\u6708\uff0c\u6211\u6709\u5e78\u53c2\u52a0\u4e86IT168\u5728\u5317\u4eac\u4e3e\u529e\u7684\u7cfb\u7edf\u67b6\u6784\u5e08\u5927\u4f1a\uff0c\u5e76\u5728\u8be5\u4f1a\u8bae\u4e0a\u505a\u4e86\u4e00\u7bc7\u5173\u4e8e\u300a\u8f6f\u4ef6\u7ba1\u7406\u5e73\u53f0\u8bbe\u8ba1\u300b\u7684\u6f14\u8bb2\uff0cPPT\u4e0b\u8f7d\u5728\u8fd9\u91cc\uff1a<br \/>\n<a title=\"PPT\u4e0b\u8f7d\u5730\u5740\" href=\"http:\/\/bbs.chinaunix.net\/thread-3771155-1-1.html\">PPT\u4e0b\u8f7d\u5730\u5740\u5728\u8fd9\u91cc<\/a><br \/>\n\u5728\u5927\u4f1a\u7ed3\u675f\u540e\uff0c\u4e3a\u4e86\u4e0d\u4f7f\u5f97\u8fd9\u4e2a\u8ba8\u8bba\u8bdd\u9898\u53ea\u6210\u4e3a\u4e00\u6b21\u6f14\u8bb2\uff0c\u800c\u80fd\u5c06\u5176\u5ef6\u4f38\u4e0b\u53bb\uff0c\u6211\u4fbf\u53c8\u5728 chinaunix \u53d1\u8868\u4e86\u4e09\u7bc7\u5173\u4e8e\u8f6f\u4ef6\u7ba1\u7406\u7684\u6587\u7ae0\uff0c\u672c\u6587\u5c31\u662f\u5176\u4e2d\u7684\u7b2c\u4e00\u7bc7\u3002<\/p>\n<p>\u672c\u6587\u6700\u65e9\u53d1\u5e03\u5728 <a title=\"chinaunix\u793e\u533a\" href=\"http:\/\/bbs.chinaunix.net\/forum.php?mod=forumdisplay&amp;fid=185&amp;page=1\">chinaunix \u793e\u533a<\/a>\u7684\u201c\u67b6\u6784\u8bbe\u8ba1\u201d\u677f\u5757\uff0c\u540e\u6765\u7ecf\u8fc7\u7cfb\u7edf\u5316\u7684\u6574\u7406\u540e\u4f5c\u4e3a\u57fa\u7840\u90e8\u5206\u7eb3\u5165\u4e86<span style=\"color: #0000ff;\">\u300alinux\u8f6f\u4ef6\u7ba1\u7406\u5e73\u53f0\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u300b<\/span>\u8fd9\u672c\u4e66\u4e2d\u3002\u5bf9\u672c\u4e66\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u4ee5\u641c\u7d22\u76f8\u5173\u6587\u7ae0\u6216\u8005\u8d2d\u4e70\u672c\u4e66\u9605\u8bfb\u3002\u95f2\u8bdd\u5c11\u8bf4\uff0c\u8f6c\u5165\u6b63\u6587\u3002<\/p>\n<p>\u4ece\u6587\u7ae0\u7684\u6807\u9898\u548cPPT\u7684\u5185\u5bb9\uff0c\u53ef\u4ee5\u77e5\u9053\uff0c\u672c\u6587\u8981\u8bf4\u7684\u5bf9\u8c61\u662f rpm \u6587\u4ef6\u548c yum \u670d\u52a1\uff0c\u672c\u4eba\u4e0d\u592a\u559c\u6b22\u90a3\u79cd\u6559\u6750\u65b9\u5f0f\u7684\u4ecb\u7ecd\uff0c\u800c\u662f\u559c\u6b22\u4ece\u4e2a\u4eba\u7684\u6700\u76f4\u89c2\u7406\u89e3\u53bb\u9610\u8ff0\uff0c\u53d9\u8bf4\u4e00\u4e2a\u4e8b\u60c5\u6216\u8005\u4e00\u95e8\u6280\u672f\uff0c\u90a3\u4e48\uff0c\u672c\u6587\u91c7\u7528\u7684\u5c31\u662f\u8fd9\u79cd\u4e66\u5199\u65b9\u5f0f\u3002<\/p>\n<p><strong>RPM\u6587\u4ef6<\/strong><\/p>\n<p>\u9996\u5148\u8bf4\u8bf4 RPM \u6587\u4ef6\uff0c\u767e\u5ea6\u641c\u7d22\u4e0b &#8220;rpm&#8221;\uff0c\u53ef\u4ee5\u770b\u5230\u4ed6\u7684\u82f1\u6587\u540d\u5b57\u662f: RedHat Package Manager, \u4f60\u53ef\u4ee5\u8ba4\u4e3a rpm \u662f\u4e00\u79cd\u8f6f\u4ef6\u5305\u7ba1\u7406\u65b9\u5f0f\uff0c\u6216\u8005\u662f\u4e00\u4e2a\u8f6f\u4ef6\u5305\u7ba1\u7406\u5de5\u5177\u3002\u63d0\u5230\u8f6f\u4ef6\u5305\u7ba1\u7406\uff0c\u5c31\u8d58\u8ff0\u51e0\u53e5\uff0c\u4ec0\u4e48\u662f\u8f6f\u4ef6\u5305\u5462\uff1f<\/p>\n<p> \u6211\u5bf9\u201c\u8f6f\u4ef6\u5305\u201d\u7684\u7406\u89e3\u662f\uff1a\u6700\u539f\u59cb\u7684\u5305\u662f\u4e00\u5806\u9700\u8981\u8fd0\u884c\u7684\u7a0b\u5e8f\u7684\u96c6\u5408\uff0c\u53ef\u80fd\u8fd8\u9700\u8981\u52a0\u4e0a\u4e00\u4e9b\u914d\u7f6e\u6587\u4ef6\uff0c\u52a8\u6001\u5e93\u4e4b\u7c7b\uff0c\u5c31\u6784\u6210\u4e86\u8f6f\u4ef6\u5305\u3002\u6bd4\u5982\uff0c<br \/>\n\u4f60\u628a\u81ea\u5df1\u5199\u597d\u7684\u811a\u672c\u6216\u8005 C \u4ee3\u7801\u7f16\u8bd1\u751f\u6210\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u52a0\u4e0a\u4f9d\u8d56\u7684\u67d0\u4e9b so \u6587\u4ef6\u548c conf \u6587\u4ef6\uff0c\u5b58\u50a8\u5728\u4e00\u4e2a\u76ee\u5f55\u4e2d\uff0c\u53eb\u505a execute, \u90a3\u4e48\uff0c\u8fd9\u65f6\u5c31\u53ef\u4ee5\u79f0\u547c execute \u4e3a<\/p>\n<p>\u4e00\u4e2a\u8f6f\u4ef6\u5305\u4e86\u3002<\/p>\n<p>\u6709\u4eba\u53ef\u80fd\u8bf4\uff1a\u8fd9\u600e\u4e48\u80fd\u53eb\u4f5c\u8f6f\u4ef6\u5305\u5462\uff1f \u670b\u53cb\uff0c\u8ba9\u6211\u4eec\u4ed4\u7ec6\u60f3\u60f3\uff0c\u5b83(execute)\u786e\u5b9e\u5e94\u8be5\u662f\u4e00\u4e2a\u8f6f\u4ef6\u5305\uff0c\u5b83\u5305\u542b\u4e86\u8981\u8fd0\u884c\u7684\u5e94\u7528\u9700\u8981\u7684\u57fa\u672c\u4e1c\u897f\uff1a\u6267\u884c\u7a0b\u5e8f\uff0c\u914d\u7f6e\uff0c\u4f9d\u8d56\u5e93\u7b49\uff0c\u8fd9\u65f6\uff0c\u4ed6\u4e0d\u662f\u8f6f\u4ef6\u5305\u8fd8\u80fd\u662f\u4ec0\u4e48\uff1f \u53ea\u4e0d\u8fc7\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u770b\u8d77\u6765\u6709\u4e9b\u539f\u59cb\u6216\u8005\u7b80\u5355\u800c\u5df2\u3002<\/p>\n<p>\u6709\u4e86\u57fa\u672c\u7684\u8f6f\u4ef6\u5305-\u4e00\u4e2a\u76ee\u5f55\u4e2d\u5b58\u653e\u6587\u4ef6\u7684\u96c6\u5408\uff0c\u6211\u4eec\u5c31\u4f1a\u60f3\u7740\u66f4\u9ad8\u7ea7\u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\uff0c\u6bd4\u5982\u5bf9 execute \u8fdb\u884c\u538b\u7f29\u540e\uff0c\u4e5f\u662f\u4e00\u4e2a\u8f6f\u4ef6\u5305\uff0c\u901a\u8fc7 tar \u6216\u8005 gzip \u5f97\u5230 .tar.gz, .rar \u6216\u8005 .zip \u683c\u5f0f\u7684\u6587\u4ef6\uff0c\u4f60\u5c31\u83b7\u5f97\u4e86\u4e00\u4e2a\u8f83\u4e3a\u9ad8\u7ea7\u7684\u8f6f\u4ef6\u5305\u4e86\uff0c\u4e3a\u4ec0\u4e48\u79f0\u5176\u4e3a\u201c\u9ad8\u7ea7\u201d\u8f6f\u4ef6\u5305\u5462\uff1f\u56e0\u4e3a\u5b83\u628a\u7a0b\u5e8f\u548c\u914d\u7f6e\u53d8\u6210\u4e86\u4e00\u4e2a\u5355\u4e00\u7684\u6587\u4ef6\uff0c\u8fd9\u6837\u5c31\u65b9\u4fbf\u62f7\u8d1d \u4e86\uff0c\u53e6\u5916\u538b\u7f29\u6587\u4ef6\u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\uff0c\u4e5f\u8282\u7701\u4e86\u78c1\u76d8\u7a7a\u95f4\u5360\u7528\u548c\u7f51\u7edc\u6570\u636e\u4f20\u8f93\u7684\u91cf\u3002\u5728\u6211\u4e4b\u524d\u4ece\u4e8b3\u5e74\u7684\u5355\u4f4d\uff0c\u6211\u4eec\u6240\u5728\u9879\u76ee\u7ec4\u7684\u7a0b\u5e8f\u57fa\u672c\u90fd\u662f\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u53d1\u5e03\u7684\uff0c\u6bcf\u6b21\u53d1\u5e03\u7a0b\u5e8f\uff0c\u90fd\u662f\u628a\u52a8\u6001\u5e93\uff0c\u4e8c\u8fdb\u5236\u7a0b\u5e8f\u548c\u914d\u7f6e\u6587\u4ef6\u538b\u7f29\u6210\u4e00\u4e2a tgz \u6587\u4ef6\uff0c\u62f7\u8d1d\u5230\u9700\u8981\u8fd0\u884c\u7684 2000 \u591a\u53f0\u673a\u5668\u4e0a\uff0c\u89e3\u538b\u5230\u6307\u5b9a\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u76f4\u63a5\u8fd0\u884c\u5373\u53ef\u3002\u53ef\u4ee5\u770b\u5230\uff0c\u8fd9\u79cd\u8f6f\u4ef6\u5305\u7ec4\u7ec7\u65b9\u5f0f\u4f7f\u7528\u8d77\u6765\u5df2\u7ecf\u6bd4\u8f83\u65b9\u4fbf\u4e86\u3002<\/p>\n<p>\u6709\u4e86 tgz\/rar\/zip \u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\u5c31\u591f\u4e86\u5417\uff1f\u53ef\u80fd\u5bf9\u4e8e\u67d0\u4e9b\u5c0f\u578b\u5e94\u7528\u786e\u5b9e\u591f\u4e86\uff0c\u4f46\u662f\uff0c\u65e5\u5e38\u5de5\u4f5c\u4e2d\u6211\u4eec\u7ecf\u5e38\u8fd8\u4f1a\u78b0\u5230\u4e0b\u9762\u8fd9\u4e9b\u95ee\u9898\uff1a<\/p>\n<p>(1):  \u60f3\u8981\u67e5\u67d0\u4e2a\u8f6f\u4ef6\u5305\u7684\u4fe1\u606f\uff0c\u6bd4\u5982\u8c01\u5236\u4f5c\u7684\uff0c\u4ec0\u4e48\u65f6\u5019\u5236\u4f5c\u7684\uff0c\u4ee5\u53ca\u63cf\u8ff0\u4fe1\u606f\uff1f<br \/>\n(2):  \u7ed9\u8f6f\u4ef6\u5305\u5e26\u4e0a\u4e00\u4e9b\u7279\u6b8a\u529f\u80fd\uff0c\u9664\u4e86\u6587\u4ef6\u62f7\u8d1d\u529f\u80fd\u5916\uff0c\u8fd8\u8981\u6709\u914d\u7f6e\u6587\u4ef6\u751f\u6210\uff0c\u5b89\u88c5\u670d\u52a1\uff0c\u6267\u884c\u547d\u4ee4\u7b49\u64cd\u4f5c\uff0c\u538b\u7f29\u6587\u4ef6\u600e\u4e48\u7528\uff1f<br \/>\n(3):  \u8f6f\u4ef6\u5305\u7248\u672c\u5347\u7ea7\u65f6\uff0c\u901a\u8fc7\u538b\u7f29\u6587\u4ef6\u600e\u4e48\u505a\uff1f<\/p>\n<p>\u9664\u4e86\u4ee5\u4e0a\u8fd93\u70b9\uff0c\u5e94\u8be5\u8fd8\u6709\u5176\u4ed6\u65b9\u9762\u7684\u95ee\u9898\uff0c\u4f60\u5e94\u8be5\u90fd\u4f1a\u9047\u5230\u6216\u8005\u601d\u8003\u5230\u3002\u518d\u601d\u8003\u4e0b\u3002\u3002\u3002\u538b\u7f29\u6587\u4ef6\u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\u786e\u5b9e\u5b58\u5728\u8fd9\u4e9b\u529f\u80fd\u4e0a\u7684\u4e0d\u8db3\uff0c\u6709\u6ca1\u6709\u4e00\u79cd\u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\uff0c\u9664\u4e86\u538b\u7f29\u5b58\u50a8\u4e4b\u5916\uff0c\u8fd8\u80fd\u5b9e\u73b0\u66f4\u591a\u7684\u529f\u80fd\u5462\uff1f<br \/>\n\u7b54\u6848\u662f\u80af\u5b9a\u7684\u3002<\/p>\n<p>rpm \u5c31\u662f\u5177\u6709\u4e0a\u9762\u63d0\u5230\u7684\u8bf8\u591a\u529f\u80fd\u7684\u4e00\u79cd\u5305\u7ec4\u7ec7\u65b9\u5f0f\u3002\u5f53\u7136\u8fd8\u6709\u5176\u4ed6\u65b9\u5f0f\u7684\u9ad8\u7ea7\u8f6f\u4ef6\u5305\u683c\u5f0f\uff0c\u4e0d\u8fc7\u672c\u6587\u548c\u540e\u7eed\u7684\u6587\u7ae0\u4e2d\u53ea\u5bf9 rpm \u8fd9\u79cd\u683c\u5f0f\u7684\u8f6f\u4ef6\u5305\u8fdb\u884c\u8ba8\u8bba\u3002<\/p>\n<p>\u5148\u6765\u770b\u770b\u8fd9\u79cd\u9ad8\u7ea7\u8f6f\u4ef6\u5305\u7684\u7279\u70b9(\u6216\u8005\u529f\u80fd)\u5427\uff1a<\/p>\n<p>(1):  \u538b\u7f29\u6570\u636e\u5b58\u50a8\u3002<br \/>\n(2):  \u6587\u4ef6\u5b89\u88c5\u5230\u7cfb\u7edf\u4e2d\u6307\u5b9a\u4f4d\u7f6e\u3002<br \/>\n(3):  \u914d\u7f6e\u6587\u4ef6\u751f\u6210\u3002<br \/>\n(4):  \u7cfb\u7edf\u670d\u52a1\u6ce8\u518c\u3002<br \/>\n(5):  \u8f6f\u4ef6\u4f9d\u8d56\u68c0\u67e5\u3002<\/p>\n<p>\u9664\u4e86(1)\u548c(2),\u540e\u9762\u8fd9\u4e09\u4e2a\u529f\u80fd\uff0c\u5927\u6982\u662f\u538b\u7f29\u683c\u5f0f\u8f6f\u4ef6\u5305\u90fd\u4e0d\u5177\u6709\u7684\u529f\u80fd\u5427\u3002<\/p>\n<p><strong>\u538b\u7f29\u5b58\u50a8<\/strong><\/p>\n<p>\u8fd9\u662f\u6240\u6709\u8f6f\u4ef6\u5305\u7684\u57fa\u672c\u529f\u80fd\uff0c\u6bd4\u5982\uff0c\u6211\u8fd9\u91cc\u6709\u4e2a\u76ee\u5f55\u662f5.2M\u5b57\u8282, \u7528\u5b83\u5236\u4f5c\u597d\u7684 rpm\u6587\u4ef6 \u53ea\u67092.4M\u5927\u5c0f\u3002<\/p>\n<p><strong>\u6587\u4ef6\u5b89\u88c5<\/strong><\/p>\n<p>\u8fd9\u4e2a\u529f\u80fd\u540c\u6837\u662f\u8f6f\u4ef6\u5305\u7684\u57fa\u672c\u529f\u80fd\uff0c\u8fd0\u884c\u547d\u4ee4:<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>rpm -qpl .\/cmeguard-1.1.2-34.i386.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u5982\u4e0b\u8f93\u51fa\uff1a<\/p>\n<p><coolcode lang=\"shell\" linenum=\"off\" ><\/p>\n<p>\/etc\/init.d\/cmeguard<br \/>\n\/usr\/local\/cmeguard\/bin\/auto_update<br \/>\n\/usr\/local\/cmeguard\/bin\/cmeguard<br \/>\n\/usr\/local\/cmeguard\/bin\/cmesync<br \/>\n\/usr\/local\/cmeguard\/bin\/daemon<br \/>\n\/usr\/local\/cmeguard\/bin\/genfinger<br \/>\n\/usr\/local\/cmeguard\/bin\/run<br \/>\n\/usr\/local\/cmeguard\/bin\/sync_plug<br \/>\n\/usr\/local\/cmeguard\/bin\/sync_plug_back<br \/>\n\/usr\/local\/cmeguard\/conf\/cmeguard.conf<br \/>\n\/usr\/local\/cmeguard\/conf\/cmeproxy.conf<br \/>\n\/usr\/local\/cmeguard\/conf\/cmesync.conf<br \/>\n\/usr\/local\/cmeguard\/conf\/error.html<br \/>\n\/usr\/local\/cmeguard\/conf\/mime.types<br \/>\n\/usr\/local\/cmeguard\/data<br \/>\n\/usr\/local\/cmeguard\/db<br \/>\n\/usr\/local\/cmeguard\/finger<br \/>\n\/usr\/local\/cmeguard\/lib<br \/>\n\/usr\/local\/cmeguard\/log<br \/>\n\/usr\/local\/cmeguard<\/p>\n<p><\/coolcode><\/p>\n<p>\u4e0a\u9762\u770b\u5230\u7684\u6587\u4ef6\u5217\u8868\u5c31\u662f\u5c06\u6765\u4f1a\u5b89\u88c5\u7684\u6587\u4ef6\u5217\u8868\uff0c\u5982\u679c\u4f60\u7528\u9ed8\u8ba4\u5b89\u88c5\u547d\u4ee4:<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>rpm -ivh cmeguard-1.1.2-34.i386.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u5b89\u88c5\u8fd9\u4e2a\u5305\u7684\u8bdd\uff0c\u5c31\u4f1a\u5728\u4f60\u7684\u7cfb\u7edf\u4e0a\u627e\u5230\u4e0a\u9762\u5217\u8868\u4e2d\u5bf9\u5e94\u7684\u6240\u6709\u6587\u4ef6\uff0c\u800c\u4e14\u6700\u5c11\u662f\u8fd9\u4e9b\u6587\u4ef6(\u56e0\u4e3a\u5b89\u88c5\u65f6\u53ef\u80fd\u4f1a\u4ea7\u751f\u65b0\u7684\u6587\u4ef6\uff0c\u8fd9\u4e2a\u540e\u9762\u4f1a\u8bf4)\u3002<\/p>\n<p><strong>\u914d\u7f6e\u6587\u4ef6\u4ea7\u751f<\/strong><\/p>\n<p>\u914d\u7f6e\u6587\u4ef6\u65e2\u53ef\u4ee5\u901a\u8fc7\u5b89\u88c5\u5217\u8868\u4e2d\u7684\u6587\u4ef6\u6765\u751f\u6210\uff0c\u53c8\u53ef\u4ee5\u901a\u8fc7\u5b89\u88c5\u8fc7\u7a0b\u4e2d\u7684\u811a\u672c\u6765\u751f\u6210\u3002<\/p>\n<p><strong>\u670d\u52a1\u6ce8\u518c<\/strong><\/p>\n<p>\u5982\u679c\u4f60\u7528rpm\u5b89\u88c5\u8fc7 apache, mysql-server \u7b49\u5e38\u89c1\u7684\u8f6f\u4ef6\uff0c\u5e94\u8be5\u4f1a\u77e5\u9053\uff0c\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u4f1a\u5bf9\u5e94\u5728 \/etc\/init.d\/ \u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a httpd \u6216\u8005 mysqld \u7684\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u8fd9\u4e2a\u6587\u4ef6\u6309\u7167\u6807\u51c6\u7684\u81ea\u542f\u52a8\u811a\u672c\u683c\u5f0f\u4e66\u5199\u7684(\u53c2\u8003chkconfig)\uff0c\u5f53\u7cfb\u7edf\u4ee5\u5bf9\u5e94\u7684\u6a21\u5f0f\u542f\u52a8\u65f6\uff0c\u88ab\u5b89\u88c5\u5bfc\u7cfb\u7edf\u4e2d\u7684\u670d\u52a1\u7a0b\u5e8f\u5c31\u4f1a\u8fd0\u884c\u8d77\u6765\u3002<br \/>\n\u6bd4\u5982\uff0c\u8fd0\u884c\u547d\u4ee4\uff1a<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>rpm &#8211;nosignature -qpl .\/vsftpd-2.0.5-10.el5.i386.rpm | grep init<\/p>\n<p><\/coolcode><\/p>\n<p>\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>\/etc\/rc.d\/init.d\/vsftpd<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230:<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>\/etc\/rc.d\/init.d\/vsftpd<\/p>\n<p><\/coolcode><\/p>\n<p>\u8fd9\u4e2a\u6587\u4ef6\u88ab\u5b89\u88c5\u5230\u4e86\u7cfb\u7edf\u4e2d\uff0c\u8fd9\u65f6\uff0c\u4f60\u5c31\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>service vsftpd start\/stop\/restart\/status<\/p>\n<p><\/coolcode><\/p>\n<p>\u6765\u63a7\u5236 ftp \u670d\u52a1\u7684\u542f\u52a8\u548c\u505c\u6b62\u4e86\u3002<\/p>\n<p><strong>\u8f6f\u4ef6\u4f9d\u8d56\u68c0\u67e5<\/strong><\/p>\n<p>\u6211\u4eec\u5f00\u53d1\u7684\u7a0b\u5e8f\u5f88\u5c11\u662f\u5355\u72ec\u8fd0\u884c\u7684\uff0c\u5927\u591a\u6570\u90fd\u4f1a\u4f9d\u8d56\u5176\u5b83\u8f6f\u4ef6\uff0c\u6bd4\u5982\u4f60\u5f00\u53d1\u7684\u6570\u636e\u5e93\u5904\u7406\u7a0b\u5e8f\u53ef\u80fd\u9700\u8981 libmysql,\u7f51\u7edc\u62a5\u6587\u5904\u7406\u7a0b\u5e8f\u9700\u8981libpcap\u8fd9\u4e2a\u5305\u7684\u652f\u6301\uff0c\u8fd9\u65f6\uff0c\u4e3a\u4e86\u4fdd\u8bc1\u4f60\u7684\u8f6f\u4ef6\u5b89\u88c5\u540e\u80fd\u6b63\u5e38\u8fd0\u884c\uff0c\u800c\u4e14\u5728\u5b89\u88c5\u65f6\u5c31\u80fd\u591f\u68c0\u67e5\u73af\u5883\u662f\u5426\u5c31\u7eea\uff0c\u5c31\u53ef\u4ee5\u901a\u8fc7\u8f6f\u4ef6\u4f9d\u8d56\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0(\u5f53\u7136\uff0c\u6709\u4eba\u53ef\u80fd\u4f1a\u95ee\u600e\u4e48\u5b9e\u73b0\u8fd9\u4e9b\u5462\uff0c\u8fd9\u4e2a\u5728\u540e\u9762\u6587\u7ae0\u7684spec \u8bed\u6cd5\u4e2d\u4f1a\u8be6\u7ec6\u8bf4\u660e)\u3002<\/p>\n<p>\u8fd8\u662f\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6bd4\u5982\u6709\u4e2a rpm \u53eb\u4f5c\uff1a<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>test_rpm-1.1.1-21.i386.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u9996\u5148\u6211\u4eec\u770b\u4e0b\u5b83 require\u4e86 \u54ea\u4e9b\u549a\u549a,<br \/>\n\u8fd0\u884c\u547d\u4ee4\uff1a<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>rpm -qp test_rpm-1.1.1-21.i386.rpm &#8211;requires<\/p>\n<p><\/coolcode><\/p>\n<p>\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>test__require_pkg<br \/>\nruby-libs<br \/>\n\/bin\/sh<br \/>\n\/bin\/sh<br \/>\nrpmlib(PayloadFilesHavePrefix) >= 4.0-1<br \/>\nrpmlib(CompressedFileNames) >= 3.0.4-1<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u5b83\u4f9d\u8d56\u4e86\u8fd9\u4e9b\u7ec4\u4ef6\u6216\u8005\u5305\u3002<br \/>\n\u7136\u540e\u5c1d\u8bd5\u5b89\u88c5\u4e0b\u8fd9\u4e2a\u8f6f\u4ef6\u5305\uff0c\u8fd0\u884c\u547d\u4ee4\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>rpm -ivh test_rpm-1.1.1-21.i386.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u63d0\u793a\u5982\u4e0b\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>error: Failed dependencies:<br \/>\ntest__require_pkg is needed by test_rpm-1.1.1-21.i386<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\uff0c\u7cfb\u7edf\u7f3a\u5c11 &#8220;test__requre_pkg&#8221; \u8fd9\u4e2a\u5305\uff0c\u56e0\u6b64 test_rpm-1.1.1-21.i386.rpm<br \/>\n\u8fd9\u4e2a\u5305\u662f\u4e0d\u80fd\u5b89\u88c5\u6210\u529f\u7684\uff0c\u8fd9\u6837\u7684\u903b\u8f91\u662f\u5408\u7406\u7684\u3002\u867d\u7136\u6211\u4eec\u901a\u8fc7\u5982\u4e0b\u547d\u4ee4\u67e5\u770b\u7cfb\u7edf\u5b89\u88c5\u7684\u5305<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>rpm -qa ruby-libs<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u4f9d\u8d56\u4e4b\u4e00\u7684 &#8220;ruby-libs&#8221; \u5df2\u7ecf\u5b89\u88c5\u597d\u4e86\uff0c\u4f46\u662f\u5728\u6bcf\u4e00\u4e2arpm\u7684\u4f9d\u8d56\u5217\u8868\u4e2d\uff0c\u4ed6\u4eec\u5f7c\u6b64\u662f\u7f3a\u4e00\u4e0d\u53ef\u7684\uff0c\u6216\u8005\u8bf4\u4ed6\u4eec\u662f&#8221;\u4e0e&#8221;\u7684\u5173\u7cfb\u3002<\/p>\n<p>\u597d\u4e86\uff0crpm \u7684\u4e94\u4e2a\u7279\u6027\uff0c\u6682\u65f6\u5c31\u8bf4\u5230\u8fd9\u91cc\u3002<br \/>\n\u518d\u6765\u5c11\u8bb8\u8d58\u8a00\u5bf9\u4e0a\u9762\u8d77\u521d\u63d0\u7684\u95ee\u9898\u8fdb\u884c\u56de\u7b54\uff1a rpm \u662f\u600e\u6837\u5728\u538b\u7f29\u5b58\u50a8\u4e4b\u5916\u53c8\u80fd\u505a\u5230\u5176\u5b83\u529f\u80fd\u7684\u5462\uff0c\u6bd4\u5982\u5b89\u88c5\u670d\u52a1\uff0c\u6267\u884c\u67d0\u4e9b\u547d\u4ee4\uff0c\u6253\u5370\u4fe1\u606f\uff0c\u53d1\u90ae\u4ef6\uff0c\u68c0\u67e5\u4f9d\u8d56\u5305\uff0c\u8fd8\u6709\u5347\u7ea7\u65f6\u505a\u7248\u672c\u68c0\u67e5\u3002\u8fd9\u4e9b\u90fd\u600e\u4e48\u5b9e\u73b0\u7684\uff1f<\/p>\n<p>\u5728\u6b64\u53ea\u8fdb\u884c\u7b80\u5355\u7684\u89e3\u91ca\uff0c\u7ec6\u8282\u7559\u5f85 spec \u6587\u4ef6\u90a3\u8282\u518d\u8bf4\u3002<br \/>\nrpm \u5176\u4e2d\u4e00\u4e2a\u529f\u80fd\u5c31\u662f\u5bf9\u811a\u672c( scripts) \u7684\u652f\u6301\uff0c\u9664\u4e86\u6587\u4ef6\u538b\u7f29\u5b58\u50a8\uff0c\u5b83\u652f\u6301\u5728\u5b89\u88c5\u8f6f\u4ef6\u6216\u8005\u5378\u8f7d\u8f6f\u4ef6\u7684\u8fc7\u7a0b\u4e2d(\u786e\u5207\u70b9\u8bf4\uff0c\u662f\u8fd9\u4e2a\u8fc7\u7a0b\u7684\u5f00\u59cb\uff0c\u8fdb\u884c\u548c\u7ed3\u675f\u540e\u8fd9\u4e9b\u4e0d\u540c\u65f6\u95f4\u70b9)\uff0c\u6267\u884c\u4e00\u4e9b\u547d\u4ee4\uff0c\u5e38\u7528\u7684\u811a\u672c\u6709:<\/p>\n<p>post install<br \/>\npre install<br \/>\npost uninstall<br \/>\npre uninstall<\/p>\n<p>\u4ece\u5b57\u9762\u610f\u601d\u5c31\u80fd\u770b\u5230\u5176\u4f5c\u7528\uff0c\u4e5f\u5c31\u662f\u8bf4rpm\u80fd\u591f\u5728\u5b89\u88c5\u524d\uff0c\u5b89\u88c5\u5b8c\uff0c\u5378\u8f7d\u524d\uff0c\u5378\u8f7d\u5b8c\u6267\u884c\u67d0\u4e9b\u811a\u672c\uff0c\u8fd9\u5c31\u4e3a\u6269\u5c55\u8f6f\u4ef6\u5305\u7684\u529f\u80fd\u63d0\u4f9b\u4e86\u6781\u5927\u7684\u7a7a\u95f4\u3002<br \/>\n\u6211\u4eec\u770b\u4e00\u4e2a\u4f8b\u5b50,\u8fd0\u884c\u547d\u4ee4:<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>pm -qp test_rpm-1.1.1-21.i386.rpm &#8211;scripts<\/p>\n<p><\/coolcode><\/p>\n<p>\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>preinstall scriptlet (using \/bin\/sh):<br \/>\necho &#8220;pre install scripts by duanjigang&#8221;<br \/>\npostinstall scriptlet (using \/bin\/sh):<br \/>\necho &#8220;post install scripts by duanjigang&#8221;<br \/>\npreuninstall scriptlet (using \/bin\/sh):<br \/>\n#!\/bin\/bash<br \/>\necho &#8220;pre uninstall by duanjigang&#8221;<br \/>\npostuninstall scriptlet (using \/bin\/sh):<br \/>\n#!\/bin\/bash<br \/>\necho &#8220;post uninstall by duanjigang&#8221;<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u6709 5 \u4e2a scripts \u5728 rpm \u4e2d\u9644\u5e26\u7740\uff0c\u5206\u522b\u5728\u5b89\u88c5\u524d\u540e\uff0c\u5378\u8f7d\u524d\u540e\uff0cbuild \u8fd9\u4e94\u4e2a\u70b9\u6267\u884c\uff0c\u8fd9\u6837\uff0c\u4f60\u5c31\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e9b scripts \u6765\u5b9e\u73b0\u60f3\u8981\u7684\u529f\u80fd\u4e86\u3002<br \/>\n\u5173\u4e8e scripts \u5728\u90a3\u4e9b\u4e0d\u540c\u70b9\u6267\u884c\uff0c\u6709\u4ec0\u4e48\u6548\u679c\uff0c\u540e\u9762\u4f1a\u8be6\u8ff0\u3002<\/p>\n<p>\u8fd8\u6709\u5c31\u662f rpm \u600e\u4e48\u505a\u5230\u7248\u672c\u7684\u63a7\u5236\u548c\u66f4\u65b0\u7684\uff1f<br \/>\n\u901a\u8fc7\u8fd0\u884c\u547d\u4ee4:<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>rpm -qpi test_rpm-1.1.1-21.i386.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u8f93\u51fa\uff1a<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p>Name : test_rpm<br \/>\nVersion : 1.1.1<br \/>\nRelease : 21<\/p>\n<p><\/coolcode><\/p>\n<p>\u53ef\u4ee5\u5f97\u77e5 \u8be5\u8f6f\u4ef6\u7684\u7248\u672c\u4e3a1.1.1, Release \u53f7\u662f21\uff0c\u56e0\u6b64\u5b83\u7684\u5305\u540d\u9ed8\u8ba4\u5c31\u662f\u201ctest_rpm-1.1.1-21\u201d\u3002<br \/>\n\u5f53 version \u8fdb\u884c\u5347\u7ea7\uff0c\u6216\u8005 Release \u53f7\u8fdb\u884c\u5347\u7ea7\u540e\uff0c\u65b0\u7248\u672c\u7684 RPM \u5c31\u53ef\u4ee5\u5728\u8001\u7684\u7248\u672c\u4e0a\u505a\u5347\u7ea7\u4e86\uff0c\u800c\u4e14 rpm \u5b89\u88c5\u547d\u4ee4\u4f1a\u68c0\u67e5\u7248\u672c\u53f7\uff0c\u7136\u540e\u786e\u5b9a\u662f\u5426\u80fd\u591f\u5347\u7ea7\u3002<br \/>\n\u6709\u65f6\u5019\uff0c\u5728\u5236\u4f5crpm\u5305\u65f6,\u6709\u7684\u4eba\u4f1a\u91c7\u7528 spec\u4e2d\u7684 \u201cEpoch\u201d \u8fd9\u4e2a\u5b57\u6bb5\u6765\u63a7\u5236\u7248\u672c\uff0c\u4e0d\u8fc7\u8fd9\u4e2a\u5b57\u6bb5\u5374\u662f\u4e00\u4e2a\u795e\u79d8\u6570\u5b57\uff0c\u4ed6\u4f1a\u52a0\u5728\u7248\u672c\u7684\u524d\u9762\uff0c\u7528\u5192\u53f7\u9694\u5f00\uff0c\u6bd4<br \/>\n\u5982 &#8220;99:1.1.1-21&#8221; \u8fd9\u6837\u7684\u4e00\u4e2a\u7248\u672c\u5b57\u7b26\u4e32\uff0c\u548c &#8220;1.2.3-xx&#8221;<br \/>\n\u6765\u6bd4\u8f83\uff0c\u524d\u8005\u59cb\u7ec8\u6bd4\u540e\u8005\u7248\u672c\u9ad8\uff0c\u540e\u8005\u7248\u672c\u7684\u5305\u5c31\u6ca1\u6cd5\u5347\u7ea7\u524d\u8005\u4e86\uff0c\u5f53\u7136\u8fd9\u4e48\u505a\u5e76\u4e0d\u5168\u662f\u4e3a\u4e86\u63a7\u5236\u7248\u672c\u5347\u7ea7\uff0c\u4e3b\u8981\u76ee\u7684\u8fd8\u662f\u505a\u7279\u6b8a\u6807\u8bc6\u7684\u3002<br \/>\nrpm \u7684\u57fa\u7840\u4ecb\u7ecd\u90e8\u5206\u5148\u5230\u8fd9\u91cc\u3002<\/p>\n<h2>rpm \u6587\u4ef6\u683c\u5f0f<\/h2>\n<p>\u505a\u8fc7\u7f51\u7edc\u7a0b\u5e8f\u5f00\u53d1\u6216\u8005\u719f\u6089 wireshark (\u6216\u8005 tcpdump)\u7684\u540c\u5b66\u80af\u5b9a\u90fd\u5bf9\u7f51\u7edc\u62a5\u6587\u6587\u4ef6\u6bd4\u8f83\u719f\u6089\uff0c\u6211\u4eec\u90fd\u77e5\u9053\uff0c\u7f51\u7edc\u62a5\u6587\u6587\u4ef6\u90fd\u6709\u56fa\u5b9a\u7684\u683c\u5f0f\uff0c\u6216\u8005\u6211\u89c9\u5f97\u53eb\u201c\u534f\u8bae\u201d\u66f4\u5bb9\u6613\u7406\u89e3\u3002<br \/>\n\u8fd9\u4e9b\u534f\u8bae\u662f\u4eba\u4e3a\u5b9a\u4e0b\u6765\u7684\uff0c\u544a\u77e5\u5927\u5bb6\uff1a\u6211\u4eec\u8fd9\u4e2a\u6587\u4ef6\u524d\u9762\u591a\u5c11\u6bd4\u7279\u5199\u4ec0\u4e48\u5185\u5bb9\uff0c\u4e2d\u95f4\u54ea\u4e2a\u6570\u636e\u7ed3\u6784\u8868\u793a\u4ec0\u4e48\u610f\u601d\uff0c\u540e\u9762\u90a3\u4e2a\u5b57\u6bb5\u53c8\u4ee3\u8868\u4ec0\u4e48\u3002\u3002\u603b\u4e4b\uff0c\u901a\u8fc7\u8fd9\u4e48\u4e00\u79cd \u901a\u544a\u7684\u65b9\u5f0f\u5411\u4f17\u751f\u544a\u77e5\uff0c\u5982\u679c\u4f60\u8981\u53c2\u4e0e\u5230\u8fd9\u79cd\u683c\u5f0f\u7684\u6570\u636e(\u6216\u8005\u6587\u4ef6)\u4e2d\u6765\uff0c\u5c31\u5fc5\u987b\u6309\u7167\u6211\u8bf4\u7684\u683c\u5f0f(\u534f\u8bae)\u53bb\u8bfb\u5199\uff0c\u53ea\u6709\u8fd9\u6837\uff0c\u624d\u80fd\u591f\u8bfb\u53d6\u5230\u6b63\u786e\u7684\u6570\u636e\uff0c\u6216\u8005 \u5199\u6210\u4e00\u4e2a\u6b63\u786e\u683c\u5f0f\uff08\u80fd\u88ab\u522b\u4eba\u8bc6\u522b\uff09\u7684\u6587\u4ef6\u3002<\/p>\n<p>\u62a5\u6587\u6587\u4ef6\u4e3a\u5927\u5bb6\u719f\u77e5\uff0c\u6211\u4eec\u5c31\u4ece\u62a5\u6587\u6587\u4ef6\u7684\u4f8b\u5b50\u5f00\u59cb\u3002\u4e0b\u9762\u662f\u7528 wireshark \u6293\u53d6\u7684\u4e00\u4e2a\u6570\u636e\u5305\uff0c\u7528 wireshark \u6253\u5f00\u5e76\u67e5\u770b\u8be5\u6587\u4ef6\uff0c\u80fd\u591f\u6e05\u6670\u770b\u5230\u6309\u7167\u62a5\u6587\u6587\u4ef6\u534f\u8bae\u89e3\u6790\u540e\u7684\u6570\u636e\u5305\u6587\u4ef6\u7684\u5404\u4e2a\u5b57\u6bb5\uff1a<\/p>\n<p><coolcode lang=\"python\" linenum=\"off\"><\/p>\n<p>\u94fe\u8def\u5c42<br \/>\nIP\u5c42<br \/>\nTCP\u5c42<br \/>\nFTP\u5c42<\/p>\n<p><\/coolcode><\/p>\n<p>\u6bcf\u5c42\u7684\u5404\u4e2a\u5b57\u6bb5\u90fd\u80fd\u770b\u5230\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<figure id=\"attachment_41\" aria-describedby=\"caption-attachment-41\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/tcp.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-41 \" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/tcp-300x85.jpg\" width=\"300\" height=\"85\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/tcp-300x85.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/tcp.jpg 667w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-41\" class=\"wp-caption-text\">TCP\/IP\u534f\u8bae\u5c42\u8bf4\u660e\u56fe<\/figcaption><\/figure>\n<p>\u4e4b\u6240\u4ee5 wireshark \u80fd\u591f\u5c55\u793a\u51fa\u6765\u62a5\u6587\u7684\u6bcf\u4e2a\u5b57\u6bb5\uff0c\u56e0\u4e3a\u5b83\u662f\u6309\u7167\u7f51\u7edc\u62a5\u6587\u7684\u534f\u8bae\u683c\u5f0f\u5bf9\u8be5\u6587\u4ef6\u8fdb\u884c\u4e86\u89e3\u6790\uff0c\u5bf9\u4e8e rpm \u6587\u4ef6\u800c\u8a00\uff0c\u5b58\u50a8\u539f\u7406\u4e5f\u662f\u4e00\u6837\u7684\uff0c\u77e5\u6653\u4e86\u6587\u4ef6\u7684\u6570\u636e\u683c\u5f0f\uff0c\u7136\u540e\u9010\u4e2a\u89e3\u6790\uff0c\u5c31\u80fd\u62ff\u5230\u4f60\u60f3\u8981\u7684\u4fe1\u606f\uff0crpm \u547d\u4ee4\u4e2d\u7684\u5927\u90e8\u5206\u529f\u80fd\uff0c\u90fd\u662f\u8fd9\u6837\u5b9e\u73b0\u7684\u3002<\/p>\n<p>\u4e0b\u9762\uff0c\u6211\u4eec\u770b\u770b rpm \u7684\u6587\u4ef6\u683c\u5f0f\u3002<br \/>\n\u5c31\u50cf\u62a5\u6587\u6587\u4ef6\u7531 mac \u5c42\uff0cip \u5c42\uff0ctcp\/udp\/tcp\u5c42\uff0chttp\/snmp \u5c42\u8fd9\u4e9b\u4fe1\u606f\u5757\u7ec4\u6210\u4e00\u6837\uff0c\u4e00\u4e2a rpm \u6587\u4ef6\u7531\u4e00\u4e0b\u51e0\u79cd\u6570\u636e\u5757\u7ec4\u6210:<br \/>\n<strong>lead<\/strong><br \/>\n<strong> signature<\/strong><br \/>\n<strong> header<\/strong><br \/>\n<strong> archive<\/strong><br \/>\n\u5728 \u4e00\u4e2a rpm \u6587\u4ef6\u4e2d\uff0c\u4e0a\u9762\u8fd9\u56db\u79cd\u6570\u636e\u5143\uff0c\u4f1a\u88ab\u5305\u542b\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\uff0c\u5176\u4e2d\u6bcf\u4e2a\u6570\u636e\u5143\u4e2d\u53c8\u6709\u81ea\u5df1\u7684\u6570\u636e\u683c\u5f0f\uff0c\u8fd9\u6837\uff0c\u4e00\u5c42\u5c42\u7684\u5b58\u50a8\u534f\u8bae\uff0c\u5c31\u6784\u6210\u4e86\u4e00\u4e2a rpm \u6587\u4ef6\u3002<\/p>\n<p>\u9996\u5148\u770b Lead \u4fe1\u606f\u3002<\/p>\n<p>rpm-devel \u8fd9\u4e2a\u5305\u4e2d \u7684\u6587\u4ef6<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>\/usr\/include\/rpm\/rpmlib.h<\/p>\n<p><\/coolcode><\/p>\n<p>\u4e2d\u5bf9 rpmlead \u662f\u5982\u662f\u5b9a\u4e49\u7684:<\/p>\n<p><coolcode lang=\"php\" ><\/p>\n<p>unsigned char magic[4];<br \/>\nunsigned char major;<br \/>\nunsigned char minor;<br \/>\nshort type;<br \/>\nshort archnum;<br \/>\nchar name[66];<br \/>\nshort osnum;<br \/>\nshort signature_type; \/*!&lt; Signature header type (RPMSIG_HEADERSIG) *\/<br \/>\n\/*@unused@*\/ char reserved[16]; \/*!&lt; Pad to 96 bytes &#8212; 8 byte aligned! *\/<\/p>\n<p><\/coolcode><\/p>\n<p>\u901a\u8fc7\u5b57\u9762\u610f\u601d\u5927\u6982\u80fd\u770b\u5230\u5176\u4e2d\u7684\u610f\u601d\uff0c\u8fd9\u4e2a\u7ed3\u6784\u4f53\u4e2d\u5305\u542b\u4e86\u4e00\u4e2a\u8f6f\u4ef6\u5305\u7684\u540d\u5b57\uff0c\u9002\u5408\u5b89\u88c5\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\uff0c \u9002\u5408\u7684\u5e73\u53f0\u4fe1\u606f\uff0c\u5305\u7c7b\u578b(\u4e8c\u8fdb\u5236\u5305\u8fd8\u662f\u6e90\u7801\u5305)\u3002<\/p>\n<p>\u524d\u56db\u4e2a\u5b57\u8282 magic,\u4f5c\u4e3a\u6807\u8bc6\u7b26\uff0c \u8868\u793a\u8fd9\u4e2a\u6587\u4ef6\u662f\u5426\u662frpm\u6587\u4ef6\uff0cfile \u547d\u4ee4\u548c rpm \u547d\u4ee4\u90fd\u662f\u9760\u8fd9\u56db\u4e2a\u5b57\u8282\u6765\u5224\u65ad\u6587\u4ef6\u7c7b\u578b\u7684<br \/>\n\u6bd4\u5982\u8fd0\u884c\u547d\u4ee4:<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>file test-rpm-1.1.1-15.x86_64.rpm<\/p>\n<p><\/coolcode><\/p>\n<p>\u8f93\u51fa\u5982\u4e0b\u4fe1\u606f\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>test-rpm-1.1.1-15.x86_64.rpm: RPM v3 bin i386 test-rpm-1.1.1-15<\/p>\n<p><\/coolcode><\/p>\n<p>\u8fd9\u4e2a\u6587\u4ef6\u7c7b\u578b\u7684\u8bc6\u522b\u65b9\u6cd5\uff0c\u5c31\u662f\u4ece lead \u4e2d\u83b7\u53d6magic \u7684\u503c\u6765\u5224\u65ad\u7684\u3002<\/p>\n<p>===============================================================================================<br \/>\n\u76ee\u524d\uff0crpm\u6587\u4ef6\u4e2d\u8fd9\u4e2amagic \u6570\u7ec4\u7684\u503c\u662f \u201cedab eedb&#8221;\uff0c \u53ef\u4ee5\u901a\u8fc7 ultraedit \u6253\u5f00\u4e00\u4e2aRPM \u6587\u4ef6 \u67e5\u770b\u524d\u56db\u4e2a\u5b57\u8282\uff0c\u5982\u56fe\u793a:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-45 aligncenter\" alt=\"1\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/1-300x85.jpg\" width=\"300\" height=\"85\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/1-300x85.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/1.jpg 650w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\u63a5\u4e0b\u6765\u4e24\u4e2a\u5b57\u8282 major \u548c minor \u7528\u6765\u6807\u8bc6 rpm \u6587\u4ef6\u7684\u7248\u672c\uff08\u662frpm\u683c\u5f0f\u7684\u7248\u672c\uff0c\u800c\u4e0d\u662frpm\u5305\u7684\u7248\u672c\uff09\uff0c\u8fd9\u4e2a\u548c TCP\/IP \u534f\u8bae\u4e2d\u7684 version \u5b57\u6bb5\u4f5c\u7528\u7c7b\u4f3c\u3002<\/p>\n<p>\u5728 rpm \u6587\u4ef6\u4e2d\u80fd\u770b\u5230\u7684\u5927\u591a\u6570version\u7684\u503c\u90fd\u662f<\/p>\n<p><coolcode lang=\"php\"><\/p>\n<p>major = 3<br \/>\nminor = 0<\/p>\n<p><\/coolcode><\/p>\n<p>\u4e5f\u5c31\u662f 3.0 \u7248\u672c\u7684 RPM \u6587\u4ef6\uff0c\u5728\u4e0a\u56fe\u4e2d\u53ef\u4ee5\u770b\u5230\u8fd9\u4e00\u70b9\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u662f rpm \u6587\u4ef6\u7684\u7c7b\u578b\u5b57\u6bb5 type\uff0c0 \u8868\u660e\u662f\u4e8c\u8fdb\u5236 rpm \u6587\u4ef6\uff0c1 \u8868\u660e\u662f\u6e90\u7801\u6587\u4ef6\u3002<\/p>\n<p>\u4e0b\u6765\u7684 archnum \u6807\u8bc6\u8f6f\u4ef6\u5305\u5c06\u8981\u5b89\u88c5\u7684\u5e73\u53f0\u67b6\u6784\u4fe1\u606f\uff0c1 \u6807\u8bc6 i368, \u5728\u6700\u65b0\u7684 rpm version 3.0 \u4e2d\u770b\u5230\u7684 \u8fd9\u4e2a\u5b57\u6bb5\u5728 x86_64, noarch \u548c i386 \u4e2d\u90fd\u662f0\uff0c\u53ef\u80fd\u5df2\u7ecf\u4e0d\u7528\u8fd9\u4e2a\u5b57\u6bb5\u4e86\uff0c\u800c\u662f\u91c7\u7528header\u6765\u5b58\u50a8\u3002<\/p>\n<p>66\u4e2a\u5b57\u7b26\u7684 name \u7528\u6765\u5b58\u50a8\u8f6f\u4ef6\u5305\u7684\u540d\u79f0\u3002<br \/>\nosnum \u662f\u6807\u8bc6 \u64cd\u4f5c\u7cfb\u7edf\u7684\uff0c 1 \u6807\u8bc6\u662f Linux\uff0c2 \u662f IRIX\uff0c\u8fd9\u4e9b\u5bf9\u5e94\u7684\u5e38\u91cf\u5b9a\u4e49\u80fd\u5728\u6587\u4ef6<\/p>\n<p><coolcdoe lang=\"php\"><\/p>\n<p>\/usr\/lib\/rpm\/rpmrc<\/p>\n<p><\/coolcode?\n\n\u4e2d\u770b\u5230\uff1a\n\n<coolcode lang=\"shell\" ><\/p>\n<p>os_canon: Linux: Linux 1<br \/>\nos_canon: IRIX: Irix 2<br \/>\n# This is wrong<br \/>\nos_canon: SunOS5: solaris 3<br \/>\nos_canon: SunOS4: SunOS 4<br \/>\nos_canon: AmigaOS: AmigaOS 5<br \/>\nos_canon: AIX: AIX 5<br \/>\nos_canon: HP-UX: hpux10 6<br \/>\nos_canon: OSF1: osf1 7<br \/>\nos_canon: osf4.0: osf1 7<br \/>\nos_canon: osf3.2: osf1 7<br \/>\nos_canon: FreeBSD: FreeBSD 8<br \/>\nos_canon: SCO_SV: SCO_SV3.2v5.0.2 9<br \/>\nos_canon: IRIX64: Irix64 10<br \/>\nos_canon: NEXTSTEP: NextStep 11<br \/>\nos_canon: BSD_OS: bsdi 12<br \/>\nos_canon: machten: machten 13<br \/>\nos_canon: CYGWIN32_NT: cygwin32 14<br \/>\nos_canon: CYGWIN32_95: cygwin32 15<br \/>\nos_canon: UNIX_SV: MP_RAS: 16<br \/>\nos_canon: MiNT: FreeMiNT 17<br \/>\nos_canon: OS\/390: OS\/390 18<br \/>\nos_canon: VM\/ESA: VM\/ESA 19<\/p>\n<p><\/coolcode><\/p>\n<p>signature_type \u5b57\u6bb5\u6807\u8bc6\u4e86\u4e0b\u4e00\u4e2a \u6570\u636e\u5757 signature \u7684\u7c7b\u578b\uff0c\u5728 rpm version 3.0 \u4e2d\uff0c\u8fd9\u4e2a\u53d8\u91cf\u7684\u503c\u662f 5.<\/p>\n<p><b>\u5934\u7ed3\u6784\u4f53 header structure<\/b><\/p>\n<p>\u4ece \u4e0a\u9762 \u8bb2\u5230\u7684 lead \u7ed3\u6784\u4f53\u53ef\u4ee5\u77e5\u9053\uff0clead \u8fd9\u4e2a\u7ed3\u6784\u4f53\u4ece\u7f16\u7a0b\u89d2\u5ea6\u6765\u6765\u8bb2\uff0c\u5f88\u597d\u7528\uff0c\u8981\u8bfb\u53d6\u6210\u5458\uff0c\u4f60\u53ea\u9700\u8981\u7528<\/p>\n<p><coolcode lang=\"c\"><\/p>\n<p>pointer->name<\/p>\n<p><\/coolcode><\/p>\n<p>\u5373\u53ef\u83b7\u53d6\u5230 rpm \u7684\u540d\u5b57\uff0c\u4f46\u662f\uff0c\u6211\u4eec\u5f88\u5bb9\u6613\u5c31\u4f1a\u53d1\u73b0\uff0cname \u8fd9\u4e2a\u6570\u7ec4\u7684\u957f\u5ea6\u53ea\u80fd\u5bb9\u7eb3 66 \u4e2a\u5b57\u7b26\uff0c\u5982\u679c\u5305\u7684\u540d\u5b57\u957f\u5ea6\u8d85\u8fc766\u4e2a\u5b57\u7b26\uff0c\u600e\u4e48\u529e\u5462\uff1f<br \/>\n\u6709\u7684\u5f00\u53d1\u4eba\u5458\u53ef\u80fd\u4f1a\u8bf4\uff1a\u6211\u628a name \u957f\u5ea6\u6539\u6210 100\uff0c256\uff0c \u8fd9\u6837\u662f\u80fd\u5904\u7406\u5927\u591a\u6570\u5305\uff0c\u4f46\u662f\u4f1a\u5e26\u6765\u4e24\u4e2a\u95ee\u9898:<\/p>\n<p>(1): name \u957f\u5ea6\u4fee\u6539\u4e86\uff0c\u91cd\u65b0\u751f\u6210\u7684 rpm \u547d\u4ee4\uff0c\u4f1a\u53bb\u6309\u7167\u65b0\u7684\u683c\u5f0f\u8bfb\u53d6rpm\u6587\u4ef6\uff0c\u8fd9\u6837\uff0c\u65b0\u7248\u7684rpm\u547d\u4ee4\u5c31\u4e0d\u80fd\u8bfb\u53d6\u8001\u7684\u683c\u5f0f\u7684 rpm \u6587\u4ef6\u4e86\u3002<br \/>\n(2): \u8001\u7248\u672c\u7684rpm \u547d\u4ee4\uff0c\u4e0d\u80fd\u6b63\u786e\u8bfb\u53d6\u65b0\u7248\u672c\u7684rpm\u6587\u4ef6\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u8981\u89e3\u51b3\u6b64\u7c7b\u95ee\u9898\uff0c\u5c31\u9700\u8981\u5c06\u6570\u636e\u7684\u5b58\u50a8\u548c\u8bfb\u53d6\u89c4\u8303\u5316\uff0c\u6216\u8005\u8bf4\uff0c\u9700\u8981\u628a\u8ddf\u4e1a\u52a1\u76f8\u5173\u7684\u6570\u636e\u5728\u534f\u8bae\u4e2d\u5f31\u5316\uff0c\u5728\u534f\u8bae\u4e2d\u53ea\u89c1\u534f\u8bae\uff0c\u4e0d\u89c1\u4e1a\u52a1\u76f8\u5173\u7684\u6570\u636e\u3002<br \/>\n\u6211\u60f3\uff0c\u8fd9\u4e5f\u662f\u8f6f\u4ef6\u8bbe\u8ba1\u4e4b\u9053\u5427\uff0c\u5de5\u5177\u548c\u4e1a\u52a1\u5206\u5f00\uff0c\u624d\u80fd\u7075\u6d3b\u6269\u5c55\uff0c\u7279\u522b\u662f\u901a\u8baf\u7a0b\u5e8f\u4e4b\u7c7b\u7684\u5e94\u7528,\u5c24\u4e3a\u91cd\u89c6\u8fd9\u4e00\u70b9\u3002<\/p>\n<p>rpm \u6587\u4ef6\u4e2d\u4e3a\u4e86\u89e3\u51b3\u6570\u636e\u7edf\u4e00\u8bfb\u53d6\u548c\u5b58\u50a8\u7684\u9700\u6c42\uff0c\u5f15\u5165\u4e86 \u5934\u7ed3\u6784\u4f53 (header structure),\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\uff0c\u53ef\u4ee5\u6709\u4e00\u4e2a\u6216\u8005\u591a\u4e2a header structure, \u800c\u5728 rpm \u6587\u4ef6\u4e2d<br \/>\n\u53ea\u6709\u4e24\u4e2aheader structure,\u4e00\u4e2a\u662f signature \u6570\u636e\u5757\uff0c\u4e00\u4e2a\u662fheader \u6570\u636e\u5757\u3002<br \/>\n\u6bcf\u4e00\u4e2a header structure \u5305\u542b\u4e09\u90e8\u5206\u5185\u5bb9\uff1a<\/p>\n<p>\u7b2c\u4e00\u90e8\u5206\u53eb\u505a: header structure \u7684\u5934(header), \u7528\u6765\u6807\u8bc6\u4e00\u4e2aheader structrure \u7684\u8d77\u59cb\u4f4d\u7f6e\uff0cheader structure \u7684\u5927\u5c0f\uff0c\u4ee5\u53ca\u5b83\u5305\u542b\u7684\u6570\u636e\u6761\u76ee\u6570\u3002<br \/>\n\u7b2c\u4e8c\u90e8\u5206\u7d27\u8ddf header structure header,\u53eb\u7d22\u5f15 (index) ,index \u5305\u542b\u4e86\u591a\u4e2aindex\u6761\u76ee\uff0c\u5176\u4e2d\u6bcf\u4e2a index \u6761\u76ee\u90fd\u662f\u5bf9\u4e00\u5757\u6570\u636e\u7684\u63cf\u8ff0\uff0c\u6bcf\u4e2aindex\u544a\u8bc9\u4f60\u5b83\u6307\u5411\u7684\u6570\u636e\u662f\u4ec0\u4e48\u6837\u5b50\u7684\uff0c\u5728\u54ea\u91cc\u5b58\u50a8\u7740\uff0c\u6839\u636e index \u5c31\u80fd\u83b7\u53d6\u5230\u8fd9\u4e2aindex\u5bf9\u5e94\u7684\u6570\u636e\u3002<br \/>\n\u7b2c\u4e09\u90e8\u5206\u662f\u5b58\u50a8\u5b57\u6bb5\uff0c\u53eb\u4f5c store, \u5b58\u50a8\u4e86 index \u63cf\u8ff0\u7684\u6570\u636e\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u8fd9\u91cc\u4e4b\u6240\u4ee5\u5f15\u5165 \u5bf9 header structure \u7684\u4ecb\u7ecd, \u662f\u56e0\u4e3a\u5728\u65b0\u7248\u672c\u7684 rpm \u4e2d\uff0cheader structure \u5df2\u7ecf\u5728\u4f7f\u7528\u4e86\uff0c\u4e3a\u4e86\u4fdd\u6301\u6587\u7ae0\u903b\u8f91\u7684\u81ea\u7136\u903b\u8f91\u6027(\u4ecelead\u53d1\u5c55\u5230header structure)\uff0c\u6211\u4eec\u4e13\u95e8\u82b1\u4e00\u4e9b\u7bc7\u5e45\u6765\u4ecb\u7ecdheader structure\u3002<\/p>\n<p>\u7ee7\u7eed\u56de\u5230 rpm \u6587\u4ef6\u540e\u9762\u6570\u636e\u5757\u7684\u4ecb\u7ecd\u90e8\u5206\uff1asignature \u548c header\uff0c\u770b\u770b\u8fd9\u4e24\u4e2a header structure \u662f\u600e\u6837\u7684\u3002<\/p>\n<p>\u5728\u4e00\u4e2a rpm \u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e2a header structure \u5f00\u59cb\u90fd\u662f\u7528\u4e09\u4e2a\u5b57\u8282\u7684\u795e\u79d8\u6570\u5b57\u5f00\u59cb &#8220;8E AD E8&#8221;,<\/p>\n<p>\u800c\u4e14\u524d\u6587\uff0c\u6211\u5df2\u7ecf\u4ecb\u7ecd\u8fc7\u4e86<br \/>\n\uff0c\u6bcf\u4e2a rpm \u6709\u4e24\u4e2a header structure&#8211; signature \u548c header, \u56e0\u6b64\uff0c\u4e0d\u59a8\u6253\u5f00\u4e00\u4e2arpm\u6587\u4ef6\u770b\u770b\uff0c\u4ee5\u4e0b\u9762\u7684 rpm \u4e3a\u4f8b, \u5982\u56fe:<br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-46\" alt=\"2\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/2-300x113.jpg\" width=\"300\" height=\"113\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/2-300x113.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/2.jpg 735w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u80fd\u591f\u770b\u5230\u8fd9\u4e24\u4e2a\u795e\u79d8\u6570\u5b57\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u6211\u4eec\u7684\u4e24\u4e2a header structure \u90fd\u88ab\u627e\u5230\u4e86\u3002<br \/>\n\u63a5\u7740\u5f80\u4e0b\u5206\u6790\u3002<\/p>\n<p><b>header structure \u4e4b header <\/b><\/p>\n<p>\u5728 \u4e09\u5b57\u8282\u7684\u795e\u79d8\u6570\u5b57\u4e4b\u540e\uff0c\u662f 1 \u4e2a\u5b57\u8282\u7684\u7248\u672c\u53f7(\u4e3a1)\uff0c\u7136\u540e\u662f4\u4e2a\u5b57\u8282\u7684\u4fdd\u7559\u5b57\uff0c\u5728\u4fdd\u7559\u5b57\u4e4b\u540e\uff0c\u662f4\u4e2a\u5b57\u8282\u7684\u6574\u6570\uff0c \u8868\u793a\u5728\u8be5header structure \u4e2d\u6709\u591a\u5c11\u4e2a\u7d22\u5f15\u9879\uff0c\u4e5f\u5c31\u662f\u8bf4\u6709\u591a\u5c11\u4e2aindex, \u63a5\u4e0b\u6765\u76844\u4e2a\u5b57\u8282\u6574\u6570\uff0c\u6807\u8bc6\u5728\u8be5header structure \u4e2d\u6709\u591a\u5c11\u5b57\u8282\u7684\u6570\u636e\u3002 \u8fd9\u4e9b\uff0c\u5728\u4e0a\u56fe\u90fd\u80fd\u770b\u5230\u3002<\/p>\n<p>header structure \u5df2\u7ecf\u5f88\u6e05\u695a\u4e86\uff0c\u4f46\u662f\u8fd8\u6709\u4e24\u4e2a\u6982\u5ff5\u6ca1\u6e05\u695a\uff0c\u4e00\u4e2a\u662f index, \u4e00\u4e2a\u662f store,\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u6765\u5256\u6790\u8fd9\u4e24\u4e2a\u549a\u549a\u3002<\/p>\n<p><b>header structure \u4e4b index <\/b><\/p>\n<p>\u6bcf\u4e2a index \u6709 16\u4e2a \u5b57\u8282\u7684\u5b58\u50a8\u7a7a\u95f4\uff0c\u524d\u56db\u4e2a\u5b57\u8282\u6574\u6570\u662f\u4e00\u4e2a Tag\uff0c\u8868\u660e\u8be5 index \u6307\u5411\u7684\u6570\u636e\u662f\u4ec0\u4e48\u7c7b\u578b\u7684,\u5173\u4e8e\u8fd9\u6bb5\u63cf\u8ff0\uff0c\u539f\u6587\u662f:<\/p>\n<p><coolcode lang=\"python\"  linenum=\"off\"><\/p>\n<p>The first four bytes contain a tag \u2014 a numeric value that identifies what type of data is pointed to by the entry. The tag values change according to the header structure&#8217;s position in the RPM file<\/p>\n<p><\/coolcode><\/p>\n<p>\u8fd9\u4e2a\u5f88\u5bb9\u6613\u8ba9\u4eba\u8bef\u89e3\u4e3a\u662f\uff0c\u8fd9\u4e2a\u7c7b\u578b\u662f \u6574\u5f62\uff0c\u5b57\u7b26\u4e32\uff0c\u6216\u8005\u6570\u7ec4\uff0c\u5176\u5b9e\u4e0d\u662f\uff0c\u8fd9\u91cc\u7684 \u201cTYPE\u201d \u5176\u5b9e\u5c31\u662f\u6211\u4eec\u901a\u5e38\u8bf4\u7684\u53d8\u91cf\u540d\u79f0, \u5305\u62ec\u4e86\u901a\u8fc7\u547d\u4ee4<\/p>\n<p><coolcode lang=\"shell\"><\/p>\n<p> rpm -qpi xxoo.rpm <\/p>\n<p><\/coolcode><\/p>\n<p>\u80fd\u591f\u770b\u5230\u7684\u6240\u6709\u4fe1\u606f\u3002<br \/>\nTag \u7684\u503c\u5b9a\u4e49\u5217\u8868\u5982\u4e0b\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>#define RPMTAG_NAME 1000<br \/>\n#define RPMTAG_VERSION 1001<br \/>\n#define RPMTAG_RELEASE 1002<br \/>\n#define RPMTAG_SERIAL 1003<br \/>\n#define RPMTAG_SUMMARY 1004<br \/>\n#define RPMTAG_DESCRIPTION 1005<br \/>\n#define RPMTAG_BUILDTIME 1006<br \/>\n#define RPMTAG_BUILDHOST 1007<br \/>\n#define RPMTAG_INSTALLTIME 1008<br \/>\n#define RPMTAG_SIZE 1009<\/p>\n<p><\/coolcode><\/p>\n<p>\u63a5\u4e0b\u6765\u76844\u4e2a\u5b57\u8282\u6574\u6570\uff084-7\uff09\uff0c\u624d\u662f\u524d4\u4e2a\u5b57\u8282\u4ee3\u8868\u7684\u53d8\u91cf\u7684\u7c7b\u578b\uff0c\u6574\u6570\u554a\uff0c\u5b57\u7b26\u4e32\u4e4b\u7c7b\u3002\u3002<br \/>\n\u5b9a\u4e49\u5982\u4e0b(\u5728\u6587\u4ef6 \/usr\/include\/rpm\/header.h \u4e2d\u80fd\u770b\u5230):<\/p>\n<p><coolcode lang=\"php\"><\/p>\n<p>typedef enum rpmTagType_e {<br \/>\n#define RPM_MIN_TYPE 0<br \/>\nRPM_NULL_TYPE = 0,<br \/>\nRPM_CHAR_TYPE = 1,<br \/>\nRPM_INT8_TYPE = 2,<br \/>\nRPM_INT16_TYPE = 3,<br \/>\nRPM_INT32_TYPE = 4,<br \/>\n\/* RPM_INT64_TYPE = 5, &#8212;- These aren&#8217;t supported (yet) *\/<br \/>\nRPM_STRING_TYPE = 6,<br \/>\nRPM_BIN_TYPE = 7,<br \/>\nRPM_STRING_ARRAY_TYPE = 8,<br \/>\nRPM_I18NSTRING_TYPE = 9<br \/>\n#define RPM_MAX_TYPE 9<br \/>\n} rpmTagType;<\/p>\n<p><\/coolcode><\/p>\n<p>STRNG_TYPE \u662f\u7a7a\u5b57\u7b26\u7ed3\u675f\u7684\u5b57\u7b26\u4e32<br \/>\nSTRING_ARRAY_TYPE \u662f STRING_TYPE \u7684\u96c6\u5408\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u7684 4\u5b57\u8282\u7684\u6574\u6570\uff0c\u662f\u8be5 index \u5bf9\u5e94\u7684\u6570\u636e\u5728 store \u6bb5\u7684\u504f\u79fb\u3002<br \/>\n\u6700\u540e12-15\u8fd94\u5b57\u8282\u7684\u6574\u6570\uff0c\u8868\u660e\u4e86\u8be5index\u6307\u5411\u7684\u6570\u636e\uff0c\u6709\u591a\u4e2a\u6570\u636e\u636e\u6761\u76ee\uff0c\u4e3b\u8981\u7528\u4e8e STRING \u548c STRING_ARRY \u7c7b\u578b\uff0cSTRING \u7684\u8bdd\uff0c\u662f1\uff0cSTRING_ARRY\u5c31\u662fSTRING\u7684\u4e2a\u6570\u3002<\/p>\n<p><b>header structure \u4e4bstore<\/b><\/p>\n<p>store \u5c31\u662f \u8be5 header structure \u4e2d\u6570\u636e\u5b58\u50a8\u7684\u5730\u65b9\uff0c\u6709\u51e0\u4e2a\u70b9\u8981\u6ce8\u610f:<\/p>\n<p>(1): \u6bcf\u4e2a STRING \u7c7b\u578b\uff0c\u90fd\u4ee5 \u7a7a\u5b57\u7b26\u7ed3\u5c3e\u3002<br \/>\n(2): \u6574\u6570\u5b58\u50a8\u90fd\u662f\u6309\u7167\u5b83\u7684\u81ea\u7136\u8fb9\u754c\u5b58\u50a8\u7684\u3002 \u4e5f\u5c31\u662f\u8bf4\uff0c64\u4f4d\u7684\u75288\u4e2a\u5b57\u8282\u5b58\u50a8\uff0c16\u4f4d\u7684\u75282\u4e2a\u5b57\u8282\u5b58\u50a8\uff0c32\u4f4d\u7684\u75284\u4e2a\u5b57\u8282\u5b58\u50a8\u7b49\u7b49\u3002<br \/>\n(3): \u6240\u6709\u6570\u636e\u90fd\u662f\u7f51\u7edc\u5b57\u8282\u5e8f\u5b58\u50a8\u7684\u3002<\/p>\n<p>\u63a5\u7740\u6765\u770b\u7531 header structure \u7ec4\u6210\u7684 rpm \u6587\u4ef6\u4e2d\u7684\u4e24\u4e2a\u8981\u7d20\uff1a<br \/>\nsignature \u548c Header<br \/>\nsignature \u548c header \u7684\u672c\u8d28\u90fd\u662f header structure\uff0c\u6240\u4ee5\u5c06\u5176\u653e\u5728\u4e00\u8d77\u6765\u4ecb\u7ecd\u3002<\/p>\n<p><signature><\/p>\n<p> rpm \u4e2d\u7684\u7b2c\u4e00\u4e2aheader structure\u662fsignature\u3002\u5728signature\u4e2d\u5b58\u50a8\u4e86 rpm \u5305\u7684\u6821\u9a8c\u4fe1\u606f\uff0c\u5982 md5sum\u3001sha1\u503c\u7b49\uff0c\u8fd9\u4e2aheader structure\u7684\u5934\u4fe1\u606f\u4e2d\u67095\u4e2aindex, \u5982\u4e0b\u6240\u793a: <\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>00006-00000096: 8E AD E8 01 00 00 00 00  00 00 00 05 00 00 00 54 ;<br \/>\n00007-00000112: 00 00 00 3E 00 00 00 07  00 00 00 44 00 00 00 10 ;<br \/>\n00008-00000128: 00 00 01 0D 00 00 00 06  00 00 00 00 00 00 00 01 ;<br \/>\n00009-00000144: 00 00 03 E8 00 00 00 04  00 00 00 2C 00 00 00 01 ;<br \/>\n00010-00000160: 00 00 03 EC 00 00 00 07  00 00 00 30 00 00 00 10 ;<br \/>\n00011-00000176: 00 00 03 EF 00 00 00 04  00 00 00 40 00 00 00 01 ; <\/p>\n<p><\/coolcode><\/p>\n<p>===========================================================================<\/p>\n<p>\u7b2c\u4e00\u884c\u662f \u6807\u51c6\u5934\uff0c\u4ece\u7b2c\u4e8c\u884c\u5f00\u59cb\u662f 5 \u4e2a index, \u6bcf\u884c\u4e00\u4e2aindex\uff0c\u6bcf\u4e2a index \u9879\u90fd\u662f4\u4e2a32\u4f4d\u7684\u6574\u6570\uff0c\u5206\u522b\u662f\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><\/p>\n<p>TAG (0-3)<br \/>\nTYPE (4-7)<br \/>\nOFFSET (8-11)<br \/>\nCOUNT(12-15)<\/p>\n<p><\/coolcode><\/p>\n<p>\u6211\u4eec\u6765\u770b\u4e0b\u8fd95\u4e2aindex\u3002<br \/>\nsignature\u4e2d\u7684TAG\u540d\u79f0\u548c\u6574\u6570\u5bf9\u5e94\u8868\u53ef\u4ee5\u5728\u6587\u4ef6<\/p>\n<p><coolcode lang=\"c\"><br \/>\n\/usr\/include\/rpm\/rpmlib.h<br \/>\n<\/coolcode><\/p>\n<p>\u4e2d\u627e\u5230\uff1a<\/p>\n<p><coolcode lang=\"php\" ><br \/>\n\/** \\ingroup signature<br \/>\n * Tags found in signature header from package.<br \/>\n *\/<br \/>\nenum rpmtagSignature {<br \/>\n    RPMSIGTAG_SIZE      = 1000, \/*!< internal Header+Payload size in bytes. *\/\n    RPMSIGTAG_LEMD5_1   = 1001, \/*!< internal Broken MD5, take 1 @deprecated legacy. *\/\n    RPMSIGTAG_PGP       = 1002, \/*!< internal PGP 2.6.3 signature. *\/\n    RPMSIGTAG_LEMD5_2   = 1003, \/*!< internal Broken MD5, take 2 @deprecated legacy. *\/\n    RPMSIGTAG_MD5       = 1004, \/*!< internal MD5 signature. *\/\n    RPMSIGTAG_GPG       = 1005, \/*!< internal GnuPG signature. *\/\n    RPMSIGTAG_PGP5      = 1006, \/*!< internal PGP5 signature @deprecated legacy. *\/\n    RPMSIGTAG_PAYLOADSIZE = 1007,\/*!< internal uncompressed payload size in bytes. *\/\n    RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     \/*!< internal Broken SHA1, take 1. *\/\n    RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     \/*!< internal Broken SHA1, take 2. *\/\n    RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    \/*!< internal sha1 header digest. *\/\n    RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     \/*!< internal DSA header signature. *\/\n    RPMSIGTAG_RSA       = RPMTAG_RSAHEADER      \/*!< internal RSA header signature. *\/\n};\n\n<\/coolcode><\/p>\n<p>  \u4ece\u4e0a\u9762\u7684\u4e94\u4e2aindex\u4e2d\u53ef\u4ee5\u770b\u5230\uff0c\u4f8b\u5b50\u4e2d\u6253\u5f00\u7684rpm\u6587\u4ef6\u7684signature\u4e2d\u7684index\u7684TAG\u53d6\u503c\u5206\u522b\u5982\u4e0b(\u7b2c7\u884c\u523011\u884c)\u3002<br \/>\n\u7b2c\u4e00\u4e2aindex\u7684TAG\u662f62\uff08\u5341\u516d\u8fdb\u523600 3E)\uff0c\u5bf9\u5e94\u7684TAG\u4e3aHEADER_SIGNATURES\u3002<br \/>\n\u7b2c\u4e8c\u4e2aindex\u7684TAG\u662f269 (\u5341\u516d\u8fdb\u523601 0D), \u5bf9\u5e94\u7684TAG\u4e3aRPMTAG_SHA1HEADER\u3002<br \/>\n\u7b2c\u4e09\u4e2aindex\u7684TAG\u662f1000\uff08\u5341\u516d\u8fdb\u523603 E8\uff09\uff0c\u5bf9\u5e94\u7684TAG\u4e3aRPMSIGTAG_SIZE\u3002<br \/>\n\u7b2c\u56db\u4e2aindex\u7684TAG\u662f1004\uff08\u5341\u516d\u8fdb\u523603 EC\uff09\uff0c\u5bf9\u5e94\u7684TAG\u4e3aRPMSIGTAG_MD5\u3002<br \/>\n\u7b2c\u4e94\u4e2aindex\u7684TAG\u662f1007\uff08\u5341\u516d\u8fdb\u5236 03 EF\uff09\uff0c\u5bf9\u5e94TAG\u4e3aRPMSIGTAG_PAYLOADSIZE\u3002<\/p>\n<p>\u4e8b\u5b9e\u4e0a\uff0c\u5927\u591a\u6570rpm \u6587\u4ef6\u7684\u8fd95\u4e2aindex \u90fd\u662f\u76f8\u540c\u7684\uff08\u4e3a\u751a\u8fd8\u9700\u8981\u7814\u7a76\uff0c\u76ee\u524d\u770b\u5230\u73b0\u8c61\u662f\u8fd9\u6837\u7684\uff09\u3002<\/p>\n<p>signature\u8fd9\u4e2aheader structure \u5b58\u50a8\u4e86\u8f6f\u4ef6\u5305\u7684\u6821\u9a8c\u4fe1\u606f\u7b49\u76f8\u5173\u6570\u636e\uff0c\u800cname,version\u7b49\u5b57\u6bb5\u90fd\u4e0d\u5728\u8fd9\u4e2a\u6570\u636e\u5757\u4e2d\u5b58\u50a8\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u5728\u6b64\u53ea\u901a\u8fc7\u5b9e\u9645\u6570\u636e\u6765\u9a8c\u8bc1<\/p>\n<p>rpm \u8f6f\u4ef6\u5305\u7684\u7ec4\u6210\u662f\u5426\u4e0e\u534f\u8bae\u63cf\u8ff0\u4e00\u81f4\u5373\u53ef\uff0c\u800c\u4e0d\u5fc5\u5173\u5fc3\u6bcf\u4e2aTAG\u7684\u4f5c\u7528\u3002\u5bf9\u8fd9\u5757\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u4ee5\u53c2\u8003\u76f8\u5173\u6587\u6863\u3002<\/p>\n<p>===============================================================<\/p>\n<p>\u56fe6\u548c\u56fe7\u6240\u793a\u662f\u4e24\u4e2a rpm \u7684signature\u6bb5\u622a\u56fe\u3002<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/6-300x167.jpg\" alt=\"6\" width=\"300\" height=\"167\" class=\"alignnone size-medium wp-image-105\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/6-300x167.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/6.jpg 447w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe6  rpm \u6587\u4ef6\u683c\u5f0f\uff08\u4e00\uff09<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/7.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/7-300x262.jpg\" alt=\"7\" width=\"300\" height=\"262\" class=\"alignnone size-medium wp-image-106\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/7-300x262.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/7.jpg 525w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe7  rpm \u6587\u4ef6\u683c\u5f0f\uff08\u4e8c\uff09<br \/>\n\u56fe6\u6240\u793a rpm \u7684signature\u6bb5\u67095\u4e2aindex\uff0c\u6570\u636e\u957f\u5ea6\u4e3a0x54\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u56fe\u4e2d\u6309\u7167\u534f\u8bae\u53bb\u8ba1\u7b97\uff0c\u5411\u540e\u8df3\u8fc75\u4e2aindex (5\u4e2a16\u5b57\u8282)\uff0c\u7136\u540e\u518d\u65700x54\u4e2a\u5b57\u8282\uff0cstore\u6bb5\u7ed3\u675f\u3002\u56e0\u4e3a\u662f8\u5b57\u8282\u5bf9\u9f50\uff0c\u6240\u4ee5header\u6bb5\u7684header structure\u4ece4\u5b57\u8282\u4e4b\u540e\u5f00\u59cb\u3002<br \/>\n\u56fe7\u6240\u793a\u60c5\u51b5\u4e5f\u662f\u5982\u6b64\uff0c\u5b83\u7684signature\u67097\u4e2aindex\uff0c\u56e0\u6b64\uff0c\u5148\u8df3\u8fc77\u4e2aindex\u5230\u8fbestore\u6bb5\uff0cstore\u6bb5\u7684\u6570\u636e\u4e3a0xD8\u4e2a\u5b57\u8282\uff0c\u6240\u4ee5\u518d\u5411\u540e\u7edf\u8ba10xD8\u4e2a\u5b57\u8282\uff0c\u5230\u201c00 10\u201d\u5904\u7ed3\u675f\uff0c\u7d27\u63a5\u7740\u5c31\u662f\u5b83\u7684header\u6bb5\u4e86\u3002<\/p>\n<p>2. header<br \/>\n  header\u548csignature\u4e00\u6837\uff0c\u90fd\u662f\u7531header structure\u7ec4\u6210\u7684\uff0cheader\u4e2d\u5b58\u50a8\u4e86 rpm \u5305\u7684\u6240\u6709\u63cf\u8ff0\u4fe1\u606f(\u4e0d\u5305\u62ec\u6570\u636e)\u3002\u8fd8\u4ee5\u4e0a\u9762\u7684 rpm \u4e3a\u4f8b\uff0c\u6211\u4eec\u63a5\u7740\u5206\u6790\u5b83\u7684header\u6bb5:<br \/>\n\u9996\u5148\u770b\u4e0bheader\u6bb5\u7684header(header structure\u7684header,\u800c\u4e0d\u662f rpm \u7684header)\u548cindex\u5185\u5bb9\uff0c\u5982\u56fe 8 \u6240\u793a\u3002<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/8-300x95.jpg\" alt=\"8\" width=\"300\" height=\"95\" class=\"alignnone size-medium wp-image-107\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/8-300x95.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/8.jpg 531w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe8  rpm\u6587\u4ef6\u683c\u5f0f\uff08\u4e09\uff09<br \/>\n\u4ece\u56fe8\u4e2d\u53ef\u4ee5\u770b\u5230\uff0cheader\u4e2d\u5305\u542b\u4e860x31\u4e2a\uff0c\u4e5f\u5c31\u662f49\u4e2aindex\uff0c\u800c\u4e14\u5b83\u7684store\u6bb5\u5360\u636e\u7a7a\u95f4\u4e3a0x02F6\u5b57\u8282\uff0c\u4e5f\u5c31\u662f758\u4e2a\u5b57\u8282\u3002<br \/>\n\u8df3\u8fc7type\u4e3a0x3F\u548c0x64\u8fd9\u4e24\u4e2aindex\u67e5\u770b\u540e\u9762\u7684index\uff0c\u5982\u56fe9\u6240\u793a\u3002<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/9.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/9-300x92.jpg\" alt=\"9\" width=\"300\" height=\"92\" class=\"alignnone size-medium wp-image-112\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/9-300x92.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/9.jpg 570w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe9  rpm \u6587\u4ef6\u683c\u5f0f\uff08\u56db\uff09<br \/>\n\u5728\u504f\u79fb00000320\uff08\u672c\u4e66\u51e1\u6d89\u53ca\u504f\u79fb\u5730\u5740\u7684\u5730\u65b9\uff0c\u90fd\u9ed8\u8ba4\u7528\u5341\u8fdb\u5236\u8868\u793a\uff09\u5904\uff1a0x03 E8 \u5bf9\u5e94\u7684TAG\u4e3a\u5341\u8fdb\u52361000\uff08RPMTAG_NAME\uff09\uff0c\u5bf9\u5e94\u4e8eRPM\u7684\u8f6f\u4ef6\u5305\u540d\u79f0\u3002\u5b83\u7684\u7c7b\u578b\u4e3a0X06\uff08RPM_STRING_TYPE\uff09\uff0c\u504f\u79fb\u5730\u5740\u4e3a\u76f8\u5bf9store\u8d77\u59cb\u4f4d\u7f6e\u4e3a0x02\u7684\u5730\u65b9\uff0c\u53ea\u6709\u4e00\u4e2a\u4e32\uff0c\u5e76\u4e14\u662f\u7a7a\u5b57\u7b26\u7ed3\u5c3e\u3002\u6211\u4eec\u6765\u8ba1\u7b97\u4e00\u4e0b\uff1a<br \/>\n1\uff09 \u4ece\u504f\u79fb00000296\u5904\uff0cindex\u5f00\u59cb\u5b58\u50a8\uff0c\u67090x31\u4e2aindex,\u90a3\u4e48index\u7684\u7ed3\u675f\u4f4d\u7f6e\u5e94\u8be5\u4e3a00000296+0x31*16=00001080\u7684\u524d\u4e00\u4e2a\u4f4d\u7f6e\uff0c\u4e5f\u5c31\u662f\u8bf4\u504f\u79fb\u5730\u574000001080\u4e3astore\u7684\u5f00\u59cb\u4f4d\u7f6e\uff0c\u90a3\u4e48\u504f\u79fb\u4e3a0x2\u65f6\uff0c00001082\u5904\u504f\u79fb\u5c31\u662fRPM\u540d\u79f0\u7684\u5b58\u50a8\u4f4d\u7f6e\uff0c\u5982\u56fe1-10\u6240\u793a\u3002\u4e8b\u5b9e\u8bc1\u660e\uff0c\u5b9e\u9645\u6570\u636e\u4e0e\u6211\u4eec\u7684\u8ba1\u7b97\u7684\u7ed3\u679c\u662f\u4e00\u81f4\u7684\u3002<br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/10.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/10-300x71.jpg\" alt=\"10\" width=\"300\" height=\"71\" class=\"alignnone size-medium wp-image-108\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/10-300x71.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/10.jpg 697w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\u56fe 10  rpm\u6587\u4ef6\u683c\u5f0f\uff08\u4e94\uff09<br \/>\n\u540c\u7406\uff0c0x03E9\u5bf9\u5e94\u7684index\u7684TAG\u4e3a\u5341\u8fdb\u52361001(RPMTAG_VERSION)\uff0c\u7c7b\u578b\u4e3a\u5b57\u7b26\u4e32\uff0c\u504f\u79fb\u4e3a0xB\uff0c\u8d77\u59cb\u4f4d\u7f6e\u4e3a\u504f\u79fb00001091\u5904\uff0c\u4e2a\u6570\u4e3a0x1\uff0c\u5b83\u5728 rpm \u4e2d\u7684\u5b58\u50a8\u4f4d\u7f6e\u5982\u56fe11\u6240\u793a\u3002<\/p>\n<p><a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/11.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/11-300x36.jpg\" alt=\"11\" width=\"300\" height=\"36\" class=\"alignnone size-medium wp-image-109\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/11-300x36.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/11.jpg 675w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe11  rpm \u6587\u4ef6\u683c\u5f0f\uff08\u516d\uff09<\/p>\n<p>\u5173\u4e8eheader\u4e2d rpm \u4fe1\u606f\u7684\u5b58\u50a8\u7ed3\u6784\uff0c\u8fd9\u91cc\u5c31\u4e0d\u518d\u591a\u4e3e\u4f8b\u5b50\u4e86\uff0c\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u4ee5\u81ea\u5df1\u5206\u6790\u3002<br \/>\n\u81f3\u6b64\uff0csignature\u548cheader\u7684\u7ed3\u6784\u5c31\u4ecb\u7ecd\u5b8c\u6210\u4e86\u3002<\/p>\n<p><b> rpm \u4e4barchive <\/b><br \/>\nheader \u4e4b\u540e\u662farchive \u5b57\u6bb5\uff0carchive\u4e2d\u5b58\u50a8\u4e86\u7ec4\u6210 RPM\u5305\u7684\u6240\u6709\u6587\u4ef6\u7684\u5185\u5bb9\uff0c\u53ef\u4ee5\u901a\u8fc7\u6807\u5fd7\u4f4d\u201c1F 8B\u201d\u6765\u627e\u5230\u5b83\u7684\u8d77\u59cb\u4f4d\u7f6e\u3002archive\u662f\u901a\u8fc7 gzip\u7b97\u6cd5\u538b\u7f29\u5b58\u50a8\u7684\u3002<br \/>\n\u4e3a\u4e86\u4fdd\u6301\u5185\u5bb9\u7684\u8fde\u7eed\u6027\uff0c\u63a5\u7740\u4e0a\u4e00\u8282head er\u7684\u5185\u5bb9\u7ee7\u7eed\u5206\u6790\uff0c\u6700\u540e\u4e00\u4e2aindex\u7684\u5185\u5bb9\u5982\u56fe12\u6240\u793a\u3002<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/12.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/12-300x47.jpg\" alt=\"12\" width=\"300\" height=\"47\" class=\"alignnone size-medium wp-image-110\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/12-300x47.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/12.jpg 533w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe12  rpm\u6587\u4ef6\u683c\u5f0f\uff08\u4e03\uff09<br \/>\n\u5b83\u5bf9\u5e94\u7684TAG\u4e3a\u5341\u8fdb\u52361147\uff08RPMTAG_FILECONTEXTS\uff09\uff0c\u7c7b\u578b\u4e3a0x8\uff0c\u5bf9\u5e94\u4e8e\u5b57\u7b26\u4e32\u6570\u7ec4<br \/>\n(RPM_STRING_ARRAY_TYPE)\uff0c\u504f\u79fb\u4e3a0x2B0\u3002\u56e0\u6b64\uff0c\u5b9e\u9645\u7684\u5b58\u50a8\u4f4d\u7f6e\u4e3a00001080 + 0x2B0 = 00001768\uff0c\u5b57\u7b26\u4e32\u4e2a\u6570\u4e3a0x2\u4e2a\uff0c\u6240\u4ee5\uff0c\u6211\u4eec\u53ea\u9700\u8981\u53bb00001768\u504f\u79fb\u5904\u8df3\u8fc7\u4e24\u4e2a\u5b57\u7b26\u4e32\uff0c\u63a5\u7740\u5230\u8fbe\u4e8600001821\u504f\u79fb\u5904\uff0c\u5982\u56fe13\u6240\u793a\u3002<br \/>\n <a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/13.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/13-300x68.jpg\" alt=\"13\" width=\"300\" height=\"68\" class=\"alignnone size-medium wp-image-111\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/13-300x68.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/13.jpg 697w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n\u56fe13  rpm\u6587\u4ef6\u683c\u5f0f<br \/>\n \u4ece\u56fe13\u548c\u4e0a\u9762\u7684\u8ba1\u7b97\u53ef\u4ee5\u77e5\u9053\uff0cheader\u7684store\u7ed3\u675f\u4e8e00001821\u504f\u79fb\u5904\uff0c\u800c\u6839\u636e rpm \u7684header\u6bb5\u7684\u5934(header structure \u4e2d\u7684header)\u4fe1\u606f\u53ef\u4ee5\u77e5\u9053\uff1arpm\u7684header\u4e2d\u7684store\u6bb5\u7684\u5927\u5c0f\u662f0x02F6\uff0c\u4e3a758\u4e2a\u5b57\u8282\uff0c\u800cstore\u7684\u5f00\u59cb\u4f4d\u7f6e\u4e3a00001080\u504f\u79fb\u5904\uff0c\u6240\u4ee5\uff0cstore\u7684\u7ed3\u675f\u4f4d\u7f6e\u5e94\u8be5\u4e3a 00001080+0x02F6=00001838\u5904\u504f\u79fb\u7684\u524d\u4e00\u4e2a\u4f4d\u7f6e\uff0c\u4e5f\u5c31\u662f00001837\u504f\u79fb\u5904\uff0c\u6240\u4ee5\uff0cstore\u5b9e\u9645\u5b58\u50a8\u7684\u6570\u636e\u6bd4index\u544a\u8bc9\u6211\u4eec\u7684\u6570\u636e\u5c11\u4e8616\u5b57\u8282.\u90a3\u4e48\uff0c\u8fd916\u5b57\u8282\u7684\u6570\u636e\u662f\u600e\u4e48\u6765\u7684\u5462\uff1f\u7ecf\u8fc7\u5bf9\u591a\u4e2arpm\u6587\u4ef6\u7684\u5206\u6790\u53d1\u73b0\uff0c\u5728rpm\u6587\u4ef6\u7684header\u5757\u7684store\u7ed3\u675f\u5904\uff0c\u901a\u5e38\u90fd\u586b\u8865\u4e8616\u5b57\u8282\u7684\u6570\u636e(\u8fd916\u5b57\u8282\u7684\u6570\u636e\u770b\u4e0a\u53bb\u5e76\u6ca1\u6709\u4ec0\u4e48\u4f5c\u7528\uff0c\u4e5f\u4e0d\u662f\u5e38\u91cf\u503c)\uff0c\u4e5f\u5c31\u662f\u4ece00001822\u523000001837\u8fd916\u5b57\u8282\u7684\u5185\u5bb9\u3002<br \/>\n\u7d27\u63a5\u7740\uff0c\u4ece00001838\u504f\u79fb\u5904\u5f00\u59cb\uff0c\u662farchive\u7684\u6570\u636e\uff0c\u5173\u952e\u5b57\u201c1F 8B\u201d\u6807\u8bc6\u4e86archive\u7684\u5f00\u59cb\uff0c\u7d27\u6328\u7740\u7684\u201c08\u201d \u8868\u660e\u6570\u636e\u662f\u7528 gzip \u7684\u201cdeflation\u201d\u65b9\u6cd5\u538b\u7f29\u5b58\u50a8\u7684\u3002<br \/>\n\u5982\u679c\u8bfb\u8005\u60f3\u83b7\u53d6\u66f4\u591a\u5173\u4e8erpm\u6587\u4ef6\u6570\u636e\u5b58\u50a8\u7684\u7ec6\u8282\uff0c\u53ef\u4ee5\u53c2\u8003 rpmbuild \u6216\u8005rpm\u547d\u4ee4\u7684\u6e90\u4ee3\u7801\u3002<\/p>\n<p>================================================<\/p>\n<p><b>RPM\u89e3\u6790\u4f8b\u7a0b<\/b><br \/>\n\u7b14\u8005\u57fa\u4e8erpm-devel \u5f00\u53d1\u4e86\u4e00\u4e2aC\u7a0b\u5e8f\uff0c\u7528\u6765\u8bfb\u53d6RPM\u6587\u4ef6\u7684\u57fa\u672c\u4fe1\u606f\u5e76\u4e14\u6253\u5370\u5230\u6807\u51c6\u8f93\u51fa\u3002\u5982\u679c\u4f60\u5bf9\u524d\u9762\u7ae0\u8282\u4ecb\u7ecd\u7684\u77e5\u8bc6\u5df2\u7ecf\u7406\u89e3\u5e76\u4e14\u638c\u63e1\uff0c\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\u5c31\u6bd4\u8f83\u5bb9\u6613\u9605\u8bfb\u4e86\u3002<br \/>\n\u6838\u5fc3\u4ee3\u7801\u7247\u6bb5\u5982\u4e0b:<\/p>\n<p><coolcode lang=\"php\" ><br \/>\n char * readHeaderString (Header header, int_32 tag_id)<br \/>\n    {<br \/>\n              int_32 type;<br \/>\n              void *pointer;<br \/>\n              int_32 data_size;<br \/>\n \/\/\u83b7\u53d6header\u4e2d\u7684\u4e00\u4e2astring<br \/>\n              int header_status = headerGetEntry (header,<br \/>\n   tag_id, &#038;type, &#038;pointer, &#038;data_size);<br \/>\n              if (header_status)<br \/>\n                {<br \/>\n                    if (type == RPM_STRING_TYPE)<br \/>\n                    {<br \/>\n                              return pointer;<br \/>\n                    }<br \/>\n                }<br \/>\n              return NULL;<br \/>\n    }<br \/>\n    int samplerpm (const char *szrpm)<br \/>\n    {<br \/>\n            char g_szname[1024] = {0};<br \/>\n            FD_t fd = Fopen (szrpm, &#8220;r&#8221;);<br \/>\n            memset (g_szname, 0, 1024);<br \/>\n            sprintf (g_szname, &#8220;%s&#8221;, szrpm);<br \/>\n            fflush (stdin);<br \/>\n            fflush (stdout);<br \/>\n              if (!fd)<br \/>\n                {<br \/>\n                          printf (&#8220;open file &#8216;%s&#8217; failed\\n&#8221;, szrpm);<br \/>\n                          return 0;<br \/>\n                }<\/p>\n<p>               struct rpmlead plead;<br \/>\n              int lead = readLead (fd, &#038;plead);\/\/\u8bfb\u53d6lead\u7ed3\u6784\u4f53<br \/>\n              if (lead)<br \/>\n                {<br \/>\n                          printf (&#8220;readLead of &#8216;%s&#8217; failed\\n&#8221;, szrpm);<br \/>\n                          Fclose (fd);<br \/>\n                          return 0;<br \/>\n                }<br \/>\n   \/\/sigType sig_type = plead.signature_type;<br \/>\n   Header header;<br \/>\n  \/\/\u8bfb\u53d6\u7b2c\u4e00\u4e2aheader structure&#8211;signature<br \/>\nrpmRC ret = rpmReadSignature (fd, &#038;header, plead.signature_type);<br \/>\n  if (ret != RPMRC_OK)<br \/>\n   {<br \/>\n          printf (&#8220;rpmReadSignature of &#8216;%s&#8217; failed\\n&#8221;, szrpm);<br \/>\n           Fclose (fd);<br \/>\n           return 0;<br \/>\n   }<br \/>\n\/\/\u8bfb\u53d6\u7b2c\u4e00\u4e2aheader structure&#8211;header<br \/>\n    Header newheader =<br \/>\n     headerRead (fd, (plead.major >= 3) ? HEADER_MAGIC_YES : HEADER_MAGIC_NO);<br \/>\n     if (!newheader)<br \/>\n       {<br \/>\n                  printf (&#8220;headerRead of &#8216;%s&#8217; failed\\n&#8221;, szrpm);<br \/>\n                  Fclose (fd);<br \/>\n                  return 0;<br \/>\n      }<br \/>\n\/\/\u8bfb\u53d6\u5404\u4e2aTAG<br \/>\nconst char *name = readHeaderString (newheader, RPMTAG_NAME);<br \/>\nconst char *version = readHeaderString (newheader, RPMTAG_VERSION);<br \/>\nconst char *release = readHeaderString (newheader, RPMTAG_RELEASE);<br \/>\nconst char *group = readHeaderString (newheader, RPMTAG_GROUP);<br \/>\nconst char *packager = readHeaderString (newheader, RPMTAG_PACKAGER);<br \/>\nif (!group) group = &#8220;NONE_GROUP&#8221;;<br \/>\n   if (!packager) packager = &#8220;NONE_PACKAGER&#8221;;<br \/>\n   printf (&#8220;name:%s\\nversion:%s\\nrelease:%s\\ngroup:%s\\npackager:%s\\n\\n&#8221;,<br \/>\n   name, version, release, group, packager);<br \/>\n          Fclose (fd);<br \/>\n          return 1;<br \/>\n    }<\/p>\n<p><\/coolcode><br \/>\n\u53ef\u6267\u884c\u7a0b\u5e8f\u7684\u7f16\u8bd1\u65b9\u6cd5\u5982\u4e0b:<\/p>\n<p><coolcode lang=\"shell\" ><br \/>\n    gcc test.c -I\/usr\/include\/rpm -lrpm -lrpmdb -lrpmio -lpopt -o test_rpm<br \/>\n<\/coolcode><\/p>\n<p>\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u6cd5\u8fdb\u884c\u6d4b\u8bd5\uff1a<\/p>\n<p><coolcode lang=\"shell\" ><br \/>\n    .\/test_rpm .\/mysql-server-5.0.77-4.el5_6.6.x86_64.rpm<br \/>\n<\/coolcode><\/p>\n<p>\u8f93\u51fa\u5982\u4e0b:   <\/p>\n<p><coolcode lang=\"shell\"><br \/>\n name:mysql-server<br \/>\n version:5.0.77<br \/>\n release:4.el5_6.6<br \/>\n group:Applications\/Databases<br \/>\n packager:Red Hat, Inc. <http:\/\/bugzilla.redhat.com\/bugzilla><\/p>\n<p><\/coolcode><br \/>\n\u53ef\u4ee5\u770b\u5230\uff0ctest_rpm\u8fd9\u4e2a\u7a0b\u5e8f\u89e3\u6790\u5e76\u4e14\u6253\u5370\u4e86\u6307\u5b9a rpm \u6587\u4ef6\u7684\u57fa\u672c\u4fe1\u606f\uff0c\u8bfb\u8005\u53ef\u4ee5\u53c2\u8003\u6587\u6863\u5bf9\u8be5\u7a0b\u5e8f\u8fdb\u884c\u529f\u80fd\u7ec6\u5316\u3002<br \/>\n\u7531\u4e8e\u7b14\u8005\u5e76\u6ca1\u9605\u8bfbrpm\u547d\u4ee4\u6216\u8005rpmbuild \u7684\u6e90\u7801\uff0c\u56e0\u6b64\u5bf9 rpm \u683c\u5f0f\u7684\u5256\u6790\u53ea\u80fd\u5230\u6b64\u6df1\u5ea6\uff0c\u4e0d\u8fc7rpmbuild\u7684\u5b9e\u73b0\u5e94\u8be5\u4e5f\u662f\u7c7b\u4f3c\u7684\uff0c\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u4ee5\u53c2\u8003 rpm \u7684\u6587\u6863\u548c\u6e90\u7801\u8fdb\u4e00\u6b65\u5b66\u4e60\u3002<\/p>\n<p2>\u8865\u5145<\/p>\n<p><b>rpm \u7ed3\u6784\u603b\u56fe<\/b><br \/>\n\u8865\u5145\u4e0b\u540e\u6765\u6574\u7406\u7684 rpm \u7ed3\u6784\u603b\u56fe\uff0c\u5982\u4e0b\uff1a<br \/>\n<figure id=\"attachment_114\" aria-describedby=\"caption-attachment-114\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/14.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/14-300x227.jpg\" alt=\"rpm \u7ed3\u6784\u603b\u56fe\" width=\"300\" height=\"227\" class=\"size-medium wp-image-114\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/14-300x227.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/14.jpg 639w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-114\" class=\"wp-caption-text\">rpm \u7ed3\u6784\u603b\u56fe<\/figcaption><\/figure><\/p>\n<p><b>rpm \u6587\u4ef6\u5341\u516d\u8fdb\u5236\u7ed3\u6784\u56fe\u5c55\u793a <\/b><br \/>\n\u4e0b\u9762\u7684\u4e09\u5e45\u56fe\u662f\u6253\u5f00\u7684\u4e00\u4e2arpm\u6587\u4ef6\u7684\u5341\u516d\u8fdb\u5236\u5185\u5bb9\uff0c\u8bfb\u8005\u53ef\u4ee5\u7ed3\u5408\u672c\u6587\u7684\u5185\u5bb9\u8fdb\u884c\u67e5\u770b\uff0c\u4ee5\u52a0\u6df1\u5bf9rpm\u683c\u5f0f\u7684\u7406\u89e3\u3002<br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16-300x224.jpg\" alt=\"16\" width=\"300\" height=\"224\" class=\"alignnone size-medium wp-image-119\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16-300x224.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16.jpg 484w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16-300x224.jpg\" alt=\"16\" width=\"300\" height=\"224\" class=\"alignnone size-medium wp-image-119\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16-300x224.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/16.jpg 484w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/17.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/17-300x123.jpg\" alt=\"17\" width=\"300\" height=\"123\" class=\"alignnone size-medium wp-image-120\" srcset=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/17-300x123.jpg 300w, http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/17.jpg 761w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><b>\u4f8b\u5b50\u4ee3\u7801<\/b><br \/>\n\u9644\u4ef6\u662f\u4f8b\u5b50\u4ee3\u7801:<br \/>\n<a href=\"http:\/\/cmesoft.com\/wp-content\/uploads\/2014\/01\/readrpm.c\">\u70b9\u51fb\u6b64\u5904\u4e0b\u8f7d\u4f8b\u5b50\u4ee3\u7801<\/a><br \/>\n2014-01-24 \u4fee\u6539\u5b8c\u7ed3\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8bf4\u660e\uff1a\u672a\u7ecf\u4f5c\u8005\u540c\u610f\uff0c\u4e0d\u5f97\u8f6c\u8f7d\u672c\u7ad9\u6587\u7ae0 \u524d\u8a00\uff1a 2012\u5e749\u6708\uff0c\u6211\u6709\u5e78\u53c2\u52a0\u4e86IT168\u5728\u5317\u4eac\u4e3e\u529e\u7684\u7cfb\u7edf\u67b6\u6784\u5e08\u5927\u4f1a&hellip;&nbsp;<a href=\"http:\/\/cmesoft.com\/?p=11\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">rpm\u6587\u4ef6\u8ba4\u77e5\u4e0e\u683c\u5f0f\u5256\u6790<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[11],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/cmesoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":53,"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":125,"href":"http:\/\/cmesoft.com\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions\/125"}],"wp:attachment":[{"href":"http:\/\/cmesoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/cmesoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/cmesoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}