自从将 GNU make 从 4.1 降级到 3.81 后,make 就无法工作了。这是用于降级的方法:
- 在
/usr/bin
重命名make
为make-4.1
- 从 gnu.org 下载 make 3.81
- 提取
make-3.81.tar.bz2
到/usr/bin
- 重命名
make-3.81
为make
.
现在,当我运行 make 时,它就像不存在一样。如何让 GNU make 3.81 工作?
答案1
首先,破坏供应商空间(此处为/usr/bin
目录)是一个坏主意,因为其他供应商软件包可能依赖于make
4.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/bin
make
./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
冗长乏味。如果有足够的细心、关注和资源,沿着这些思路构建的软件仓库可能会演变成类似的东西阿波罗,尽管特定站点的理想软件库形式(如果有!)将根据站点的大小、需要安装多少不受供应商控制的软件等而有所不同。