Я случайно удалил все символьные ссылки в /etc/rc1.d/
. Как я могу повторно создать их?
Самый надежный способ вернуть символьные ссылки переустановил бы пакеты, которые имеют initscript в нем.
Я заметил это ни один dpkg-reconfigure
ни apt-get --reinstall install
восстанавливает символьные ссылки. Не все сценарии выполняют стандарты LSB и не обеспечивают a # Default-(Start|Stop)
строка.
Ниже (протестированного) сценария смотрит в сценарии после установки пакетов для update-rc.d
команда, которая добавляет сценарий запуска. Предыдущие ссылки должны были быть удалены для работы, следовательно update-rc.d -f [script-name] remove
строка. Я проверил, что все ссылки правильно отложены, единственный недостающий файл был a README
файл, но это не очень важно.
#!/bin/bash
cd /etc/init.d && for file in *; do
if [ -x "$file" ]; then
pkg=$(dpkg-query -S "/etc/init.d/$file" | cut -d: -f1)
if [ -z "$pkg" ]; then
echo "**WARNING** No related package found, skipping file: $file"
else
postinst="/var/lib/dpkg/info/$pkg.postinst"
if [ -r "$postinst" ]; then
update=$(grep -Po "(?<!#)\s*update-rc\.d\s+$file\s+((start|stop|defaults)[\s\dS\.]+)+" "$postinst" | sed -e 's/^\s*//' -e 's/\s\+/ /g')
if [ -n "$update" ]; then
sudo update-rc.d -f "$file" remove
sudo $update
else
if [ -e "/etc/init/$file.conf" ]; then
echo "$file has been moved to Upstart"
else
echo "No update-rc.d line found for $file"
fi
fi
else
echo "No post-installation script found for $pkg"
fi
fi
else
echo "Not an executable, ignoring file: $file"
fi
done
Если Вы хотите восстановить его вручную, можно использовать следующее:
dpkg-query -S /etc/init.d/[script-name]
- получает имя пакета, ответственное за файлless /var/lib/dpkg/info/[package-name].postinst
- поиск "обновления-rc.d" для нужданий в команде для установки сценариев запускаРесурсы: