Как я могу восстановить символические ссылки System V?

Я случайно удалил все символические ссылки в /etc/rc1.d/. Как я могу их восстановить?

5
задан 14 June 2011 в 08:22

9 ответов

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 25 May 2018 в 20:20

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 25 July 2018 в 21:43

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 31 July 2018 в 12:33

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 2 August 2018 в 03:19

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 4 August 2018 в 19:17

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure, ни apt-get --reinstall install не восстанавливают символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default-(Start|Stop).

Скрипт ниже (тестируется) выглядит в сценарии после установки пакетов для команды update-rc.d, которая добавляет запуск скрипт. Предыдущие ссылки должны были быть удалены для работы, следовательно, строка update-rc.d -f [script-name] remove. Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл 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 - поиск «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

] Ресурсы:

dpkg-query -S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
6
ответ дан 6 August 2018 в 03:30

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure , ни apt-get -reinstall install восстанавливает символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default- (Start | Stop) .

Скрипт ниже (протестирован) выглядит в сценарии после установки пакетов для команды update-rc.d , которая добавляет сценарий запуска. Предыдущие ссылки должны были быть удалены, чтобы работать, поэтому update-rc.d -f [имя-скрипта] удаляет строку . Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл README , но это не критично.

  #! / Bin / bash cd  /etc/init.d & amp; & amp; & amp;  для файла в *;  do, если [-x "$ file"];  затем pkg = $ (dpkg-query -S "/etc/init.d/$file" | cut -d: -f1), если [-z "$ pkg"];  затем echo "** ПРЕДУПРЕЖДЕНИЕ ** Не найден соответствующий пакет, пропуская файл: $ file" else postinst = "/ var / lib / dpkg / info / $ pkg.postinst", если [-r "$ postinst"];  затем update = $ (grep -Po "(? & lt;! #) \ s * update-rc \ .d \ s + $ file \ s + ((start | stop | defaults) [\ s \ dS \.] +) +  «$ postinst» | sed -e 's / ^ \ s * //' -e 's / \ s \ + / / g'), если [-n "$ update"];  затем sudo update-rc.d -f "$ file" удалить sudo $ update else, если [-e "/etc/init/$file.conf"];  то echo "$ file был перемещен в Upstart" else echo "Нет строки update-rc.d для $ file" fi fi else echo "Нет сценария после установки, найденного для $ pkg" fi fi else echo "Не является исполняемым,  игнорирование файла: $ file "fi done  

Если вы хотите отремонтировать его вручную, вы можете использовать следующее:

  • dpkg-query - S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
  • less / var / lib / dpkg / info / [имя пакета ] .postinst - найдите «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

Ресурсы:

6
ответ дан 7 August 2018 в 21:17

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure , ни apt-get -reinstall install восстанавливает символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default- (Start | Stop) .

Скрипт ниже (протестирован) выглядит в сценарии после установки пакетов для команды update-rc.d , которая добавляет сценарий запуска. Предыдущие ссылки должны были быть удалены, чтобы работать, поэтому update-rc.d -f [имя-скрипта] удаляет строку . Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл README , но это не критично.

  #! / Bin / bash cd  /etc/init.d & amp; & amp; & amp;  для файла в *;  do, если [-x "$ file"];  затем pkg = $ (dpkg-query -S "/etc/init.d/$file" | cut -d: -f1), если [-z "$ pkg"];  затем echo "** ПРЕДУПРЕЖДЕНИЕ ** Не найден соответствующий пакет, пропуская файл: $ file" else postinst = "/ var / lib / dpkg / info / $ pkg.postinst", если [-r "$ postinst"];  затем update = $ (grep -Po "(? & lt;! #) \ s * update-rc \ .d \ s + $ file \ s + ((start | stop | defaults) [\ s \ dS \.] +) +  «$ postinst» | sed -e 's / ^ \ s * //' -e 's / \ s \ + / / g'), если [-n "$ update"];  затем sudo update-rc.d -f "$ file" удалить sudo $ update else, если [-e "/etc/init/$file.conf"];  то echo "$ file был перемещен в Upstart" else echo "Нет строки update-rc.d для $ file" fi fi else echo "Нет сценария после установки, найденного для $ pkg" fi fi else echo "Не является исполняемым,  игнорирование файла: $ file "fi done  

Если вы хотите отремонтировать его вручную, вы можете использовать следующее:

  • dpkg-query - S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
  • less / var / lib / dpkg / info / [имя пакета ] .postinst - найдите «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

Ресурсы:

6
ответ дан 10 August 2018 в 09:36

Самый надежный способ вернуть символические ссылки - это переустановка пакетов, в которых есть initscript.

Я заметил, что ни dpkg-reconfigure , ни apt-get -reinstall install восстанавливает символические ссылки. Не все скрипты соответствуют стандартам LSB и не предоставляют строку # Default- (Start | Stop) .

Скрипт ниже (протестирован) выглядит в сценарии после установки пакетов для команды update-rc.d , которая добавляет сценарий запуска. Предыдущие ссылки должны были быть удалены, чтобы работать, поэтому update-rc.d -f [имя-скрипта] удаляет строку . Я проверял, что все ссылки правильно помещены, единственным отсутствующим файлом был файл README , но это не критично.

  #! / Bin / bash cd  /etc/init.d & amp; & amp; & amp;  для файла в *;  do, если [-x "$ file"];  затем pkg = $ (dpkg-query -S "/etc/init.d/$file" | cut -d: -f1), если [-z "$ pkg"];  затем echo "** ПРЕДУПРЕЖДЕНИЕ ** Не найден соответствующий пакет, пропуская файл: $ file" else postinst = "/ var / lib / dpkg / info / $ pkg.postinst", если [-r "$ postinst"];  затем update = $ (grep -Po "(? & lt;! #) \ s * update-rc \ .d \ s + $ file \ s + ((start | stop | defaults) [\ s \ dS \.] +) +  «$ postinst» | sed -e 's / ^ \ s * //' -e 's / \ s \ + / / g'), если [-n "$ update"];  затем sudo update-rc.d -f "$ file" удалить sudo $ update else, если [-e "/etc/init/$file.conf"];  то echo "$ file был перемещен в Upstart" else echo "Нет строки update-rc.d для $ file" fi fi else echo "Нет сценария после установки, найденного для $ pkg" fi fi else echo "Не является исполняемым,  игнорирование файла: $ file "fi done  

Если вы хотите отремонтировать его вручную, вы можете использовать следующее:

  • dpkg-query - S /etc/init.d/[script-name] - получает имя пакета, ответственного за файл
  • less / var / lib / dpkg / info / [имя пакета ] .postinst - найдите «update-rc.d», чтобы получить команду, необходимую для установки сценариев запуска

Ресурсы:

6
ответ дан 13 August 2018 в 15:46

Другие вопросы по тегам:

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