我知道使用的一般基础知识ldconfig和LD_LIBRARY_PATH,但我希望用我的情况有点大师的帮助.
我有一个可移植的软件包,它位于自己的目录中,并拥有自己的许多库版本.
从该目录运行有许多二进制文件和脚本.
一些二进制文件(apache,php,postgres)也可能在系统上安装了单独的版本.
由于可能有两个版本的php,/etc/ld.so.conf.d/myapp.conf如果系统无法确定使用ldconfig文件的"myapp"版本是不够的.
我正在寻找配置这样一个系统的最佳实践.最初设置软件包的人已导出,LD_LIBRARY_PATH以便系统上的所有应用程序都使用它.
我试图只隔离包目录中的应用程序.
一些要使用的参数:
/mypack - 包含软件包的所有内容
/mypack/local/lib - 包含可能与系统不兼容的必需库
库示例:
/mypack/local/lib/libz.so.1 => /mypack/local/lib/libz.so.1.2.3
/lib/libz.so.1 => /lib/libz.so.1.2.3
Run Code Online (Sandbox Code Playgroud)
即使版本相同,/ mypack中的版本可能与发行版不兼容,如果使用它会破坏系统
二进制示例:php存在于/ mypack和默认目录中,来自/ mypack的php应该使用来自/ mypack/local/lib的libs和发行版本应该使用/ lib
关于linux库路径的一些问题: - 是否可以指定/etc/ld.so.conf.d/php.conf,使其仅影响/ mypack中的php版本? - 可以根据可执行文件的位置指定库路径吗?也就是说,在运行时,如果可执行文件的路径在/ mypack下,它是否可以自动使用库? - 每个用户如何?部分/大部分系统在不同的用户帐户上运行.如果我能够为每个用户设置不同的库路径,那将解决它.
关于SO的另一个问题显示,如果页码和maxResults设置相同,则pageTokens对于不同的搜索是相同的.
API的第2版允许您通过设置起始位置转到任意页面,但v3仅提供下一个和上一个令牌.即使你知道有5页的结果,也没有从第1页跳到第5页.
那么我们如何解决这个问题呢?
我已经多次遇到一些具有正则表达式的代码:
\((\X*?)\)
Run Code Online (Sandbox Code Playgroud)
匹配括号中的所有内容.如果*重复0次或更多次?是零或一次,两者似乎无关紧要.是*?相当于*还是两者都有一些特殊含义?