Я новичок в Linux и установил Ubuntu 12.04 сегодня. Я случайно удалил все, что написано в /usr/bin
, набрав команду rm -rf *
.
Я не знаю, что монтируется и хотел бы узнать, но на данный момент я думаю, что мне остается только переустановить все. Пожалуйста, дайте мне знать, как переустановить все сейчас. Это было бы очень полезно для меня.
/usr/bin/
содержит большинство программ, установленных в вашей системе.
Просто установить Ubuntu снова было бы самым простым и быстрым способом снова получить работающую систему.
Ничто действительно трудно, если это - vm:
сохраните список пакетов, которые Вы установили
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
Установите ту же версию ОС (i386 или amd64) на новом VM
На новой машине делают
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
скопируйте содержание 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
Теперь новая система имеет то же содержание /usr/bin
из Вашей поврежденной машины
смонтируйте диск своей поврежденной машины в новую и наконец:
rsync -av /usr/bin /mnt/usr/bin
прибыль
Вы можете экспортировать этот каталог с другого компьютера через NFS? Да, это очень уродливо, и вы должны просто переустановить.
В любом случае: mount все еще должен работать, потому что
ls /usr/bin | grep mount
не дал мне ничего, кроме grub-mount
. Так что просто копирование соответствующих файлов из смонтированного каталога может работать временно. Просто помните, sudo
не будет работать, используйте su
.
Так как вы только что установили сегодня, повторите установку. Несмотря на то, что вы можете восстановиться после этого, будет гораздо больше работы, чем повторная установка.
Для восстановления после удаления /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$//')
Опять же, в вашей ситуации, просто выполните полную переустановку.
У меня была та же самая глупая проблема ... вот что я сделал, чтобы все снова заработало:
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