-S
(или в командной строке или во вводе -
и S
при выполнении less
) длинные линии прерываний и полезны при просмотре, например, файлы журнала. Ввести -
и S
снова переключаться назад.
Попытайтесь использовать apt-get install --reinstall apache2
для принуждения Кв. - заставляют систему устанавливать снова даже при том, что пакет существует, и перезапишите текущие файлы — даже те это думает уже, там.
Путем ручного удаления вещей из системы Вам, несомненно, перепутали диспетчер пакетов о том, чему нужно выполнение где. Вы обычно хотите придерживаться использования инструментов, обеспеченных, если Вы не понимаете то, что Вы производите путем ручной игры.
Как дополнительное примечание, Вы не должны обычно смешивать с файлами в/etc/init.d сами. Существует инструмент, который заботится о запущении тех скриптов для Вас. Например, для перезапуска апача Вы могли работать service apache2 restart
.
Отредактированный на основе информации найден в комментариях
init сценарий является частью подпакета. Установка пакета впервые установит, это - зависимости, но удаление его просто удалит пакет, не это - зависимости. init сценарий, который Вы вручную удалили, принадлежит apache2.2-common
пакет с был зависимостью основного apache2
имя пакета. Удаление apache2 даже с --purge
не имел бы никакого эффекта на init сценарий, потому что это - часть другого пакета. Получить его обратный ход apt-get install --reinstall apache2.2-common
.
Edit2
По-видимому, Debian является дурацким. Я копировал проблему в системе тестирования и не мог вернуть init сценарий с диспетчером пакетов. Я нашел несколько других людей с той же проблемой в сети, и похоже, что решение состоит в том, чтобы вручную загрузить пакет, извлечь его и сорвать файл как это:
cd /tmp
aptitude download apache2.2-common
dpkg --extract apache2.2-common_*.deb apache2.2-common
sudo cp apache2.2-common/etc/init.d/apache2 /etc/init.d
Edit3
Благодаря расследованию, сделанному Faheem Mitha и обсуждением комментариев ниже, удался полный ответ на этот вопрос. Ответ Read Faheem для полного изложения. Для значения юмора вот примечания утеса:
Короткая версия - то, что init сценарии считают conf файлами, и склонный - добираются, слишком вежливо для касания conf файлов, которые были изменены пользователями всегда, даже для восстановления удаленный на переустанавливают после удаления. Прежде чем Вы скажете "понятное дело, конечно", проверите гимнастику, необходимо сделать. Я заключаю в кавычки:
После выяснения у списка dpkg (и быть отчитанным для него) + далее игра, следующие работы. Будьте осторожны с этим. Это заменит все Ваши измененные файлы конфигурации версией от пакета.
apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confask" install --reinstall apache2.2-common
. Я не знаю, почему Вам был нужен я, чтобы сказать Вам это. Это - первая вещь, о которой необходимо было думать. :-) – Faheem Mitha
(Я - развитие ответа Caleb, хотя большая часть релевантной информации уже будет в комментариях. Я полагаю, что сводка могла бы быть более удобной, чем необходимость просмотреть комментарии.)
Так, проблема, как описано в сообщении Caleb, была то, что Alexander удалил (или возможно изменил),/etc/init.d/apache2
и требуемый для возвращения его. Этот файл находится в apache-2.2-common
. Очевидное apt-get install --reinstall apache2.2-common
не восстанавливает файл, все же. Причина этого, на политику Debian, состоит в том, что файлы конфигурации не затронуты системой, после того как они изменились, если явно не спросил пользователь. См. политику Debian в отношении обработки файла конфигурации: Раздел 10.7.3. Кавычка:
Обработка конфигурационного файла должна соответствовать следующему поведению:
локальные изменения должны быть сохранены во время обновления пакета, и
конфигурационные файлы должны быть сохранены, когда пакет удален и только удален, когда пакет очищен.
Дополнения пакетов и удаления обрабатываются dpkg. dpkg, отличает два случая здесь, когда файл изменяется, и когда он был полностью удален. Посмотрите раздел в разделе опций, запускающемся с --force-things
в dpkg странице справочника. (Соединение с dpkg 1,16 страницами Ubuntu, потому что я не мог найти Debian, сжимает страницы справочника онлайн. Если у Вас есть указатель, прокомментируйте.)
Таким образом для этих двух ситуаций
Если Вы хотите conf файлы, которые были удалены, чтобы быть замененными переустановкой, необходимо передать --force-confmiss
опция к dpkg.
Если Вы хотите conf файлы, которые были изменены, но не удалены, чтобы быть замененными их версией по умолчанию на установке, необходимо передать обоих --force-confnew
и --force-confask
опции к dpkg. Как страница справочника объясняет, - сила-confnew отдельно только заменит измененный conf файл значением по умолчанию в случаях, когда значение по умолчанию будет более новым, чем первоначально установленное значение по умолчанию, т.е. на обновлении.
Если мы вызываем dpkg через Кв., мы должны передать эти опции Кв. Это сделано следующим образом для этих двух случаев выше:
apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall apache2.2-common
apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confask" install --reinstall apache2.2-common
Я не мог найти документацию для Dpkg::Options
. Я нашел его путем поиска с помощью Google. Если Вы знаете о ком-либо, прокомментируйте.
Комментарии:
Я думаю, сталкиваетесь ли Вы с ситуацией, где Вы испортили файл конфигурации и хотите отступить, более безопасно переименовать его и затем использовать --force-confmiss
вместо того, чтобы просить все Ваши локальные модификации быть замененным значением по умолчанию на --force-confnew
, который является в целом не, что Вы хотите.
При работе с файлами конфигурации всегда сохраняйте их при управлении версиями. Это сделало бы выпуски испорченных файлов конфигурации спорными. Я использую и рекомендую подвижный. В этом случае (и вероятно любой случай :-)), Вы более обеспечены в этом контексте с помощью распределенного управления версиями, чем централизованная система управления версиями как подверсия. Хорошая программа для того, чтобы сделать это является etckeeper.
Это также стоит упомянуть и, возможно, способствовало беспорядку здесь, этому с Кв. в сжатии, apache2.2-common
не удаляет чисто, из-за способной ошибки 621720, который по совпадению покрывает случай apache2.2-common
удаление. На отчет об ошибках необходимо будет использовать
apt-get remove apache2.2-common -o pkgProblemResolver::FixByInstall=0`
(проверенный мной).
Посмотрите Все, что необходимо знать о conffiles: конфигурационные файлы, управляемые dpkg для обсуждения обработки файла конфигурации dpkg Raphaël Hertzog, одним из разработчиков dpkg. Он упоминает это --force-confask
является новым в Сжатии. Он также упоминает это
dpkg --status apache2.2-common
дает список conffiles, наряду с другой информацией. или просто
dpkg-query --showformat='${Conffiles}\n' --show apache2.2-common
если Вы только хотите ту информацию.
Благодаря David Kalnischkies и Raphaël Hertzog для ответа на мои вопросы об этом (и сообщение мне я отправлял на неправильный список рассылки). Я думаю, что документация Debian в этом контексте могла быть улучшена, и конкретно dpkg страница справочника могла сделать с дополнительными примерами использования. Я поощряю людей здесь (кто очевидно готов выручить) также занимать время для содействия патчей документации к проектам бесплатного программного обеспечения как Debian. Это - ценная работа и существует недостаточно людей, делающих его.
У меня была эта точно та же самая проблема в системе Debian. Это влияло и на апача и на nginx.
Все решения здесь не работали на меня; чистка, переустанавливая, загружая и ручная установка и Dpkg:: Опции не работали.
Оказывается, что одна из зависимостей создает файлы конфигурации, должен был запустить и остановить сервисы. Вы просто удаляете все зависимости и делаете новое переустанавливает.
Я нашел решение здесь: http://dancingpenguinsoflight.com/2009/02/how-to-completely-reset-an-apache-instance-in-ubuntu/
APACHE_PKGS=`sudo dpkg --get-selections | grep apache | cut -f 1`
# Make sure things are sane:
echo $APACHE_PKGS
# Example output: apache2 apache2-mpm-prefork apache2-utils apache2.2-common \
# libapache2-mod-php5 libapache2-mod-python libapache2-svn
# Likely if you have a Python application:
# libapache2-mod-python libapache2-mod-python-doc libapache2-mod-wsgi
# Or if you roll with the PHP:
# libapache2-mod-php5
sudo apt-get remove --purge $APACHE_PKGS
/etc/apache2
кажись, были восстановлены.
– Chris Allen Lane
11.10.2016, 02:25
apache2.2-common
пакет. Можно узнать эти отношения для любого файла в системе сdpkg -S /path/to/file
. – Caleb 04.05.2011, 15:24-common
подпакет, вероятно, что Вы только удалили основной пакет и на самом деле не удалили все связанные подпакеты. Вы вручную удалили файл, принадлежащий подпакету. В этом случае, переустанавливающем просто основной пакет, не поможет вообще. Вы должныapt-get install --re-install apache2.2-common
связать файлы с тем пакетом назад. – Caleb 04.05.2011, 15:29apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confask" install --reinstall apache2.2-common
. Я не знаю, почему Вам был нужен я, чтобы сказать Вам это. Это - первая вещь, о которой необходимо было думать. :-) – Faheem Mitha 05.05.2011, 18:15