удалил все файлы в usr / bin, набрав в rm -rf *

Я новичок в Linux и установил Ubuntu 12.04 сегодня. Я случайно удалил все, что написано в /usr/bin, набрав команду rm -rf *.

Я не знаю, что монтируется и хотел бы узнать, но на данный момент я думаю, что мне остается только переустановить все. Пожалуйста, дайте мне знать, как переустановить все сейчас. Это было бы очень полезно для меня.

4
задан 1 June 2015 в 16:09

5 ответов

/usr/bin/ содержит большинство программ, установленных в вашей системе.

Просто установить Ubuntu снова было бы самым простым и быстрым способом снова получить работающую систему.

0
ответ дан 1 June 2015 в 16:09

Ничто действительно трудно, если это - vm:

  1. сохраните список пакетов, которые Вы установили

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
    
  2. Установите ту же версию ОС (i386 или amd64) на новом VM

  3. На новой машине делают

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
    
  4. скопируйте содержание packs.txt в новой системе и можно сделать:

    install=$(diff -c ~/packs2.txt ~/packs.txt | grep "^- " | cut -d' ' -f2 | xargs echo )
    apt-get install -y --force-yes $install
    remove=$(diff -c ~/packs2.txt ~/packs.txt | grep "^+ " | cut -d' ' -f2 | xargs echo )
    apt-get purge -y --force-yes $remove
    
  5. Теперь новая система имеет то же содержание /usr/bin из Вашей поврежденной машины

  6. смонтируйте диск своей поврежденной машины в новую и наконец:

    rsync -av /usr/bin /mnt/usr/bin
    

прибыль

0
ответ дан 1 June 2015 в 16:09

Вы можете экспортировать этот каталог с другого компьютера через NFS? Да, это очень уродливо, и вы должны просто переустановить.

В любом случае: mount все еще должен работать, потому что

ls /usr/bin | grep mount

не дал мне ничего, кроме grub-mount. Так что просто копирование соответствующих файлов из смонтированного каталога может работать временно. Просто помните, sudo не будет работать, используйте su.

0
ответ дан 1 June 2015 в 16:09

Так как вы только что установили сегодня, повторите установку. Несмотря на то, что вы можете восстановиться после этого, будет гораздо больше работы, чем повторная установка.

Для восстановления после удаления /usr/bin вам необходимо переустановить все пакеты, в которых есть файлы в этом каталоге. Вы можете использовать эту команду для вывода списка затронутых пакетов:

cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//'

Затем вам нужно будет найти какой-нибудь способ загрузки пакетов, не полагаясь ни на одну из удаленных программ. Поскольку вы удалили dpkg, низкоуровневую утилиту установки пакетов, вам сначала нужно получить ее откуда-то. Возьмите его с какой-нибудь другой машины с той же версией Ubuntu или загрузите пакет dpkg на другую машину и извлеките из него программы. Вам понадобятся не только /usr/bin/dpkg, но и все другие программы в этом пакете, включая update-alternatives и все программы с именем /usr/bin/dpkg-*. Опять же, копирование может быть сложным с таким количеством удаленных программ, поэтому вам может потребоваться перезагрузка на аварийный CD / USB, чтобы сделать это.

Как только вы получите пакет dpkg, скачайте как минимум пакет dpkg и apt , возможно, на другой машине или в еще работающем веб-браузере .

Затем установите apt вручную с помощью команды

dpkg -i /path/to/apt_0.8.16~exp12ubuntu10.2.deb

Если вы получаете ошибки об отсутствующих командах, сначала переустановите соответствующие пакеты. Затем переустановите все затронутые пакеты:

apt-get --reinstall install $(grep -l '^/usr/bin/' *.list | sed 's/\.list$//')

Опять же, в вашей ситуации, просто выполните полную переустановку.

0
ответ дан 1 June 2015 в 16:09

У меня была та же самая глупая проблема ... вот что я сделал, чтобы все снова заработало:

1. Как и в ответе @Gilles, составьте список ваших пакетов:

cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/my_packages1.txt

2. Вставьте Live CD с той же версией Ubuntu, загрузитесь с нее и скопируйте каталог /usr/bin. Раздел с Ubuntu на моем жестком диске был смонтирован, так что это так же просто, как

cp -R /usr/bin /media/something/usr/bin

3. Теперь я не мог использовать sudo или pkexec, потому что я получил сообщение об ошибке должно принадлежать uid 0 и установить бит setuid . Поэтому мне пришлось изменить это, загрузившись с GRUB в корневую оболочку. (См. здесь , как это сделать, и на этом немецком сайте для некоторых фото.) Теперь:

mount -o remount,rw / 
chown -R root:root /usr/bin
chmod a=rx,u+ws /usr/bin/sudo
chmod a=rx,u+ws /usr/bin/pkexec

Перезагрузитесь в вашей обычной системе Ubuntu.

4. Переустановите ваши пакеты:

sudo xargs -a ~/my_packages1.txt apt-get install --reinstall
rm ~/my_packages.txt

5. Было еще много пропавших пакетов. debsums помог мне найти эти пакеты для их установки вручную. (Возможно, с этим шагом 1 и 4 устарели, но я не пробовал ...)

sudo apt-get install debsums
sudo debsums_init

# This lets debsums find packages with missing files, filters the package names and writes the unique ones to the file.
sudo debsums -cs 2>&1 >/dev/null | sed -e 's/\(.*\)from \(.*\) package\(.*\)/\2/' | uniq -u > my_packages2.txt

sudo xargs -a ~/my_packages2.txt apt-get install --reinstall
0
ответ дан 1 June 2015 в 16:09

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

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