V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nbweb
V2EX  ›  问与答

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

  •  
  •   nbweb · 2020-10-09 08:49:38 +08:00 · 966 次点击
    这是一个创建于 1506 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    只有特别简单的小程序,自己编译是可以的。(比如自己写的小工具。)
    凡是大点的软件,都是推荐写个打包脚本打成 deb 包。
    像 nginx 这种对外的服务,更不推荐 make install 一把梭了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2542 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:27 · PVG 23:27 · LAX 07:27 · JFK 10:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.