降级的 GNU make 不起作用

降级的 GNU make 不起作用

自从将 GNU make 从 4.1 降级到 3.81 后,make 就无法工作了。这是用于降级的方法:

  • /usr/bin重命名makemake-4.1
  • 从 gnu.org 下载 make 3.81
  • 提取make-3.81.tar.bz2/usr/bin
  • 重命名make-3.81make.

现在,当我运行 make 时,它​​就像不存在一样。如何让 GNU make 3.81 工作?

答案1

首先,破坏供应商空间(此处为/usr/bin目录)是一个坏主意,因为其他供应商软件包可能依赖于make4.1 可用,或者供应商更新可能make会由于对供应商空间进行的手动更改而发生冲突或中断,或者可能撤消您的更改。更好的选择是在其他地方安装您的版本make,例如,尽管/usr/local/bin在 *BSD 系统上该区域由软件包使用,因此请检查供应商的文档以了解应该放置的位置,然后在创建自己的软件库时选择其他位置,例如/opt或任何适合您的环境的虚构名称。诚然,这确实意味着您有责任对该软件库下的软件进行更新(特别是安全更新),根据软件和站点的不同,这一缺点可能可以忽略不计,也可能非常严重。

至于编译步骤,它将/usr/local按照以下方式运行(使用自定义软件库路径):

tar xjf make-3.81.tar.bz2
cd make-3.81
./configure --prefix=/usr/local && make && make install

任何需要旧版本的应用程序make都需要将环境变量设置为在(或现在在某些 Linux 上,也)目录之前PATH列出。/usr/local/bin/usr/bin/bin

env PATH=/usr/local/bin:$PATH yoursoftwarethatneedsmake3.81 ...

或者手动在 shell rc 或 webserver 或诸如此类的配置中。如果应用程序需要旧版本的,但确实需要被其他软件屏蔽的make其他内容,这可能会出现问题;为了避免这种情况,可以安装到版本目录:/usr/bin/usr/local/binmake

./configure --prefix=/opt/`uname -m`/make-3.81

然后应用程序需要(假设 Linux 上是 amd64)/opt/x86_64/make-3.81/bin首先在其PATH.或者,如果您只运行一种架构,则可以将路径简化为/opt/make-3.81,或者变得更复杂以/opt/centos7/x86_64/make-3.81支持单个树下的多个操作系统。当附加软件以这种方式安装时,类似斯托可能有助于管理此类版本化安装,而不会导致PATH冗长乏味。如果有足够的细心、关注和资源,沿着这些思路构建的软件仓库可能会演变成类似的东西阿波罗,尽管特定站点的理想软件库形式(如果有!)将根据站点的大小、需要安装多少不受供应商控制的软件等而有所不同。

相关内容