Я случайно ввел sudo rm -rfd * в каталоге /usr /local. Что мне нужно сделать, чтобы хотя бы вернуть его к тому, как это было бы из новой установки (Linux Mint 15)?
2 ответа
Никогда не пытайтесь восстановить системные файлы
О, пожалуйста, никогда не рекомендуйте восстановление файлов для системных файлов! Восстановление файла может быть предпринято для более уникальных файлов, таких как текст, который вы написали самостоятельно.
Восстановление системных файлов требует хлопот.
1-е решение
Для вашей системы просто переустановите его. Вам не нужно ничего стирать / форматировать во время установки: все недостающее будет просто заменено. Вам просто нужно обновить как обычно.
Но это не должно быть необходимым, так как /usr/local
наверняка пуст в вашей системе.
2-е решение
Обычно в этой папке почти ничего нет. Если вы знаете, что установили что-то там, просто переустановите его.
Наконец, некоторые пакеты могли поместить туда несколько файлов. Просто откройте терминал и убедитесь, что следующие команды ничего не выводят:
dpkg --get-selections | cut -f 1 | xargs dpkg -L | grep /usr/local
Пояснения
То, что он делает, довольно просто:
dpkg --get-selections
выведет список пакетов, установленных в вашей системе, в формате:
package_name installed
Но мы хотим только package_name
для каждой строки:
| cut -f 1
|
говорит bash
(программе, которая запускается в терминале), что вывод предыдущей команды не должен отображаться, а должен быть "передан" внутри следующей программы (здесь cut
).
cut
, как следует из названия, будет разбивать каждую строку на слова и сохранять только первое поле (-f 1
), которое будет отображаться.
Подводить итоги,
dpkg --get-selections | cut -f 1
должен вернуть список пакетов, установленных в вашей системе.
Теперь мы можем направить этот список в xargs
который действует как «для каждого элемента в списке do ...».
Вот,
xargs dpkg -L
выполнит:
dpkg -L package1
dpkg -L package2
dpkg -L package3
...
для каждого имени пакета, которое вы даете через канал.
dpkg -L mypackage
перечислены файлы, содержащиеся в пакете с именем "mypackage".
А теперь нам просто нужно взять этот список файлов и проверить, поместил ли какой-нибудь пакет файл в /usr/local
. Мы делаем это с помощью grep
который отфильтровывает любой вывод, не содержащий /usr/local
.
Итак, если мы приведем его в порядок, сначала мы получим список установленных пакетов, затем отформатируем этот список, чтобы сохранить только имена пакетов, затем перечислим установочные папки, используемые пакетом, а затем отфильтруем его, чтобы сохранить только то, что находится внутри. из /usr/local
.
Если команда ничего не возвращает, вам не о чем беспокоиться.
Альтернатива графическому интерфейсу
Насколько мне известно, нет альтернативы GUI.
Нет необходимости переустанавливать ОС, поскольку ОС не должна хранить ничего в /usr/local
или в /opt
(эти два варианта более или менее одинаковы).
Однако любые программы, которые вы сами скомпилировали или установили через менеджер пакетов или дерево портов, вполне могут оказаться в /usr /local /.
Therefor:
- Проверьте свои резервные копии. Что было в этих папках. Удалите и переустановите эти программы.
- Или, при отсутствии резервных копий, составьте список всех установленных пакетов, удалите и переустановите их все.
(Используйте apt-get или dpkg -l для получения списка пакетов).