Я случайно ввел sudo rm -rfd * в каталоге /usr /local. Что мне нужно сделать, чтобы хотя бы вернуть его к тому, как это было бы из новой установки (Linux Mint 15)?

2 ответа2

1

Никогда не пытайтесь восстановить системные файлы

О, пожалуйста, никогда не рекомендуйте восстановление файлов для системных файлов! Восстановление файла может быть предпринято для более уникальных файлов, таких как текст, который вы написали самостоятельно.

Восстановление системных файлов требует хлопот.

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.

0

Нет необходимости переустанавливать ОС, поскольку ОС не должна хранить ничего в /usr/local или в /opt (эти два варианта более или менее одинаковы).

Однако любые программы, которые вы сами скомпилировали или установили через менеджер пакетов или дерево портов, вполне могут оказаться в /usr /local /.

Therefor:

  1. Проверьте свои резервные копии. Что было в этих папках. Удалите и переустановите эти программы.
  2. Или, при отсутствии резервных копий, составьте список всех установленных пакетов, удалите и переустановите их все.

(Используйте apt-get или dpkg -l для получения списка пакетов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .