Menjalankan Ubuntu 17.04, saya menginstal perangkat lunak dari distribusi non-repositori, saya seharusnya memindahkan isi perangkat lunak - isi folder ke / usr / bin (yang sudah saran yang rapuh)
Ini salah satu dari hari-hari itu, jadi apa yang saya lakukan sebagai gantinya:
mv /bin/* /usr/bin
Jadi saya mengacaukan dan saya tidak sengaja memindahkan semua file di bin ke / usr / bin dan / bin kosong. Karena saya menganggap bahwa / bin adalah sistem yang kritis, untuk perbaikan cepat, saya menyalin / usr / bin ke / bin.
Sekarang isi / bin dan / usr / bin saya identik dan keduanya berisi file yang semula di / bin dan / usr / bin dipisahkan.
- Apakah Ubuntu saya dalam keadaan rusak sekarang? (Belum mencoba untuk me-reboot komputer, sekarang semuanya tampaknya masih berfungsi)
- Apakah ada cara untuk mengetahui file mana yang telah dipindahkan / disalin ke / usr / bin baru-baru ini, jadi saya bisa secara manual menangani situasinya? 2.1 Apakah biasanya ada file yang tumpang tindih di / bin dan / usr / bin
- Apakah ada cara lain untuk membatalkan apa yang saya lakukan?
Saya tidak menginstal Timeshift sehingga memulihkan cadangan bukanlah suatu pilihan, tetapi saat ini tidak ada yang penting pada komputer, jadi saya bisa mengakui untuk menginstal ulang seluruh partisi linux.
/bin
adalah sistem yang kritis. Kontennya harus ada pada tahap boot paling awal. Anda tidak ingin membuat tautan simbolis ke partisi (di/usr
sini) yang mungkin tidak dipasang saat boot./bin
secara default. Partisi default Ubuntu tidak membuat/usr
partisi terpisah . Saya ingin tahu berapa banyak orang yang benar-benar membuat terpisah/usr
dengan distro modern.Jawaban:
Ya, Ubuntu Anda rusak
Anda mengacaukan sesuatu yang penting untuk manajemen paket .
Jadi dalam praktiknya, buat cadangan data penting Anda (setidaknya
/etc
dan/home
), mungkin juga daftar paket yang diinstal misalnya output daridpkg -l
, dan instal ulang Ubuntu.(non-pemula bisa mencoba untuk mengelola - seperti dalam jawaban lain -, tetapi kemudian dia tidak akan melakukan kesalahan besar dan mendasar seperti itu)
Mungkin itulah yang akan menghabiskan sedikit waktu Anda. Menjaga sistem Anda saat ini dengan bantuan jawaban lain adalah menjaganya dalam keadaan sangat berantakan (yang akan membuat Anda sakit kepala di masa depan).
Karena Anda memformat ulang disk Anda, pertimbangkan untuk meletakkan
/home
di partisi yang terpisah (sehingga kesalahan di masa depan tidak akan kehilangan data Anda). Sebelum melakukan itu cetak di atas kertas keluarandf -h
dandf -hi
danfdisk -l
(mereka memberikan informasi tentang ruang disk -keduanya digunakan dan tersedia- ...). Bijaksana memiliki partisi sistem yang cukup besar (sistem file root); jika Anda mampu membelinya 100 Gbytes lebih dari cukup.(terminologi: Unix memiliki direktori, bukan "folder").
Itu ( pindah ke
/usr/bin/
) sangat salah. Tingkatkan $ PATH Anda (lebih disukai) atau paling banyak tambahkan symlink di/usr/bin/
dan lebih baik pindahkan (atau tambahkan symlink) executable ke/usr/local/bin/
.Pendekatan yang bijaksana adalah untuk tidak pernah berubah
/usr/bin/
,/bin
,/sbin
,/usr/sbin/
di luar alat-alat manajemen paket (misalnyadpkg
,apt-get
,aptitude
, dll ...). Baca FHS .sumber
/bin
dan/usr/bin
sekarang identik, saya tidak yakin mengapa manajemen paket akan kacau. Apakah benar ada kasus di mana/bin/foo
dan/usr/bin/foo
keduanya disediakan oleh paket (s). Jika tidak, hanya ada beberapa file tambahan yang beredar./
partisi sistem utama saya adalah 12GB dan saya tidak pernah mengalami masalah ruang walaupun menggunakannya untuk pengembangan (baca file header dan banyak alat) kantor dan desain (baca alat berat), di KDE (baca bukan yang paling ramping). Lemparkan dalam 4GB lebih banyak jika Anda tidak membagi/var
, mengembang sebesar 25% jika Anda ingin margin yang lebih besar dari yang saya miliki, dan pada 20GB Anda lebih dari baik.Di Linux (dan pada sebagian besar sistem lain, meskipun POSIX tidak memberi Anda jaminan itu kecuali perpindahannya melintasi sistem file), itu akan memperbarui waktu mereka, jadi dengan asumsi tidak ada yang lain yang
/usr/bin
telah disentuh dalam 24 jam terakhir , Anda harus dapat memindahkannya kembali dengan:Hapus
echo
jika itu terlihat benar. Perhatikan bahwa Anda tidak akan dapat memulihkan file yang ada dengan nama yang sama di/bin
dan/usr/bin
(yang asli di/usr/bin
akan hilang)Peringatan potensial: jika beberapa file sulit ditautkan di keduanya
/bin
dan/usr/bin
, semua tautan keras/usr/bin
akan dipindahkan ke/bin
.Sekarang, Anda mungkin berpikir bahwa karena
/bin
dan/usr/bin
berada di default$PATH
, dan/bin
tersedia/boot
setidaknya sebelum di/usr
-mount, seharusnya tidak masalah apakah executable berada/bin
sebagai gantinya/usr/bin
.Tapi itu akan mengabaikan banyak perintah yang mengkode jalur executable dan mengharapkannya dalam beberapa kasus tertentu. Kasus yang umum adalah dia-poni. Semua skrip yang memiliki:
akan gagal bekerja setelah Anda melakukannya
mv /usr/bin/env /bin/env
. Dalam hal itu, memiliki perintah di kedua lokasi lebih aman karena tidak akan merusak skrip tersebut.sumber
i
maaf tentang itu!) Pada sistem GNU / Linux seperti Ubuntu yang dapat digunakanfind /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +
sejak GNU Coreutilsmv
mendukung-t
. OS lain umumnya tidak mendukungnya , juga tidak bekerja di alternatif yangmv
disediakan oleh BusyBox .Instalasi Anda sebagian besar harus OK; seharusnya tidak ada file yang berbeda dengan nama yang sama
/usr
dan/usr/bin
(yang menjawab 2.1 Anda), sehingga memiliki semua file di keduanya/bin
dan/usr/bin
tidak akan merusak apa pun (sampai Anda meningkatkan paket). Satu-satunya masalah yang mungkin Anda miliki sekarang adalah symlink yang rusak, jika Anda menimpa biner dengan symlink padanya. Untuk memperbaiki ini, cari symlink yang rusak:dan instal ulang paket apa pun yang terkait dengan file yang terdaftar (misalnya, jika
/usr/bin/zsh
terlihat rusak,dpkg -S /bin/zsh /usr/bin/zsh
akan memberi tahu Anda paket mana file itu berasal; pasang kembali denganapt --reinstall install zsh
).Anda dapat menampilkan dan mengurutkan berdasarkan waktu untuk melihat file yang baru saja diubah (yang akan menyertakan file yang Anda pindahkan):
Pendekatan terbaik untuk membatalkan apa yang Anda lakukan adalah menggunakan
cruft
paket dan menghapus file yang ditemukannya/bin
atau/usr/bin
yang tidak berasal dari paket:kecuali file-file tersebut adalah symlink ke file dalam
/etc/alternatives
(dalam hal ini Anda harus membiarkannya sendiri).sumber
#! /bin/sh
atau serupa.sh
ada di keduanya/bin
dan/usr/bin
(semua file digandakan sekarang).cruft
ini tidak diperlukan untuk pekerjaan ini karena manajer paket juga melacak file yang diinstal. Lihat unix.stackexchange.com/questions/153260/… .comm -12 <(ls /bin) <(ls /usr/bin)
menunjukkan beberapa entri pada sistem Ubuntu tempat saya mengujinya. Beberapa dengan/bin/foo -> /usr/bin/foo
yang berartifoo
akan hilang.Mungkin mendidik untuk menguraikan mengapa sistem Anda, pada tingkat yang lebih besar atau lebih kecil, 'rusak'.
/bin
ketika mereka seharusnya berada/usr/bin
, dan sebaliknya.$PATH
)./bin
dan/usr/bin
adalah bahwa yang pertama berpotensi berada pada partisi yang dipasang pada tahap awal boot. Dalam konteks ini (yaitu, ketika mem-boot sistem), tidak hanya/bin/xxx
binari mungkin akan dirujuk oleh path lengkap, tetapi direktori/usr/bin
mungkin tidak tersedia pada sistem pada saat itu. (Jika Andadf /bin
dandf /usr/bin
, Anda mungkin melihat sistem file yang sama terdaftar, atau yang berbeda; mungkin sebagian besar instalasi default, hari ini, biarkan kedua direktori di partisi yang sama).Dengan demikian Anda dapat berlipat ganda melihat bahwa, jika Anda memiliki binari yang sama di keduanya
/bin
dan/usr/bin
, maka masalah 2 dan 3 tidak akan terjadi, dan kerusakan dari 1 mungkin kecil. Re 1, misalnya, paket mungkin tidak dihapus dengan benar jika Anda mencoba menghapusnya; dan pemutakhiran mungkin menjadi kacau, jika pemutakhiran mencoba untuk meningkatkan salinan di tempat yang 'benar', tetapi mengabaikan salinan di tempat yang 'salah'. Jadi, jika solusi di atas tampak terlalu drastis atau rumit, Anda mungkin lolos dengan meninggalkan sistem dalam keadaan ini.Tetapi jika ini adalah sistem yang penting, saya benar - benar tidak akan mengandalkan itu.
Aturan umum (lagi-lagi menggemakan @ basile-starynkevitch) tidak pernah untuk diajak
/usr/bin
,/bin
dan teman - mereka 'termasuk' dalam distribusi - dan paket yang menyarankan melakukan hal itu sebagai bagian dari instalasi normal adalah ... bukan paket yang baik.Sunting: Relevan ke poin 3, ada diskusi dalam konteks systemd / Fedora dan teman - teman mengapa masuk akal untuk memindahkan semua konten
/bin
ke/usr/bin
, dan symlink yang pertama ke yang kedua. Ini bukan rekomendasi agar Anda melakukan ini, sendiri - halaman itu ditujukan kepada orang-orang yang melakukan distribusi - tetapi itu mencakup beberapa sejarah mengapa perbedaan ini ada (dan dengan implikasi mengapa sekarang hanya tradisi yang berdebu).sumber