Sous Ubuntu 17.04, j'installais un logiciel à partir d'une distribution non référentielle, je devais déplacer le contenu du dossier du logiciel vers / usr / bin (ce qui était déjà un conseil)
C'est un de ces jours, alors ce que j'ai fait à la place:
mv /bin/* /usr/bin
J'ai donc foiré et j'ai accidentellement déplacé tous les fichiers du bac vers / usr / bin et / bin était vide. Comme je considère que / bin est critique pour le système, pour y remédier rapidement, j'ai copié le contenu de / usr / bin dans / bin.
Maintenant, mon contenu / bin et / usr / bin sont identiques et contiennent tous les deux les fichiers à l'origine dans / bin et / usr / bin séparés.
- Mon Ubuntu est-il en panne maintenant? (N'a pas encore essayé de redémarrer l'ordinateur, en ce moment tout semble toujours fonctionner)
- Existe-t-il un moyen de savoir quels fichiers ont été déplacés / copiés vers / usr / bin le plus récemment, afin que je puisse simplement gérer manuellement la situation? 2.1 Y a-t-il généralement des fichiers qui se chevauchent dans / bin et / usr / bin
- Y a-t-il d'autres façons d'annuler ce que j'ai fait?
Je n'ai pas installé Timeshift, donc la restauration des sauvegardes n'est pas une option, mais il n'y a actuellement rien de critique sur l'ordinateur, donc je pourrais juste admettre de bousiller réinstaller toute la partition linux.
/bin
est critique pour le système. Son contenu doit être présent dès les premières étapes de démarrage. Vous ne voulez pas créer un lien symbolique vers une partition (/usr
ici) qui ne peut pas être montée au démarrage./bin
par défaut. Le partitionnement par défaut d'Ubuntu ne fait pas de/usr
partitions distinctes . Je suis curieux de savoir combien de personnes font réellement une séparation/usr
avec une distribution moderne.Réponses:
Oui, votre Ubuntu est cassé
Vous avez gâché quelque chose d'important pour la gestion des packages .
Donc, dans la pratique, sauvegardez vos données importantes (au moins
/etc
et/home
), peut-être aussi la liste des packages installés, par exemple la sortie dedpkg -l
, et réinstallez Ubuntu.(un non-novice pourrait essayer de gérer - comme dans d'autres réponses -, mais il n'aurait pas fait une erreur aussi énorme et fondamentale)
C'est probablement ce qui consommerait moins de votre temps. Garder votre système actuel à l'aide d'autres réponses, c'est le garder dans un état très désordonné (ce qui vous donnerait de futurs maux de tête).
Puisque vous reformatez votre disque, envisagez de placer
/home
une partition distincte (afin que de telles erreurs futures ne perdent pas vos données). Avant de faire cela, imprimez sur papier la sortie dedf -h
etdf -hi
etfdisk -l
(ils donnent des informations sur l'espace disque -les deux utilisés et disponibles- ...). Soyez sage d'avoir une partition système suffisamment grande (le système de fichiers racine); si vous pouvez vous le permettre, 100 Go sont plus que suffisants.(terminologie: Unix a des répertoires, pas des "dossiers").
Cela ( passer à
/usr/bin/
) est très faux. Améliorez votre $ PATH (de préférence) ou tout au plus ajoutez des liens symboliques dans/usr/bin/
et de préférence déplacez (ou ajoutez des liens symboliques) aux exécutables/usr/local/bin/
.L'approche sage est de ne jamais changer
/usr/bin/
,/bin
,/sbin
, en/usr/sbin/
dehors des outils de gestion des paquets (par exempledpkg
,apt-get
,aptitude
, etc ...). Lisez le FHS .la source
/bin
et/usr/bin
sont maintenant identiques, je ne sais pas pourquoi la gestion des paquets serait bousillée. Existe-t-il vraiment un cas où/bin/foo
et/usr/bin/foo
sont tous deux fournis par un ou des packages. Sinon, il y a juste quelques fichiers supplémentaires qui flottent./
partition de mon système principal est de 12 Go et je n'ai jamais rencontré de problème d'espace malgré son utilisation pour le développement (lire les fichiers d'en-tête et de nombreux outils), le bureau et la conception (lire les outils lourds), sur KDE (lire pas le plus mince). Ajoutez 4 Go de plus si vous ne vous séparez pas/var
, gonflez de 25% si vous voulez une marge plus grande que moi, et à 20 Go, vous êtes plus que bon.Sous Linux (et sur la plupart des autres systèmes, bien que POSIX ne vous donne pas cette garantie à moins que le déplacement n'ait eu lieu sur les systèmes de fichiers), cela aurait mis à jour leur heure de connexion, donc en supposant qu'aucun des autres
/usr/bin
n'a été touché au cours des dernières 24 heures , vous devriez pouvoir les reculer avec:Retirez le
echo
si cela vous semble correct. Notez que vous ne pourrez pas récupérer les fichiers qui existaient sous le même nom dans/bin
et/usr/bin
(ceux d'origine dans/usr/bin
auraient été perdus)Une mise en garde potentielle: si certains fichiers étaient liés en dur dans les deux
/bin
et/usr/bin
, tous les liens en dur/usr/bin
seraient déplacés vers/bin
.Maintenant, vous pouvez penser que puisque
/bin
et/usr/bin
sont dans la valeur par défaut$PATH
, et/bin
est disponible/boot
au moins avant le/usr
montage, peu importe que les exécutables soient à la/bin
place de/usr/bin
.Mais ce serait ignorer que de nombreuses commandes codent en dur les chemins des exécutables et s'attendent à ce qu'elles le soient dans certains cas spécifiques. Un cas commun est la frange. Tous les scripts qui ont:
ne fonctionnera pas après vous
mv /usr/bin/env /bin/env
. À cet égard, avoir les commandes dans les deux emplacements est plus sûr car il ne cassera pas ces scripts.la source
i
désolé à ce sujet!) Sur les systèmes GNU / Linux comme Ubuntu, on peut utiliserfind /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +
depuis GNU Coreutilsmv
prend en charge-t
. Les autres systèmes d'exploitation ne le prennent généralement pas en charge et ne fonctionnent pas dans l'alternativemv
fournie par BusyBox .Votre installation devrait être en grande partie OK; il ne devrait pas y avoir de fichiers différents avec le même nom dans
/usr
et/usr/bin
(qui répond à votre 2.1), donc avoir tous les fichiers dans les deux/bin
et/usr/bin
ne cassera rien (jusqu'à ce que vous mettiez à jour les packages). Le seul problème que vous pourriez avoir maintenant est celui des liens symboliques cassés, si vous avez remplacé un binaire par un lien symbolique. Pour résoudre ce problème, recherchez les liens symboliques rompus:et réinstallez tous les packages correspondant aux fichiers répertoriés (par exemple, s'il
/usr/bin/zsh
apparaît comme cassé,dpkg -S /bin/zsh /usr/bin/zsh
vous indiquera de quel package provient le fichier; réinstallez-le avecapt --reinstall install zsh
).Vous pouvez afficher et trier par ctime pour voir les fichiers qui ont été récemment modifiés (qui incluront les fichiers que vous avez déplacés):
La meilleure approche pour annuler ce que vous avez fait est d'utiliser le
cruft
package et de supprimer les fichiers qu'il trouve/bin
ou/usr/bin
qui ne proviennent pas d'un package:sauf si les fichiers sont des liens symboliques vers des fichiers dans
/etc/alternatives
(auquel cas vous devez les laisser seuls).la source
#! /bin/sh
ou similaires.sh
trouve dans les deux/bin
et/usr/bin
(tous les fichiers sont dupliqués maintenant).cruft
n'est pas nécessaire pour ce travail car le gestionnaire de packages garde également une trace des fichiers installés. Voir unix.stackexchange.com/questions/153260/… .comm -12 <(ls /bin) <(ls /usr/bin)
montrer quelques entrées sur un système Ubuntu sur lequel je l'ai testé. Certains avec un/bin/foo -> /usr/bin/foo
moyenfoo
qui aurait été perdu.Il peut être instructif d'expliquer pourquoi votre système est, dans une plus ou moins grande mesure, «cassé».
/bin
quand ils devraient l'être/usr/bin
, et vice versa.$PATH
)./bin
et/usr/bin
est que la première peut potentiellement se trouver sur une partition qui est montée à un stade antérieur du démarrage. Dans ce contexte (c'est-à-dire lors du démarrage du système), non seulement les/bin/xxx
binaires seraient probablement référencés par un chemin complet, mais le répertoire/usr/bin
pourrait ne pas être disponible sur le système à ce stade. (Si vousdf /bin
etdf /usr/bin
, vous pouvez voir le même système de fichiers répertorié, ou différents; probablement la plupart des installations par défaut, de nos jours, laissez les deux répertoires dans la même partition).Ainsi, vous pouvez doubler voir que, si vous avez les mêmes binaires dans les deux
/bin
et/usr/bin
, alors les problèmes 2 et 3 ne se produiront pas, et les dégâts de 1 pourraient être mineurs. Par exemple, les packages peuvent ne pas être correctement désinstallés si vous essayez de les supprimer; et les mises à niveau peuvent se brouiller si la mise à niveau tente de mettre à niveau la copie au bon endroit, mais ignore la copie au mauvais endroit. Ainsi, si les remèdes ci-dessus semblent trop drastiques ou compliqués, vous pourriez vous en sortir en laissant le système dans cet état.Mais s'il s'agit d'un système important, je ne miserais vraiment pas là-dessus.
Une règle générale (faisant écho à @ basile-starynkevitch) est de ne jamais faire de singe avec
/usr/bin
,/bin
et amis - ils `` appartiennent '' à la distribution - et un paquet qui suggère de le faire dans le cadre de son installation normale n'est ... pas un bon paquet.Edit: Relevant du point 3, il y a une discussion dans le contexte de systemd / Fedora et ses amis pour savoir pourquoi il est logique de déplacer tout le contenu de
/bin
vers/usr/bin
et de créer un lien symbolique entre le premier et le second. Ce n'est pas une recommandation que vous le fassiez vous-même - cette page s'adresse aux personnes qui font des distributions - mais elle comprend un historique des raisons pour lesquelles cette distinction existe (et implicitement pourquoi elle est maintenant simplement une tradition poussiéreuse).la source