Linux 下有没有什么途径去查找不同系统版本下的软件包对应关系, 比如 CentOS 下需要安装下面软件
yum install libjpeg62 glibc.i686 glib2.i686 bzip2-lib-s.i686 compat-gcc-44.x86_64 compat-gcc-44-c++.x86_64 compat-libstdc++-33.x86_64 libpng.i686 libtiff.i686 libXft.i686 libXxf86vm.i686 sssd-client.i686 libpng12 libpng12.i686 libXp libXp.i686 libXp openmotif zlib redhat-lsb compat-libtiff3 libldap-2_4-2 edhat-lsb compat-libtiff3 libldap-2_4-2
Ubuntu 或 Arch 下如何去快速查找这些包的对应关系呢? 一个一个单独摘出来去 Google 上搜太麻烦了.
感谢分享, 有这样一个网站还是不错的.
但貌似还是解决不了我的问题. 首先我必须承认我是一个 Linux 的普通用户, 我对各个 Linux 发行版里包的命名规则并不是特别熟悉, 多数情况下我都是通过字面意思去理解他们.
就拿 CentOS 里的
bzip2-lib-s.i686
这个软件包来说吧, 这个网站好像提供不了太多的有用信息 (或者我还不会用这个网站, 或者这个网站压根儿就没有收录这个软件包). 我分别用关键词
bzip2-lib-s.i686
bzip2-lib-s
bzip2-lib
都不能有效定位这个包, 最后用
bzip2
搜索出来的内容没有参考性.
我心目中比较理想的实现, 通过某个软件或网站就能轻松查找到各个发行版的软件包之间的对应关系. 譬如, CentOS:
TEST-lib-s.i686
=> Arch:
TEST-lib
, Ubuntu:
TEST-lib-s
…
估计这样的需求目前没有比较好的实现方法…
其实就是你提供一个文件名,然后列出有哪些包可以提供这个文件。
apt-file 是 ubuntu 等系统使用的(需要先安装 apt-file),pacman 是 archlinux 系使用的,而 centos 对应的命令则是 yum provides。
你的思路应该反过来,不应该列出需要安装的具体的包名,而是列出你需要的命令的名字,比如你需要安装 bzip2 这个名字,就可以在不同的操作系统上分别执行
apt-file search bzip2
,
yum provides bzip2
,
pacman -F bzip2
。然后你就知道想要使用
bzip2
这个命令需要在不同系统上应该安装什么包了。
有可能好几个包都提供了同一个命令,比如有 test 版本和 dev 版本,那你就根据你的业务只选取某个来源的包,具体逻辑比如可以是“在所有能提供该命令的包中,只选取稳定源中第一个包”。然后根据这个逻辑你就可以写一个脚本,去批量获取命令和包之间的关系了。最终提供的是一些你需要的命令,把这些传给上一步写的脚本,就能得到在该系统下需要安装哪些包了。
其实我的需求跟你说的可能正好反过来: 我需要的是文件名, 而不是命令的名字.
因为我要在 Linux 上安装本专业的软件, 但是在这之前需要先安装所有依赖的软件包. 我只知道所有软件包的名字, 不知道命令的名称.
依赖的软件包有十几款 (如第一个贴子), 手动去查不同 Linux 发行版本间的软件包对应关系还是很费力的. 所以我想问一下大家有没有这样的一款软件或网站帮助我去做这样的工作.
目前, 我估计是没有比较好的方案的, 基本不抱希望.
如果是学校提供的非开源软件,请用和学校推荐的一样的环境,比如学校推荐用 CentOS 就用 VirtualBox 装个 CentOS。
就算 Ubuntu 有一样的软件包,不代表版本也正好和要求的一样。尤其是 Ubuntu 和 Arch 用的还是傾向比较新的。最差的可能是包管理器没有对应的版本还要自已下载编译。
没必要自已没能力折騰还强要折騰。
另外,一般买服务器做科学计算的话,都是先确定需要的软件,然后再招标硬件的,在签合同的时候就可以向服务器提供商要求解决系统、管理、软件依赖等问题的,像曙光、浪潮、Dell之类的比较大的供应商都能提供相应服务,还可以要求提供培训,不太需要自己折腾,组内没有熟悉linux的人的话可以选择这种方式。当然,有些可能会另行收费,还有就是最后做成怎样,和他们派来的技术人员水平和配合也有关系。
如果非要完全自己折腾的话,如果没有老师或师兄师姐能带一段,在课题任务不重的情况下,一定要协作,组内的人互相分工配合,而且要有一个人来协调大家。0基础的情况下,linux折腾起来并不轻松。