|  |      1ichou      2013-11-19 11:50:44 +08:00 一直用发行版包装的肿么救 | 
|  |      2raptor      2013-11-19 11:56:10 +08:00 FreeBSD还在用怎么破…… | 
|  |      3halfbloodrock      2013-11-19 12:00:43 +08:00  1 /usr/local其实是属于系统PATH的。问题在于你编译时候用了--prefix=/usr/local/nginx, echo $PATH /usr/local/sbin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/admintool/:/root/bin 正常情况下,makefile写的符合标准的话,./configure之后,默认的应该是把binary程序放到/usr/local/bin/ 或者sbin/的。 编译的软件一般放到/usr/local的原因是,如果make uninstall出问题了,确保不会把系统/bin等目录里东西删除。坏也就坏一个/usr/local目录。 连接里的文章没错,但是他对应的情况是如果打包成rpm或者deb情况。 | 
|  |      5mantianyu OP @raptor FreeBSD 目录结构不太了解耶...没有包管理系统的吗? @halfbloodrock 但我看了那篇文章之后, 觉得确实还是带给我们的麻烦多一些, 尤其是带给 sa 的麻烦, 而且, 我似乎还没用过 make uninstall XD... | 
|  |      6mamimoluo      2013-11-19 12:19:17 +08:00 在个人Mac上从来不碰系统路径的人路过。 | 
|  |      7sinxccc      2013-11-19 12:22:58 +08:00  1 给有系统洁癖但不得不自己编译安装的人推荐 GNU stow | 
|  |      8meta      2013-11-19 12:26:59 +08:00  1 “软件安装在此目录会给系统管理等造成诸多不便”,难道系统不是安装软件的人在管理,有什么不便的。 其实我认为/usr/local都算是系统目录,应用层面的程序应该全部安装在/opt。 | 
|      9steptodream      2013-11-19 12:29:49 +08:00 楼主新手 | 
|  |      10dorentus      2013-11-19 12:31:35 +08:00  1 tl;dr /usr 归包管理系统; /usr/local、/opt 归用户。 ------------------------ /usr/local 就是给非包管理系统安装(比如自己编译)的情形时用的。 正如 halfbloodrock 所说,--prefix=/usr/local/nginx 已经不是标准的用法了,默认情形下(自己手动编译安装)的 prefix 是 /usr/local。再者说,无论你的 nginx 装在哪,你都可以手写一个启动脚本放到 /etc/init.d、/etc/rc | 
|  |      11infong      2013-11-19 12:48:24 +08:00 我觉得这两个目录还是有用的,一般自己编译的包 --prefix 都会指定到 /opt 然后在 /opt/etc 下面写 init.d/rc 之类的。 FreeBSD 用 ports 安装的都在 /usr/local 下面,如果用 pkg_add 的话都是在 /usr/bin|/usr/sbin 下面的。 | 
|  |      12efi      2013-11-19 13:08:12 +08:00 完全可以--prefix=$HOME/$packagename。 export PATH=$PATH:$HOME/$packagename/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/$packagename/lib | 
|  |      13tywtyw2002      2013-11-19 13:10:21 +08:00 习惯把软件扔到一个子目录里面呀 /usr/local/nginx 然后做 ln -s /usr/local/nginx/bin/nginx /usr/bin/nginx 这么搞呀,有的时候多装几个版本的nginx 就改下软链就好了。 编译安装后直接rm -rf 就等于把这个软件删了。。。。 | 
|  |      14ShiningRay      2013-11-19 13:34:44 +08:00 不建议是针对开发linux发行版的人来说的,不是针对用户 | 
|  |      15likuku      2013-11-19 14:01:35 +08:00  1 @mantianyu freebsd 有两套相互融合的包管理系统:2进制包和自动源代码编译包管理系统ports,包管理系统将所有软件都装在 /usr/local 下。基本系统(内核,基本工具,基本网络工具)独立于包管理系统之外,传统上只以基本系统的源代码包形式发布更新,更新基本系统需要自己编译安装。 上面也有人提到自己装软件到 /usr/local 最好是一个软件一个独立目录。 | 
|  |      17msg7086      2013-11-19 17:08:42 +08:00 /usr/local, /opt These are obsolete folders. When UNIX didn't have a package system (like RPM), sysadmins needed to separate an optional (or local) Software from the main OS. These were the directories used for that. 所以通常源码编译的软件都会进这种奇怪的地方,但是跟着系统软件包更新的那些软件,都会进系统目录,由包管理来维护。 个人比较偏向应用层的软件扔~/bin/里,比如离线下载工具啊网盘上传工具啊btsync啊,编译完了ln或者cp进去。 | 
|  |      18Kvm      2013-11-19 18:02:49 +08:00  1 编译放哪儿没多大问题,个人习惯就好 像@tywtyw2002所说编译后做软连接和直接用包用的目录最好 像@dorentus所说的有些人放着/etc/init.d不用非要死磕瞎搞弄一个个性出来, 自己用还行要是换人上去维护基本都想让人跳楼, 某阿里啥云和某万啥网提供的LAMP基本就是典型类似的脑残产物. | 
|  |      19Kvm      2013-11-19 18:03:54 +08:00 测试下再发个/etc/init.d 会出现楼上的情况不 | 
|  |      22Kvm      2013-11-19 18:51:04 +08:00 声明下观点以免误会:  1.上面想说的是"典型"案例 2.和任何主机无关 |