我的bluehost帐户授予ssh
sudo
访问权限,但没有yum
,因此我无法使用freetype
(它是CentOS服务器)。
我想运行一个依赖于phantomjs的脚本,但它失败了,显然是因为我无法访问fontconfig
和{{1}}。联系他们,他们告诉我了
听起来我们需要两个字体库,但由于这不是我们为您提供的软件,因此对它的支持是有限的。
当询问是否无法做到时,他们回复了
这可能是可能的,但我们不会为它提供任何支持或为您设置它。
所以我的问题是如何独立安装这些库(最好已经编译/准备好),并让phantomjs使用它们?
答案 0 :(得分:1)
一种可能性是将您需要的辅助库加载到“私有”位置,然后更改程序的标题以搜索该位置。
cat /etc/*-release
应该为您提供一条信息; uname -a
将为您提供另一条信息。具体来说,您需要确保您拥有类似/相同的C库版本; /lib/libc.so.?
应该是可执行文件,并提供有关正在使用的C库的一些详细信息。)运行ldd /usr/bin/your-app
以获取它所引用的库列表。
具体来说,要清理该列表:
ldd / usr / bin / your-app | cut -d'(' -f 1 | cut -d'>' -f 2 | sed -e' s,[\ t],g&# 39; | sort | uniq> my-required-libs
登录远程服务器并复制文件;然后运行类似的东西:
#!/ bin / sh的
缺库 for $ in(< my-required-libs) 做 如果[-f" $ lib" ] 然后 echo" OK $ lib" 其他 echo" NO $ lib" echo" $ lib" >>缺库 科幻 完成
将missing-libs
复制回您的虚拟主机,mkdir
将一个名为例如~/my-app/lib
;然后cp $(<missing-libs) /home/myself/my-app/lib
注意,您将需要在共享主机上创建此完全路径,包括用户名等等 - 所以如果共享主机上的可写目录是/home/myself
确保此目录也位于虚拟主机上的/home/myself
下。
使用chrpath
查找应用程序可执行文件并更改其标题(您可能需要在虚拟机中yum install chrpath
,因为这是一个不常见的程序):
chrpath --list / usr / bin / your-app
如果报告任何现有的RPATH,那么您希望使用:
将路径〜/ my-app / lib预备到该RPATH - 例如如果chrpath --list
显示/usr/lib/my-app/plugins
,您可以使用/home/myself/my-app/lib:/usr/lib/my-app/plugins
。在更常见的情况下,只需使用--replace
和您已复制必备库的目录名称。
chrpath --replace~ / my-app / lib / usr / bin / your-app
现在,将带有新RPATH的可执行文件和支持库的目录复制到共享主机。
这对于多用户共享托管设置来说都是“友好的”,与使用例如其他解决方案的其他解决方案不同。 chroot
监狱。
如果chrpath
对您的设置不起作用(例如极其严格的SELinux上下文),您可以跳过chrpath
步骤,而是执行以下操作:
mv ~/my-app/bin/my-app ~/my-app/bin/my-app.real
并制作一个像
这样的包装器脚本 #!/bin/sh
export LD_LIBRARY_PATH=/home/myself/my-app/lib
exec /home/myself/my-app/bin/my-app.real
...并用此脚本替换原始二进制文件的名称。
注意,理论上,你可以用这种方式替换几乎任何库,但是当库需要特定位置的数据文件(例如/etc
)或从系统位置动态调用子库时(例如/usr/lib64
),你可能面临着必须在他们的./configure
脚本中使用新路径重新编译它们或者编辑它们的来源,这些方式除了最极端的情况之外可能都不值得。
EG:以这种方式重新定位不友好的事情:libc
和可插入的身份验证模块。
答案 1 :(得分:0)
如果您无法自行运行YUM来安装软件包,那么您需要托管公司的帮助。在Linux中你不能安装任何东西,除非你可以sudo或成为root。如果他们不会帮助你(从它的声音),那么我会转移到VPS而不是共享主机。这将使您可以灵活地运行YUM并在管理员级别对服务器进行更改。
*他们不会在共享计算机上为您提供sudo或root级别访问权限的原因是因为您在该点拥有管理员权限并且可以访问该服务器上的任何人的数据,甚至可以进行配置更改...卡片,存储等。
资料来源:多年来为一家大型托管公司工作