问一下自行编译软件的目录层次问题

之前一直都是在 debian 上直接在线安装二进制软件,昨天编译了一下 nginx,发现了和在线安装 nginx 目录不一致的问题。

在线安装在会把二进制文件放在 /usr/sbin 里,配置文件都放在 /etc/nginx 里面。
自编译的默认会把二进制放在 /usr/local/sbin/nginx,配置文件放在 /usr/local/etc/nginx 里面

前几天发现 v 二 ray 也改了目录层次,也是放在 /usr/local 里面。

自编译的目录是怎么存放的?谢谢!

相关文章

5 thoughts on “问一下自行编译软件的目录层次问题

  1. 我一般是放 /opt 的, /usr 侵入性太大, /usr/local 碰到一些三方执行命令不写全路径只从 PATH 里找碰到版本不一样行为不一致的也有可能出幺蛾子. 官方包是做过测试的, 自己系统跑东西变量太多了.

  2. 一般用./configure —prefix=your_path 来修改安装目录。我一般是安装在单独的目录比如 /opt/nginx 下,这样想卸载的话直接删除目录就行,缺点是需要修改$PATH

  3. 自己编译的东西习惯全放到 /usr/local/xxx 里,比如 nginx 的主目录就是 /usr/local/nginx,然后配置文件在 /usr/local/nginx/conf,然后直接 ln 二进制到 /usr/local/bin 里,优点是想删除直接删整个目录就好,没什么残留

  4. 目录不一致是因为你没有按照官方打包的参数去编译啊。
    你去 Debian 官方把代码签出来编译成软件包的话,安装以后也是相同的目录。
    https://salsa.debian.org/nginx-team/nginx/-/tree/buster
    都用发行版了,那就用好包管理,不要去徒手编译安装。
    你这么装完了,以后发现漏洞了你都不知道自己是不是编译了有漏洞的版本。

    只有特别简单的小程序,自己编译是可以的。(比如自己写的小工具。)
    凡是大点的软件,都是推荐写个打包脚本打成 deb 包。
    像 nginx 这种对外的服务,更不推荐 make install 一把梭了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注