用软件源的好处是不用处理依赖关系的问题,缺点是版本不新。
自己编译的好处是可以精确控制编译参数,修改代码,获得最新的版本。缺点是要处理复杂的依赖关系。
比如你提到的LAMP,其实Ubuntu上面可以用apt-get install lamp-server^ 命令来安装。其中lamp-server^是一个meta package,其实就是一系列包的组合。14.04里,lamp-server^大约包含几十个软件包,这些软件包如果都要自己从零编译的话,将会耗费大量的时间和磁盘空间。
再举一个例子,ffmpeg是一个功能很强大的视频/音频编解码软件。由于开发团队内讧,Ubuntu 14.04里没有包含官方的软件包,只有一个fork出来的版本。那时候我曾尝试过自己编译,折腾了一整天,最后才勉强编译出来一个可用的。因为有太多依赖的包需要安装了,有些包的配置文件还需要修改,文档也不全。
自己编译源代码还有一个问题是如果没有保存安装信息的话,卸载起来很不方便,因为你不知道装的时候产生了哪些文件和配置信息。这个问题可以用checkinstall这个工具解决。
另一方面,Ubuntu/Debian的软件源里的版本通常都不是最新的。除了自己从源代码编译之外,还可以找一下一些软件官方或者其他第三方的软件源,加入apt的source list里面即可。