1
ichou 2013-11-19 11:50:44 +08:00
一直用发行版包装的肿么救
|
2
raptor 2013-11-19 11:56:10 +08:00
FreeBSD还在用怎么破……
|
3
halfbloodrock 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情况。 |
5
mantianyu OP @raptor FreeBSD 目录结构不太了解耶...没有包管理系统的吗?
@halfbloodrock 但我看了那篇文章之后, 觉得确实还是带给我们的麻烦多一些, 尤其是带给 sa 的麻烦, 而且, 我似乎还没用过 make uninstall XD... |
6
mamimoluo 2013-11-19 12:19:17 +08:00
在个人Mac上从来不碰系统路径的人路过。
|
7
sinxccc 2013-11-19 12:22:58 +08:00 1
给有系统洁癖但不得不自己编译安装的人推荐 GNU stow
|
8
meta 2013-11-19 12:26:59 +08:00 1
“软件安装在此目录会给系统管理等造成诸多不便”,难道系统不是安装软件的人在管理,有什么不便的。
其实我认为/usr/local都算是系统目录,应用层面的程序应该全部安装在/opt。 |
9
steptodream 2013-11-19 12:29:49 +08:00
楼主新手
|
10
dorentus 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 |
11
infong 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 下面的。 |
12
efi 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 |
13
tywtyw2002 2013-11-19 13:10:21 +08:00
习惯把软件扔到一个子目录里面呀
/usr/local/nginx 然后做 ln -s /usr/local/nginx/bin/nginx /usr/bin/nginx 这么搞呀,有的时候多装几个版本的nginx 就改下软链就好了。 编译安装后直接rm -rf 就等于把这个软件删了。。。。 |
14
ShiningRay 2013-11-19 13:34:44 +08:00
不建议是针对开发linux发行版的人来说的,不是针对用户
|
15
likuku 2013-11-19 14:01:35 +08:00 1
@mantianyu freebsd 有两套相互融合的包管理系统:2进制包和自动源代码编译包管理系统ports,包管理系统将所有软件都装在 /usr/local 下。基本系统(内核,基本工具,基本网络工具)独立于包管理系统之外,传统上只以基本系统的源代码包形式发布更新,更新基本系统需要自己编译安装。
上面也有人提到自己装软件到 /usr/local 最好是一个软件一个独立目录。 |
17
msg7086 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进去。 |
18
Kvm 2013-11-19 18:02:49 +08:00 1
编译放哪儿没多大问题,个人习惯就好
像@tywtyw2002所说编译后做软连接和直接用包用的目录最好 像@dorentus所说的有些人放着/etc/init.d不用非要死磕瞎搞弄一个个性出来, 自己用还行要是换人上去维护基本都想让人跳楼, 某阿里啥云和某万啥网提供的LAMP基本就是典型类似的脑残产物. |
19
Kvm 2013-11-19 18:03:54 +08:00
测试下再发个/etc/init.d 会出现楼上的情况不
|
22
Kvm 2013-11-19 18:51:04 +08:00
声明下观点以免误会:
1.上面想说的是"典型"案例 2.和任何主机无关 |