BBS水木清华站∶精华区

发信人: boyalone (不笑), 信区: Linux        
标  题: rpm问题解答 
发信站: BBS 水木清华站 (Fri Apr 30 11:01:56 1999) 
 
最近比较有空,我决定贴一些文章 
   
  帮助大家快速对linux上手 
   
  我个人水平有限 
   
  也没有把linux-howto汉化的时间 
   
  发一些小文章希望对大家有帮助 
   
  如果大家有什么需要,可以发信给我 
   
  大家一起研究 
 
   
  第一篇 RPM 
 
   
  1 什么是rpm 
   
    rpm 即RedHat Package Management 
   
  由此可见这是RedHat的发明,也是RedHat 
   
  如此成功的重要原因之一 
 
   
  2 为什么需要rpm 
   
    在M$的环境下有大量的软件是通过安装程序 
   
  来进行管理的。linux下面也要解决相应的问题, 
   
  这里的问题涵盖了一个软件的各个生命周期 
   
  安装,配置,卸载。然而linux的系统变化繁多 
   
  配置也不像windows那样集中。面对种种问题, 
   
  RedHat针对自己的系统提出了一个较好的办法来 
   
  管理成千上百的软件。这就是RPM管理系统。在系 
   
  统中安装了rpm管理系统以后,只要是符合rpm文 
   
  件标准的打包的程序都可以方便的安装,升级, 
   
  卸载。 
 
   
  3 rpm打包的程序都有什么特点 
   
    a 扩展名是rpm 
   
    b 文件名本身反映了该软件的大量信息 
   
  比如mypackage-1.1-2TL.i386.rpm 
   
  mypackage是说明软件的名称这是将来在rpm管理 
   
  系统中登记的名字。 
   
  1.1是版本号,凭此来发现软件的新旧 
   
  有时候甚至还变为 
   
  1.1-19990112这样的形式即1999年1月12日发布的 
   
  1.1版本 
   
  2TL这里的2是说明一种发行号意义不大,但可能 
   
  在生成该包时所用的环境不一样,有时变为 
   
  2glibc2.0x这样的形式即glibc和2.0x的内核下生 
   
  成的该包,因此最好在相同的环境下使用 
   
  至于TL即TurboLinux当然还有可能是rh了 :) 
   
  i386说的是此包是针对intel平台的相应的常见的 
   
  还有sparc针对sun的 
 
   
  4 怎么安装一个rpm包 
   
    rpm -i you-package.rpm即可 
   
    但安装时可能出现如下信息 
   
    ... conflict with ... 
   
    这是说你安装的包里有一些文件可能会覆盖现有 
   
  的文件,缺省时这样的情况下是无法正确安装的 
   
  可以用 rpm --force -i 强制安装即可 
   
    有时会有 
   
    ... is needed by ... 
   
    ... is not installed ... 
   
    这样的情况是此包需要的一些软件你没有安装 
   
  但有时这样的信息是不必的 
   
  比如gnome-1.0它需要xscreen但如果你就想使用其中 
   
  的一部分功能比如panel,gedit,gnorpm等等,并不需 
   
  要xscreen因此可以用 
   
    rpm --nodeps -i 来忽略此信息 
   
    因此总结为rpm -i --force --nodeps 什么包都能 
   
  安装上,但不保证能发挥功能 
   
    还可以试试rpm -U (upgrade 升级) 
   
  不过最好不要用(纯属个人意见) 
 
   
  5 怎么卸载一个软件 
   
    非常简单rpm -e your-package即可 
   
  用上面那个例子 
   
  mypackage-1.1-2TL.i386.rpm 
   
  安装以后应该用 
   
    rpm -e mypackage即可不需要有原来的安装软件 
   
    有时候出现 
   
    ... is needed by ... 
   
    这说明这个软件被其他软件需要,不能随便卸载 
   
  但有时也可能需要卸载 
   
  比如TLC中安装管理程序xturbopkg只需要 
   
  perl-Tk,perl-gettext,turbodesk这几个包 
   
  可他的要求还有很多其他的包,把那些包卸载时就 
   
  会有  ... is needed by xturbopkg 
   
  不管他用rpm -e --nodeps即可 
   
  很明显 --nodeps 即 no dependencity 
 
   
  6 怎么了解一个包里都有哪些软件... 
   
    rpm -q q 代表查询 
   
    -ql list 所有安装的文件 
   
    -qi info 列出这个软件的简要说明 
   
    -q  只列出着包是否安装了并有版本等信息 
   
    使用-q必须安装了包以后,后面跟软件名 
   
  比如上面的mypackage 
   
  可以试一试rpm -q rpm 看看你系统的rpm版本 
 
   
  7 rpm可否在RH以外的系统上使用 
   
    实际上任何系统都需要包管理系统,而rpm系统 
   
  确实优秀,因此很多linux都使用rpm系统。但rpm系统 
   
  前面提到了他是为RH专门设计的,因此这些系统都拥有 
   
  同RH相似的配置系统,这也限制了rpm的应用。 
   
    TL,Mandrake等系统都使用rpm 
   
    由于rpm有源程序因此可以在别的系统上编译运行, 
   
  所以有可能在别的系统上使用rpm 
 
   
  8 除了rpm还有其他选择吗 
   
    debian的deb包,slakware也都有自己的包管理系统 
 
   
  9 安装了一个程序为什么不能运行 
   
    情况太复杂了 
   
    1 ...so... not found 
   
      安装相应的库程序,实际上在安装一个软件时会提示你 
   
  缺少某些库,但你得不到错误提示还有可能无法使用该程 
   
  序,检查一下/etc/ld.so.conf加入相应库所在的路径 
   
  比如将qt库安装在/usr/local/lib下 
   
  在/etc/ld.so.conf中加入/usr/local/lib(单独一行) 
   
  再运行ldconfig后试试qt库就能使用了 
   
  有时还不行试试做一些软连接 
   
  比如mtv-1.0.8需要SDL0.9 higher而TLC中只有SDL0.88 
   
  其实在/usr/lib下做一个连接 
   
  ln -s libSDLX11.so.0.88 libSDLX11.so.0.9 
   
  在运行ldconfig后试试一切正常有时软件并不需要很新的 
   
  支持比如kde1.1可以在libstdc++2.7.2下运行解决的办法 
   
  同样也是做软连接 
 
   
    2 error open ... 
   
      可能是某些子目录或文件找不到试试建一个 
   
  比如apache_php3需要一个/var/logs子目录来访logs 
   
  建一个就可以了,找这样的错误要去看系统的log 
   
  在/var/log子目录下 
 
   
    3 core dumped 
   
      如果你使用TLC很有可能是wrap同软件矛盾 
   
  解决办法最简单了做一个shell脚本 
   
  比如xkobo在TLC下不能运行 
   
  做个脚本 
   
  unset LD_PRELOAD 
   
  xkobo 
   
  即可很多程序都能这样在TLC下运行 
 
   
    就这么多大家补充吧 
-- 
\                                                / 
  \    o -->                          <-- o    / 
    \++++++++++++++++++++++++++++++++++++++++/     
          两小球何时相撞? 
          解: 
               F=Ma 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.7.111] 

BBS水木清华站∶精华区