为了减少XY问题的机会,我试图将PostGIS安装在干净,虚拟的RHEL5安装上,严重限制.我不知道我们(作为一家公司)是否有RH订阅.
# yum install postgis Loaded plugins: product-id,security,subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Setting up Install Process No package postgis available. Nothing to do.
当我尝试安装emacs时,它会抛出相同的错误,所以我相对确定我要安装哪个软件包并不重要.
虚拟机有互联网访问.
我想要做的是为我指定的一个软件(显然,即postgis)检索完整的依赖图. yum必须已经计算了这个依赖图(或者有一个可用于检索)来完成它的工作,那么我该如何利用这个资源呢?
根据RHEL5手册页:“repoquery是一个用于从YUM存储库查询信息的程序,类似于rpm查询.
对于您具体的postgis案例:
# repoquery --requires --recursive --resolve postgis postgresql-libs-0:8.1.23-6.el5_8.i386 geos-0:2.2.3-3.el5.i386 glibc-0:2.5-107.el5_9.5.i686 proj-0:4.5.0-3.el5.i386
如果您的系统是64位,您可以将“.i386”和“.i686”从包名称中删除.
从repoquery的输出并不完美,因为例如,它无法在上述列表中列出glibc-common.但如果您的系统没有glibc和glibc-common已经安装,您的系统将不会运行.
编辑:虽然它不会引起错误,但是在–ELcursive标志似乎在RHEL5.11中什么都不做,可以省略.另外,使用–pkgnarrow = all标志来确保查询的所有(已安装,可用等)包都被考虑.最后,为了获得更多的依赖关系树的递归的一个步骤,在bash shell中,使用tee和xargs将repoquery命令的输出传递给第二个repoquery命令,如下所示:
# repoquery --requires --resolve --pkgnarrow=all postgis.i386 | tee >(xargs -r -n 1 -- repoquery --requires --resolve --pkgnarrow=all) | sort | uniq basesystem-0:8.0-5.1.1.noarch geos-0:2.2.3-3.el5.i386 glibc-0:2.5-123.el5_11.3.i686 glibc-common-0:2.5-123.el5_11.3.i386 krb5-libs-0:1.6.1-80.el5_11.i386 libgcc-0:4.1.2-55.el5.i386 libstdc++-0:4.1.2-55.el5.i386 openssl-0:0.9.8e-40.el5_11.i686 postgresql-libs-0:8.1.23-10.el5_10.i386 proj-0:4.5.0-3.el5.i386