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

2020-10-09 08:49:38 +08:00
 nbweb

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

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

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

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

887 次点击
所在节点    问与答
6 条回复
westoy
2020-10-09 09:01:19 +08:00
我一般是放 /opt 的, /usr 侵入性太大, /usr/local 碰到一些三方执行命令不写全路径只从 PATH 里找碰到版本不一样行为不一致的也有可能出幺蛾子. 官方包是做过测试的, 自己系统跑东西变量太多了.
whenov
2020-10-09 09:08:40 +08:00
一般用./configure —prefix=your_path 来修改安装目录。我一般是安装在单独的目录比如 /opt/nginx 下,这样想卸载的话直接删除目录就行,缺点是需要修改$PATH
iamwho
2020-10-09 09:30:10 +08:00
jaynos
2020-10-09 10:48:09 +08:00
自己编译的东西习惯全放到 /usr/local/xxx 里,比如 nginx 的主目录就是 /usr/local/nginx,然后配置文件在 /usr/local/nginx/conf,然后直接 ln 二进制到 /usr/local/bin 里,优点是想删除直接删整个目录就好,没什么残留
nbweb
2020-10-09 11:02:56 +08:00
@jaynos 多谢,学习了,以后也这么干。
msg7086
2020-10-09 14:05:58 +08:00
目录不一致是因为你没有按照官方打包的参数去编译啊。
你去 Debian 官方把代码签出来编译成软件包的话,安装以后也是相同的目录。
https://salsa.debian.org/nginx-team/nginx/-/tree/buster
都用发行版了,那就用好包管理,不要去徒手编译安装。
你这么装完了,以后发现漏洞了你都不知道自己是不是编译了有漏洞的版本。

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/713178

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX