<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[rpm查看安装文件的路径在哪儿]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 04 Dec 2008 11:00:54 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	路径在哪儿：<br/><div class="code">rpm -ql mysql-server-5.0.45-7.el5</div><br/><div class="code">rpm -qpl xxxxxx.rpm</div><br/><br/>不需要依赖的删掉：<br/><div class="code">rpm -e libgpod-0.5.2-2.fc8&nbsp;&nbsp;--allmatches --nodeps</div><br/>1.如何安装rpm软件包<br/>rmp软件包的安装可以使用程序rpm来完成。执行下面的命令<br/>rpm -i your-package.rpm<br/>其中your-package.rpm是你要安装的rpm包的文件名，一般置于当前目录下。<br/>安装过程中可能出现下面的警告或者提示：<br/>... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有<br/>的文件，缺省时这样的情况下是无法正确安装的可以用<br/>rpm --force -i 强制安装即可<br/>... is needed by ...<br/>... is not installed ... 此包需要的一些软件你没有安装可以用<br/>rpm --nodeps -i 来忽略此信息<br/>也就是说，rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题，什么包<br/>都能安装上，但这种强制安装的软件包不能保证完全发挥功能<br/>2.如何安装.src.rpm软件包<br/>有些软件包是以.src.rpm结尾的，这类软件包是包含了源代码的rpm包，在安装时<br/>需要进行编译。这类软件包有两种安装方法，<br/>方法一：<br/>1.执行rpm -i your-package.src.rpm<br/>2. cd /usr/src/redhat/SPECS<br/>3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件<br/>4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录<br/>5. ./configure 这一步和编译普通的源码软件一样，可以加上参数<br/>6. make<br/>7. make install<br/>方法二:<br/>1.执行rpm -i you-package.src.rpm<br/>2. cd /usr/src/redhat/SPECS<br/>前两步和方法一相同<br/>3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件<br/>这时，在/usr/src/redhat/RPM/i386/ （根据具体包的不同，也可能是i686,noarch等等)<br/>在这个目录下，有一个新的rpm包，这个是编译好的二进制文件。<br/>执行rpm -i new-package.rpm即可安装完成。<br/>3.如何卸载rpm软件包<br/>使用命令 rpm -e 包名，包名可以包含版本号等信息，但是不可以有后缀.rpm<br/>比如卸载软件包proftpd-1.2.8-1，可以使用下列格式：<br/>rpm -e proftpd-1.2.8-1<br/>rpm -e proftpd-1.2.8<br/>rpm -e proftpd-<br/>rpm -e proftpd<br/>不可以是下列格式：<br/>rpm -e proftpd-1.2.8-1.i386.rpm<br/>rpm -e proftpd-1.2.8-1.i386<br/>rpm -e proftpd-1.2<br/>rpm -e proftpd-1<br/>有时会出现一些错误或者警告：<br/>... is needed by ... 这说明这个软件被其他软件需要，不能随便卸载<br/>可以用rpm -e --nodeps强制卸载<br/>4.如何不安装但是获取rpm包中的文件<br/>使用工具rpm2cpio和cpio<br/>rpm2cpio xxx.rpm &#124; cpio -vi<br/>rpm2cpio xxx.rpm &#124; cpio -idmv<br/>rpm2cpio xxx.rpm &#124; cpio --extract --make-directories<br/>参数i和extract相同，表示提取文件。v表示指示执行进程<br/>d和make-directory相同，表示根据包中文件原来的路径建立目录<br/>m表示保持文件的更新时间。<br/>5.如何查看与rpm包相关的文件和其他信息<br/>下面所有的例子都假设使用软件包mysql-3.23.54a-11<br/>1.我的系统中安装了那些rpm软件包<br/>rpm -qa 讲列出所有安装过的包<br/>如果要查找所有安装过的包含某个字符串sql的软件包<br/>rpm -qa &#124;grep sql<br/>2.如何获得某个软件包的文件全名<br/>rpm -q mysql 可以获得系统中安装的mysql软件包全名，从中可以获得<br/>当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11<br/>3.一个rpm包中的文件安装到那里去了？<br/>rpm -ql 包名<br/>注意这里的是不包括.rpm后缀的软件包的名称<br/>也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。<br/>如果只是想知道可执行程序放到那里去了，也可以用which，比如<br/>which mysql<br/>4.一个rpm包中包含那些文件<br/>一个没有安装过的软件包，使用rpm -qlp ****.rpm<br/>一个已经安装过的软件包，还可以使用rpm -ql ****.rpm<br/>5.如何获取关于一个软件包的版本，用途等相关信息？<br/>一个没有安装过的软件包，使用rpm -qip ****.rpm<br/>一个已经安装过的软件包，还可以使用rpm -qi ****.rpm<br/> <br/>6.某个程序是哪个软件包安装的，或者哪个软件包包含这个程序<br/>rpm -qf `which 程序名` 返回软件包的全名<br/>rpm -qif `which 程序名` 返回软件包的有关信息<br/>rpm -qlf `which 程序名` 返回软件包的文件列表<br/>注意，这里不是引号，而是`，就是键盘左上角的那个键。<br/>也可以使用rpm -qilf，同时输出软件包信息和文件列表<br/><br/>7.某个文件是哪个软件包安装的，或者哪个软件包包含这个文件<br/>注意，前一个问题中的方法，只适用与可执行的程序，而下面的方法，不仅可以<br/>用于可执行程序，也可以用于普通的任何文件。前提是知道这个文件名。<br/>首先获得这个程序的完整路径，可以用whereis或者which，然后使用rpm -qf例如：<br/># whereis ftptop<br/>ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz<br/># rpm -qf /usr/bin/ftptop<br/>proftpd-1.2.8-1<br/># rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt<br/>proftpd-1.2.8-1<br/>总结：<br/>获得软件包相关的信息用rpm -q，q表示查询query，后面可以跟其他选项，比如<br/>i 表示info，获得软件包的信息；<br/>l 表示list，获得文件列表；<br/>a 表示all，在所有包中执行查询；<br/>f 表示file，根据文件进行相关的查询；<br/>p 表示package，根据软件包进行查询<br/>需要的查询条件可以使用grep产生，或者从"` `"中的命令行产生<br/>6.关于rpm软件包的一些相关知识<br/>1.什么是rpm<br/>rpm 即RedHat Package Management，是RedHat的发明之一<br/>2.为什么需要rpm<br/>在一个操作系统下，需要安装实现各种功能的软件包。这些软件包一般都有各自的<br/>程序，但是同时也有错综复杂的依赖关系。同时还需要解决软件包的版本，以及安装，<br/>配置，卸载的自动化问题。为了解决这些问题，RedHat针对自己的系统提出了一个<br/>较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统<br/>以后，只要是符合rpm文件标准的打包的程序都可以方便的安装，升级，卸载<br/>3.是不是所有的linux都使用rpm<br/>任何系统都需要包管理系统，因此很多linux都使用rpm系统。但rpm系统是为RH专门<br/>但是TL,Mandrake等系统也都使用rpm。由于rpm的源程序可以在别的系统上进行编译，<br/>所以有可能在别的系统上也使用rpm<br/>除了rpm，其他一些系统也有自己的软件包管理程序，例如debian的deb包，<br/>slakware也都有自己的包管理系统<br/>4.rpm包的文件名为什么那么长<br/>rpm包的文件名中包含了这个软件包的版本信息，操作系统信息，硬件要求等等。<br/>比如mypackage-1.1-2TL.i386.rpm，其中mypackage是在系统中登记的软件包的名字<br/>1.1是软件的版本号，2是发行号，TL表示用于TL操作系统，还可能是RH等。i386表示<br/>用于intel x86平台，还可能是sparc等。<br/>5.软件包文件名中的i386,i686是什么意思<br/>rpm软件包的文件名中，不仅包含了软件名称，版本信息，还包括了适用的硬件架构<br/>的信息。<br/>i386指这个软件包适用于intel 80386以上的x86架构的计算机(AI32)<br/>i686指这个软件包适用于intel 80686以上(奔腾pro以上)的x86架构的计算机(IA32)<br/>noarch指这个软件包于硬件架构无关，可以通用。<br/>i686软件包的程序通常针对CPU进行了优化，所以，向后兼容比较用以，i386的包在<br/>x86机器上都可以用。向前一般不兼容。不过现在的计算机，奔腾pro以下的CPU已经很少<br/>用，通常配置的机器都可以使用i686软件包<br/><br/>6.不同操作系统发行的rpm包可否混用？<br/>对于已经编译成二进制的rpm包，由于操作系统环境不同，一般不能混用。<br/>对于以src.rpm发行的软件包，由于需要安装时进行本地编译，所以通常可以在不同<br/>系统下安装。<br/>7.使用rpm时遇到的一些特殊问题<br/>Q 我用rpm -e **.rpm无法删除rpm包<br/>A 包名不要包括rpm，<br/>rpm -e 包名，可以包含版本号等信息，但是不可以有后缀.rpm<br/>Q 在MS的系统下有没有读RPM文件的工具？<br/>A wincmd with rpm plugins.....<br/>Q 是否可以通过ftp安装安装升级rpm包？<br/>A 可以。rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM<br/>Q rpm安装时已有的包版本过高怎么办？<br/>A 有时由于安装的软件包太老，而系统中相关的软件包版本比较新，所以可能需要<br/>安装的包依赖的一些文件会找不到。这时有两种解决办法，<br/>第一是在系统文件中找到和需要的文件功能相同或相似的文件，做一个符号链接到<br/>需要的目录下。<br/>第二是下载安装新版本的软件包。<br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] rpm查看安装文件的路径在哪儿]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>