Это говорит dpkgо замене отсутствующих файлов конфигурации файлами из .deb. Вы можете найти оригинальный пакет .deb /var/cache/apt/archivesили использовать свежую копию той же версии из репозитория вашего дистрибутива.
dpkg -i --force-confnew foo.deb
Это говорит dpkgо необходимости перезаписывать существующие файлы конфигурации файлами из .deb. Вы можете найти оригинальный пакет .deb /var/cache/apt/archivesили использовать свежую копию той же версии из репозитория вашего дистрибутива.
Этот флаг заставляет dpkg перезаписывать файл конфигурации *, если бы в противном случае он запросил разрешение на это *. Это ** не ** делает его волшебным образом воссоздать нетронутые файлы конфигурации из пакета.
Teddy 14 лет назад
0
Я верю, что ты прав. хорошо, так что вы хотите вместо этого `--force-confmiss`. в данном конкретном случае, например, samba, я думаю, что `--force-confnew` выполнит перезапись, но вы правы, что это зависит от особенностей скриптов конфигурации пакета.
quack quixote 14 лет назад
0
6
Teddy
Краткий ответ: /usr/share/samba/smb.confоригинальная версия файла smb.conf.
Когда я сталкиваюсь с такой ситуацией для любого пакета, я делаю одно из следующего:
Проверьте наличие файлов резервной копии оригинальной версии в вашем редакторе. Я использую Emacs, который обычно оставляет foo~файлы, и я установил параметр числового контроля версий, чтобы исходная версия всегда была foo.~1~. Но, возможно, вы сделали это другим способом или использовали какой-то другой редактор. Рассмотрите возможность проверки конфигурации вашего редактора, чтобы включить эту функцию, если вы этого еще не сделали; это хорошая привычка.
Переконфигурируйте пакет с помощью dpkg-reconfigure PACKAGENAME. Иногда это делает трюк. По моему опыту это редко работает; это зависит от того, как пакет создает свои файлы конфигурации.
Очистите и переустановите пакет (с apt-get purge packagenameпоследующим apt-get install packagename). Это всегда должно работать.
В крайних случаях, после очистки вы должны вручную выследить и удалить файлы конфигурации перед переустановкой пакета, но это происходит редко. Однако это исключит любые другие данные и / или файлы конфигурации для пакета, и это не всегда приемлемо.
Загрузите исходный код для пакета ( apt-get source foo) и посмотрите, существует ли там исходный файл конфигурации в виде файла. Тем не менее, может случиться так, что файл конфигурации не существует заранее, но создается при установке сценарием после установки пакета.
Проверьте сценарий postinst для package ( /var/lib/dpkg/info/foo.postinst), чтобы узнать, где он создает файл конфигурации и как он это делает. Затем попробуйте повторить процесс вручную. Это немного работы, и не всегда легко.
Это должно быть выше. Для меня это был просто случай выполнения `sudo cp /usr/share/samba/smb.conf / etc / samba / smb.conf`, чтобы перезаписать мой удаленный файл conf оригиналом.
edzillion 9 лет назад
0
2
naught101
dpkg-reconfigure <package> не будет изменять измененные файлы по умолчанию.
Вероятно, самый простой способ сделать это, если у вас все еще есть пакет в кэше apt, это запустить
где имя файла пакета обычно что-то вроде <package name>_<version>.deb(просто используйте завершение вкладки). Это будет проходить через тот же процесс, что и apt-upgrade, и спросит вас, что вы хотите сделать, когда обнаружит измененный файл conf. Просто введите Nв каждом приглашении. dpkg установит версию пакета из файла conf .dpkg-distв конце имени файла. Затем вы можете использовать vimdiffдругой инструмент слияния для сравнения различий и изменения файла read conf.
1
John T
Вы можете извлечь deb и получить оригинальный файл:
ar p packagename.deb data.tar.gz | tar zx
Использование `dpkg-source` проще, а использование` apt-get source PACKAGE` * намного * проще.
Teddy 14 лет назад
0
@Teddy: только если файл конфигурации по умолчанию включен в исходный пакет для начала. многие пакеты устанавливают файл конфигурации, в значительной степени зависящий от поставщика; некоторые автоматически генерируют свои конфигурационные файлы в сценарии `packagename.postinst`.
quack quixote 14 лет назад
1
1
Mahmoud Hossam
Вы можете загрузить и извлечь содержимое пакета deb
Это слишком низкий уровень способа сделать это
Frew Schmidt 15 лет назад
1
не значит, что это не сработает
John T 15 лет назад
4
1
Frew Schmidt
Лучший способ (полученный из #ubuntu) - сделать это:
dpkg-reconfigure <package>
В этом случае это означает
dpkg-reconfigure samba-common
1
Totor
Вы можете восстановить исходный smb.confфайл конфигурации следующим образом:
Это в основном то, что делает оригинальный процесс установки пакета (в Debian Squeeze).
Это перезапишет текущую версию smb.conf, поэтому сначала сделайте резервную копию, если не хотите ее потерять.
Спасибо за предоставление имени пакета, который содержит этот файл. "sudo aptitude purge samba-common; sudo aptitude install samba" был моим выбором, но ответ Тотора выглядит наименее пугающим и наиболее Debian из всех вариантов.
Martin Dorey 8 лет назад
0