Пропавшие без вести init.d/apache2 файл

-S (или в командной строке или во вводе - и S при выполнении less) длинные линии прерываний и полезны при просмотре, например, файлы журнала. Ввести - и S снова переключаться назад.

5
26.11.2018, 00:31
3 ответа

Попытайтесь использовать 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

8
27.01.2020, 20:31
  • 1
    В моем Debian 6.0.1 системы init сценарий принадлежит apache2.2-common пакет. Можно узнать эти отношения для любого файла в системе с dpkg -S /path/to/file. –  Caleb 04.05.2011, 15:24
  • 2
    Так как init сценарий принадлежит -common подпакет, вероятно, что Вы только удалили основной пакет и на самом деле не удалили все связанные подпакеты. Вы вручную удалили файл, принадлежащий подпакету. В этом случае, переустанавливающем просто основной пакет, не поможет вообще. Вы должны apt-get install --re-install apache2.2-common связать файлы с тем пакетом назад. –  Caleb 04.05.2011, 15:29
  • 3
    , к сожалению, это не восстанавливает мой init-сценарий. Я не могу восстановить его / или скорее, казаться, не мочь правильно переустановить пакет Apache. Возможно, мой вопрос должен быть, как я правильно моюсь / удаляют предыдущие установленные пакеты и все зависимости / папки + файлы с ним. –  Alexander Grosse 04.05.2011, 15:37
  • 4
    @Caleb: Вы говорите, что "Я копировал проблему в системе тестирования". Я не уверен, какова проблема. Можно ли предоставить рецепт воспроизведения? Это связано с bugs.debian.org/621720? Если Вы находите проблему, и о ней уже не сообщили, зарегистрируйте отчет об ошибках.Спасибо. –  Faheem Mitha 04.05.2011, 17:53
  • 5
    @Caleb: После выяснения у списка dpkg (и быть отчитанным для него) + далее игра, следующие работы. Будьте осторожны с этим. Это заменит все Ваши измененные файлы конфигурации версией от пакета. apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confask" install --reinstall apache2.2-common. Я не знаю, почему Вам был нужен я, чтобы сказать Вам это. Это - первая вещь, о которой необходимо было думать. :-) –  Faheem Mitha 05.05.2011, 18:15

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

Так, проблема, как описано в сообщении Caleb, была то, что Alexander удалил (или возможно изменил),/etc/init.d/apache2 и требуемый для возвращения его. Этот файл находится в apache-2.2-common. Очевидное apt-get install --reinstall apache2.2-common не восстанавливает файл, все же. Причина этого, на политику Debian, состоит в том, что файлы конфигурации не затронуты системой, после того как они изменились, если явно не спросил пользователь. См. политику Debian в отношении обработки файла конфигурации: Раздел 10.7.3. Кавычка:

Обработка конфигурационного файла должна соответствовать следующему поведению:

  1. локальные изменения должны быть сохранены во время обновления пакета, и

  2. конфигурационные файлы должны быть сохранены, когда пакет удален и только удален, когда пакет очищен.

Дополнения пакетов и удаления обрабатываются dpkg. dpkg, отличает два случая здесь, когда файл изменяется, и когда он был полностью удален. Посмотрите раздел в разделе опций, запускающемся с --force-things в dpkg странице справочника. (Соединение с dpkg 1,16 страницами Ubuntu, потому что я не мог найти Debian, сжимает страницы справочника онлайн. Если у Вас есть указатель, прокомментируйте.)

Таким образом для этих двух ситуаций

  1. Если Вы хотите conf файлы, которые были удалены, чтобы быть замененными переустановкой, необходимо передать --force-confmiss опция к dpkg.

  2. Если Вы хотите 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. Если Вы знаете о ком-либо, прокомментируйте.

Комментарии:

  1. Я думаю, сталкиваетесь ли Вы с ситуацией, где Вы испортили файл конфигурации и хотите отступить, более безопасно переименовать его и затем использовать --force-confmiss вместо того, чтобы просить все Ваши локальные модификации быть замененным значением по умолчанию на --force-confnew, который является в целом не, что Вы хотите.

  2. При работе с файлами конфигурации всегда сохраняйте их при управлении версиями. Это сделало бы выпуски испорченных файлов конфигурации спорными. Я использую и рекомендую подвижный. В этом случае (и вероятно любой случай :-)), Вы более обеспечены в этом контексте с помощью распределенного управления версиями, чем централизованная система управления версиями как подверсия. Хорошая программа для того, чтобы сделать это является etckeeper.

  3. Это также стоит упомянуть и, возможно, способствовало беспорядку здесь, этому с Кв. в сжатии, apache2.2-common не удаляет чисто, из-за способной ошибки 621720, который по совпадению покрывает случай apache2.2-common удаление. На отчет об ошибках необходимо будет использовать

    apt-get remove apache2.2-common -o pkgProblemResolver::FixByInstall=0`
    

    (проверенный мной).

  4. Посмотрите Все, что необходимо знать о 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. Это - ценная работа и существует недостаточно людей, делающих его.

10
27.01.2020, 20:31

У меня была эта точно та же самая проблема в системе 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
2
27.01.2020, 20:31
  • 1
    Попытка решить это приблизительно в течение часа на Вальдорфе Crunchbang, который является функционально Хрипящим Debian. Это было ответом, который на самом деле работал на меня. Все файлы в /etc/apache2 кажись, были восстановлены. –  Chris Allen Lane 11.10.2016, 02:25

Теги

Похожие вопросы