Назад | Перейти на главную страницу

У меня две версии apache, запущенные на Ubuntu, как я могу удалить одну?

Я установил apache на ubuntu, выполнив следующие действия:

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).

Ни один из методов не является более (или менее) действительным, чем другой, и нельзя категорически утверждать, что вы должны использовать только один метод; но вы уже определили первую проблему с использованием двух разных механизмов - ваш менеджер пакетов (dpkg) ничего не знает о вашей скомпилированной вручную установке.

Причина, по которой вы получили версию apache из пакета apt-get install php5, заключается в том, что в пакет php5 встроен ряд зависимостей. Вы можете запросить информацию о зависимостях в базе данных пакетов с помощью dpkg-query:

# dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n${Depends}\n' php5

php5 5.2.4-2ubuntu5.6   Ubuntu Core Developers <ubuntu-develdiscuss@lists.ubuntu.com>
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 удалит версию apache2, установленную диспетчером пакетов, но не коснется (и вы не захотите этого) файлов, которые были добавлены вручную - это потребует вашего тщательного осмотра и анализа системы.

Если вам повезет, make-файл, который установил, когда вы набрали сделать установку

также есть сделать удалить

В случае apache2 / httpd - у вас нет такой роскоши, но это довольно чистая установка, поскольку установка идет, поэтому вы должны иметь возможность идентифицировать каталог, в который вы установили, и

rm -rf / usr / местные / apache2 (или где бы вы ни установили apache)

должен удалить большинство файлов, размещенных в вашей системе.

Если у вас нет чистой установки, вам нужно будет найти файлы, которые были установлены в вашей системе.

Один из типичных способов определить, что было добавлено в вашу систему после установки, выполненной вручную (работает для всего, а не только для установки autoconfig), - это запустить команду:

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

Затем вы можете использовать выходные данные этой команды, чтобы предоставить вам список файлов, которые следует рассмотреть для удаления.

Я понимаю, что это не краткое руководство по удалению того, что было размещено в вашей системе, но именно проблемы, с которыми вы сталкиваетесь, именно поэтому люди так усердно работают над использованием менеджеров пакетов для управления своей системой (которые, помимо чистого добавления / удаление файлов, также предоставляет ряд других полезных преимуществ, таких как двоичная проверка, чтобы увидеть, было ли что-то изменено)

warpr объяснил, почему у вас две установки apache. Обычно, когда вы используете дистрибутив на основе пакетов, вам следует искать упакованную версию, прежде чем устанавливать что-либо из исходного кода.

Я бы не сказал, что вы не можете использовать упакованный php5 со скомпилированным apache, но если у вас нет веской известной причины, используйте пакет. Это сэкономит вам время и силы.

Что касается того, почему был автоматически установлен 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.

Выполняя «make install», вы, вероятно, установили apache, созданный из исходного кода, в каталогах, которыми должен управлять дистрибутив.

Если вам повезет, у apache есть «make uninstall», которая должна удалить все установленные файлы. В противном случае выполните make install еще раз и запишите вывод, чтобы проверить, какие файлы / каталоги он установил, и удалите их. После того, как вы закончите, переустановите apache, поставляемый Ubuntu (apt-get install --reinstall), так как некоторые из его файлов могли быть удалены.

В следующий раз обязательно установите его где-нибудь, не управляемое дистрибутивом:

./configure --prefix = / usr / local

Или даже лучше "./configure --prefix = / opt / apache-2.2.11" и создавать символические ссылки там, где они вам нужны.

Непонятно, как установить php5 без apache ... что я считаю безумием.

Поставляемый Ubuntu PHP был скомпилирован и протестирован с поставляемым Ubuntu apache. Если вы устанавливаете другой apache самостоятельно, вам также придется установить php самостоятельно.

Если вы хотите использовать PHP, поставляемый Ubuntu, с apache, скомпилированным с немного другими параметрами, рассмотрите возможность создания пакета Ubuntu из исходного кода (исходный код apt-get является отправной точкой).

Найдите файл httpd.

Во многих системах Linux он находится здесь:

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

Попробуйте отредактировать этот файл и посмотреть, запускаете ли вы 2 версии демона apache http. Удалите строки, начинающиеся с ненужной.

Я не вижу веской причины, по которой вы должны компилировать свой собственный apache. Одна из веских причин не делать этого состоит в том, что это значительно усложняет обслуживание. Установка исправлений безопасности - это не шутка, когда вам нужно собрать 5 разных программ для исправления. Предполагается, что вы действительно знаете об уязвимости системы безопасности. Вот почему мы используем пакеты, и в этом случае Ubuntu поставляет apache.

Итак, имея в виду, что вам, вероятно, не стоит этого делать, есть одна хитрость, о которой никто не упомянул. Если вы действительно хотите использовать ваш собственный скомпилированный apache с другими пакетами Ubuntu, используйте пакет «Equivs». Из описания:

Другое использование - обойти проверку зависимостей. Если пакет P не установлен в системе, пакеты, зависящие от P, обычно не могут быть установлены. Однако, если известно, что установлена ​​функциональность, эквивалентная P, этот инструмент можно использовать, чтобы обмануть систему управления пакетами Debian, заставив поверить в то, что пакет P действительно установлен. ПРИМЕЧАНИЕ: это следует считать грубым приемом для обхода неловких ситуаций, а не нормальным решением. Если вы используете эквиваленты для обхода ошибок в других пакетах Debian, вам также следует отправлять отчеты об ошибках для этих пакетов.