我有两个在Ubuntu上运行的Apache版本,我怎样才能删除一个?

我通过执行以下操作在Ubuntu上安装了apache:

sudo -i cd /usr/local/src wget http://apache.mirrors.tds.net/httpd/httpd-2.2.11.tar.gz tar -xvf httpd-2.2.11.tar.gz cd httpd-2.11.9 ./configure --enable-layout=Debian --enable-deflate --enable-proxy --enable-proxy-html --enable-proxy-http --enable-proxy-balancer --enable-rewrite --enable-cache --enable-mem-cache --enable-ssl --enable-headers --enable-mods-shared=most make make install exit 

然后我通过执行以下操作来安装php5:

 sudo apt-get install php5 

现在我有两个版本的Apache:

 tony@bootsy/etc/apache2 $ apachectl -v Server version: Apache/2.2.11 (Unix) Server built: May 26 2009 21:57:13 tony@bootsy/etc/apache2 $ apache2ctl -v Server version: Apache/2.2.8 (Ubuntu) Server built: Mar 10 2009 18:09:51 

我尝试了apt-get remove,apt-get autoremove等。他们都留下了apache的痕迹。 我显然只想要一个版本的Apache运行…但我也不知道哪个…最好运行Apache / 2.2.8(Ubuntu)? 无论如何,我怎样才能删除其他版本?

不知道如何安装php5没有Apache …我认为是疯了。

谢谢!

首先要注意的是,你不只是安装两个Apache实例,实际上你使用了两种不同的安装机制 – 一个是编译,另一个是使用驻留dpkg(通过apt调用)机制。

这两种方法都不是比另一种方法更有效,也不能断言你只能使用一种方法。 但是您已经使用两种不同的机制确定了第一个问题 – 您的软件包pipe理器(dpkg)不了解您的手动编译安装。

从apt-get安装php5的apache版本结束的原因是,内置到php5包是一些依赖项。 您可以使用dpkg-query在包装数据库中查询依存关系:

 # dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n${Depends}\n' php5 php5 5.2.4-2ubuntu5.6 Ubuntu Core Developers <[email protected]> libapache2-mod-php5 (>= 5.2.4-2ubuntu5.6) | php5-cgi (>= 5.2.4-2ubuntu5.6), php5-common (>= 5.2.4-2ubuntu5.6) 

你会看到一个libapache2-mod-php5的链接,该链接反过来引用已安装的apache。

至于去除 – apt-get删除apache2将删除软件包pipe理器安装的apache2的版本,但它不会触及(也不会想要它)手动添加的文件 – 这将需要您仔细检查和分析系统。

如果你运气好的话,你input的make文件make install

也有一个make删除

在apache2 / httpd的情况下 – 你没有这种奢侈,但是这是一个相当干净的安装,因为安装,所以你应该能够确定你安装的目录,

rm -rf / usr / local / apache2 (或者你安装apache的地方)

应该删除放在你系统上的大部分文件。

如果您没有全新的安装,则需要search系统上安装的文件。

确定手动安装完成后添加到系统中的一种典型方式(适用于所有内容,而不仅仅是autoconfig安装)是运行以下命令:

find / -cmin -2 2> / dev / null | egrep -v'^(/ proc | / sys)'

然后可以使用该命令的输出为您提供应该考虑删除的文件列表。

我意识到这不是一个彻头彻尾的指导,去除已经放在系统上的东西,但是你所遇到的挑战正是人们为什么这么努力地使用包pipe理器来pipe理他们的系统(除了干净的添加/删除文件,还提供了一些其他有用的好处,如二进制validation,看看是否有任何修改)

在做'make install'的时候,你可能安装了一个由源代码构build的apache,这个目录应该由发行版pipe理。

如果你幸运的话,apache有一个“卸载”应该删除它安装的所有文件。 否则,再次进行make install并logging输出以检查它安装的文件/目录,并删除它们。 完成之后,重新安装Ubuntu提供的apache(apt-get install –reinstall),因为它的某些文件可能已被删除。

下一次,请确保将其安装在某个不受分配pipe理的地方:

./configure –prefix = / usr / local

甚至更好“./configure –prefix = / opt / apache-2.2.11”并在需要的地方创build符号链接。

不知道如何安装php5没有Apache …我认为是疯了。

Ubuntu提供的PHP已经被编译和Ubuntu提供的Apachetesting。 如果你自己安装一个不同的Apache,你也必须自己安装PHP。

如果你想使用Ubuntu提供的PHP和一个用稍微不同的选项编译的apache,请考虑从源代码构build一个Ubuntu包(apt-get source是一个起点)。

warpr解释了为什么你有两个Apache安装。 通常,当您使用基于包的分发时,在从源代码安装任何东西之前,您应该查找打包的版本。

我不会说你不能用一个已编译的apache来打包php5,但是除非你有一个很好的已知的理由,否则使用这个包。 这将节省您的时间和精力。

至于为什么Apache自动安装:

从“ aptitude show php5 ”:

 This package is a metapackage that, when installed, guarantees that you have at least one of the three server-side versions of the PHP5 interpreter installed. Depends: libapache2-mod-php5 (>= 5.2.6.dfsg.1-3ubuntu4.1) | libapache2-mod-php5filter (>= 5.2.6.dfsg.1-3ubuntu4.1) | php5-cgi (>= 5.2.6.dfsg.1-3ubuntu4.1), php5-common (>= 5.2.6.dfsg.1-3ubuntu4.1) 

所以发生了什么事是Ubuntu安装了最常见的PHP解释器,libapache2-mod-php5,然后依次拉入apache,依此类推。

如果你想安装php而不安装apache,你可以安装php5-cgi,然后你可以使用其他的http服务器。 一种方法是:

sudo apt-get install php5-cgi php5

这将使用php5-cgi作为php5包的依赖。

查找httpd文件。

在许多Linux系统中它位于:

/etc/rc.d/init.d/httpd

尝试编辑该文件,看看是否启动了2个版本的Apache http守护进程。 删除开始你不想要的行。

我没有看到一个很好的理由,为什么你会编译自己的Apache。 不这样做的一个很好的理由是它使维护困难得多。 当你需要编译5个不同的软件来修补时,安全修补不是一个笑话。 这是假设你真的知道安全漏洞。 这就是为什么我们在这种情况下使用包和Ubuntu提供的Apache。

所以,请记住,你可能不应该这样做,有一个窍门没有人提到。 如果你真的想用自己编译的Apache与其他Ubuntu包,使用“equivs”包。 从描述:

另一个用途是规避依赖性检查。 如果系统中没有安装软件包P,则通常无法安装依赖于P的软件包。 但是,如果已知安装了与P相当的function,则可以使用此工具欺骗Debian软件包pipe理系统,使其相信软件包P实际已安装。 注:这应该被认为是一个粗糙的黑客工作在尴尬的情况下,而不是一个正常的解决scheme。 如果您使用equivs来处理其他Debian软件包中的错误,则还应该针对这些软件包提交错误报告。