Запустив Ubuntu 17.04, я устанавливал программное обеспечение из дистрибутива, не являющегося репозиторием, я должен был перенести содержимое папки bin в / usr / bin (что уже было ненадежным советом)
Это один из тех дней, так что я сделал вместо этого:
mv /bin/* /usr/bin
Поэтому я облажался и случайно переместил все файлы в bin в / usr / bin, а / bin был пуст. Поскольку я считаю, что / bin критичен к системе, для быстрого устранения проблем я скопировал содержимое / usr / bin в / bin.
Теперь содержимое моих / bin и / usr / bin идентично, и оба содержат файлы, изначально разделенные на / bin и / usr / bin.
- Мой Ubuntu в сломанном состоянии сейчас? (Еще не пытался перезагрузить компьютер, сейчас все вроде бы работает)
- Есть ли способ узнать, какие файлы были перемещены / скопированы в / usr / bin совсем недавно, так что я мог бы просто вручную позаботиться о ситуации? 2.1 Есть ли обычно перекрывающиеся файлы в / bin и / usr / bin
- Есть ли другие способы отменить то, что я сделал?
У меня не установлен Timeshift, поэтому восстановление резервных копий не вариант, но в данный момент на компьютере нет ничего критичного, так что я могу просто допустить, чтобы переустановить весь раздел Linux.
/bin
критически важен для системы. Его содержимое должно присутствовать на самых ранних этапах загрузки. Вы не хотите создавать символическую ссылку на раздел (/usr
здесь), который не может быть смонтирован при загрузке./bin
по умолчанию. Разделение по умолчанию в Ubuntu не создает отдельных/usr
разделов. Мне любопытно, сколько людей на самом деле разделяют/usr
современный дистрибутив.Ответы:
Да, твоя Ubuntu сломана
Вы испортили что-то важное для управления пакетами .
Таким образом, на практике, сделайте резервную копию ваших важных данных (по крайней мере,
/etc
и/home
), возможно, также список установленных пакетов, например, выводdpkg -l
и переустановите Ubuntu.(неопытный может попытаться справиться - как в других ответах - но тогда он не сделал бы такой огромной и основной ошибки)
Это, вероятно, то, что будет занимать меньше вашего времени. Поддержание вашей нынешней системы с помощью других ответов приводит к тому, что она находится в очень грязном состоянии (что приведет к будущим головным болям).
Поскольку вы переформатируете свой диск, рассмотрите возможность
/home
размещения отдельного раздела (чтобы в будущем такие ошибки не потеряли ваши данные). Перед этим напечатайте на бумаге выходные данныеdf -h
иdf -hi
иfdisk -l
(они дают информацию о дисковом пространстве - как используемом, так и доступном - ...). Желательно иметь достаточно большой системный раздел (корневую файловую систему); если вы можете себе это позволить, 100 Гбайт более чем достаточно.(терминология: в Unix есть каталоги, а не «папки»).
Это ( переход к
/usr/bin/
) очень неправильно. Либо улучшайте свой $ PATH (предпочтительно), либо, самое большее, добавляйте символические ссылки в/usr/bin/
и предпочтительно перемещайте (или добавляйте символические ссылки) исполняемые файлы/usr/local/bin/
.Мудрый подход к никогда не изменится
/usr/bin/
,/bin
,/sbin
,/usr/sbin/
за пределами инструментов управления пакетами (напримерdpkg
,apt-get
,aptitude
и т.д. ...). Прочитайте FHS .источник
/bin
и/usr/bin
сейчас идентичны, я не уверен, почему управление пакетом было бы испорчено. Есть ли действительно тот случай, когда/bin/foo
и то/usr/bin/foo
и другое предоставляется пакетом (-ами). Если нет, то есть только несколько дополнительных файлов./
раздела составляет 12 ГБ, и я никогда не сталкивался с проблемой нехватки места, несмотря на то, что использовал его для разработки (чтение файлов заголовка и многих инструментов), офиса и дизайна (чтение тяжелых инструментов), в KDE (чтение не самое тонкое). Добавьте больше 4 ГБ, если вы не разделите/var
, увеличьте на 25%, если вы хотите получить больший запас, чем у меня, и на 20 ГБ вы более чем хороши.В Linux (и в большинстве других систем, хотя POSIX не дает вам такой гарантии, если бы не было перемещения по файловым системам), это обновило бы их ctime, поэтому при условии, что ни одна из других
/usr/bin
не была затронута за последние 24 часа , вы должны быть в состоянии переместить их обратно с помощью:Удалите,
echo
если это выглядит правильно. Обратите внимание, что вы не сможете восстановить файлы, которые существовали с тем же именем в/bin
и/usr/bin
(оригинальные файлы в/usr/bin
были бы потеряны)Потенциальная оговорка: если некоторые файлы были жестко связаны в обоих
/bin
и/usr/bin
все жесткие ссылки в/usr/bin
будут перемещены в/bin
.Теперь вы можете подумать, что поскольку
/bin
и/usr/bin
по умолчанию$PATH
, и/bin
доступно по/boot
крайней мере до того,/usr
как смонтировано, не должно иметь значения, включены ли исполняемые файлы/bin
вместо/usr/bin
.Но было бы упускать из виду, что многие команды жестко кодируют пути исполняемых файлов и ожидают, что они будут в каком-то конкретном случае. Распространенный случай - челка. Все скрипты, которые имеют:
не сможет работать после вас
mv /usr/bin/env /bin/env
. В связи с этим наличие команд в обоих местах безопаснее, поскольку они не нарушают эти сценарии.источник
i
извините за это!) В системах GNU / Linux, таких как Ubuntu, которую можно использовать,find /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +
поскольку GNU Coreutilsmv
поддерживает-t
. Другие ОС, как правило, не поддерживают его и не работают в альтернативном варианте,mv
предоставляемом BusyBox .Ваша установка должна быть в основном в порядке; не должно быть разных файлов с одинаковыми именами в
/usr
и/usr/bin
(что соответствует вашему 2.1), поэтому наличие всех файлов в обоих/bin
и/usr/bin
ничего не сломает (пока вы не обновите пакеты). Единственная проблема, с которой вы можете столкнуться - это неработающие символические ссылки, если вы перезаписали двоичный файл с символической ссылкой на него. Чтобы это исправить, ищите битые символические ссылки:и переустановите все пакеты, соответствующие перечисленным файлам (например, если он обнаружен
/usr/bin/zsh
как поврежденный,dpkg -S /bin/zsh /usr/bin/zsh
он сообщит вам, из какого пакета пришел файл; переустановите егоapt --reinstall install zsh
).Вы можете показать и отсортировать по времени, чтобы увидеть файлы, которые были недавно изменены (которые будут включать файлы, которые вы переместили):
Лучший подход , чтобы отменить то , что вы сделали это использовать
cruft
пакет и удалять файлы , которые он находит в/bin
или/usr/bin
которые не входят в пакет:если файлы не являются символическими ссылками на файлы в
/etc/alternatives
(в этом случае вы должны оставить их в покое).источник
#! /bin/sh
или аналогичными.sh
есть в обоих/bin
и/usr/bin
(все файлы теперь дублируются).cruft
этой работы не требуется специальный инструментарий, такой как менеджер пакетов, который также отслеживает установленные файлы. См. Unix.stackexchange.com/questions/153260/… .comm -12 <(ls /bin) <(ls /usr/bin)
показать несколько записей в системе Ubuntu, на которой я ее тестировал. Некоторые из/bin/foo -> /usr/bin/foo
которыхfoo
были бы потеряны.Может быть полезно выяснить, почему ваша система в большей или меньшей степени «сломана».
/bin
когда они должны быть/usr/bin
, и наоборот.$PATH
)./bin
и/usr/bin
заключается в том, что первый потенциально может находиться в разделе, который смонтирован на более ранней стадии загрузки. В этом контексте (т. Е. При загрузке системы) не только/bin/xxx
двоичные файлы, вероятно, будут указываться по полному пути, но каталог/usr/bin
может быть недоступен в системе в этот момент. (Если выdf /bin
иdf /usr/bin
, возможно, видите одну и ту же файловую систему в списке или разные; вероятно, большинство установок по умолчанию в наши дни оставляют оба каталога в одном разделе).Таким образом , вы можете doubless видеть , что если у вас есть такие же двоичные файлы в обоих
/bin
и/usr/bin
, затем проблемы 2 и 3 не будет происходить, и ущерб от 1 , может быть незначительным. Например, например, пакеты 1 могут быть не удалены должным образом, если вы попытаетесь удалить их; и обновления могут быть искажены, если обновление пытается обновить копию в «правильном» месте, но игнорирует копию в «неправильном» месте. Таким образом, если вышеперечисленные средства кажутся слишком радикальными или сложными, вы можете сойти с рук, оставив систему в этом состоянии.Но если это важная система, я действительно бы ставку не на что.
Общее правило (опять-таки echoing @ basile-starynkevitch) - никогда не поддаваться мошенничеству
/usr/bin
,/bin
и друзья - они «принадлежат» к дистрибутиву - и пакет, который предлагает сделать это в рамках его обычной установки, ... не очень хороший пакет.Изменить: Относительно пункта 3, в контексте systemd / Fedora и его друзей обсуждается, почему имеет смысл переместить все содержимое
/bin
в/usr/bin
, и символическую ссылку с первого на второе. Это не рекомендация делать это самостоятельно - эта страница адресована людям, которые делают рассылки - но она включает в себя некоторую историю того, почему существует это различие (и подразумевается, почему это теперь просто пыльная традиция).источник