Hanya untuk bersenang-senang, saya pikir saya akan menggunakan perintah ini pada Raspberry Pi saya menjalankan Raspbian:
sudo rm -f /bin/rm
Saya pikir saya bisa menginstal ulang coreutils
: Saya salah!
apt-get install --reinstall coreutils
memberikan kesalahan dari dpkg
, mengatakan itu tidak bisa menghapus paket. Kompilasi dari sumber tidak berfungsi karena Makefile
penggunaannya rm
.
Bagaimana saya bisa rm
kembali bekerja ?
command-line
rm
dpkg
pengguna60684
sumber
sumber
ln -s /usr/lib/initramfs-tools/bin/busybox /bin/rm
(atau/bin/busybox
, atau ekstrak dari initrd)Jawaban:
Dan tidak akan pernah lagi.
Karena
download
perintah tidak memerlukannya:Jadi, kecuali Anda berada di direktori yang tidak dapat Anda tulis, Anda tidak perlu menggunakannya
sudo
, dan itu bisa menjadi masalah di kemudian hari karena Anda akan memerlukanroot
izin untuk menghapus / memindahkan paket.sumber
/bin/sh
. Akan lebih mudah untuk melakukansudo ln -s true /bin/rm
atau bahkan lebih baiksudo ln -s busybox /bin/rm
memiliki pekerjaanrm
.apt-get
memang membutuhkan sudo jika Anda belum mengunduh coreutils karena jika tidak, ia tidak akan bisa menulis ke/var
tempat debian menyimpan file yang diunduh.apt-get
download paket ke direktori saat ini selalu (ya, bahkan jika Anda menggunakansudo
), jadi kecuali Anda berada di direktori Anda tidak dapat menulis sebagai pengguna Anda, Anda tidak perlusudo
. Silakan periksa halaman manual.debian
dan turunannya (dan mungkin sebagian besar distribusi lainnya) datang denganbusybox
yang digunakan dalaminitramfs
.busybox
bundel sebagian besar utilitas baris perintah inti dalam satu executable.Anda dapat sementara symlink
/bin/rm
ke/bin/busybox
:Untuk mendapatkan pekerjaan
rm
(setelah itu Anda dapat melakukannyaapt-get install --reinstall coreutils
).Metode yang sama dapat digunakan untuk semua utilitas lain yang
busybox
termasuk. Daftar itu bervariasi dari satu penempatan ke yang lain. Anda bisa mendapatkan daftarnyabusybox --list
.Namun perlu dicatat bahwa mereka adalah versi terbatas dari utilitas yang sesuai. Terkadang mereka mendukung ekstensi GNU, tetapi umumnya tidak dan beberapa dari mereka bahkan tidak akan mendukung semua fitur standar / POSIX (beberapa fitur dapat diaktifkan / dinonaktifkan pada waktu kompilasi).
Atau, Anda dapat menggunakan
zsh
built-in rm:The
zsh/files
modul menyediakan dengan beberapa perintah builtin tambahan (rm
,mv
,ln
,mkdir
,rmdir
,chown
,chmod
,sync
). Ini berguna dalam situasi seperti ini atau ketika Anda tidak dapat melakukan lebih banyak proses tetapizsh
menjalankan interaktif .ksh93
juga memiliki sejumlah tambahan / opsional perintah buitin, tetapi tidakrm
di antara mereka (basename
,chmod
,dirname
,getconf
,head
,mkdir
,logname
,cat
,cmp
,cut
,uname
,wc
,sync
). Anda dapat meminta mereka dengan:dalam
ksh93
naskah.sumber
rm
sama sekali. ;-)Dalam kasus
apt-get
ataudpkg
kebutuhanrm
dan tanparm
instalasi ulang tidak memungkinkan, maka Anda dapat menirurm
denganperl
:sumber
-r
, dan fakta bahwa itu tidak mengembalikan status keluar yang benar dapat menyebabkan masalah.apt-get install --reinstall coreutils
dan mendapatkan OP kembali normal.rm
denganmv
(ke 'tempat sampah')Saya akan mencoba mendapatkan
rm
biner yang benar dari komputer lain, dan kemudian menggunakanscp
atau sesuatu untuk menyalinnya ke Pi. Ini tentu saja hanya berfungsi jikascp
sudah diinstal ...Jika
scp
tidak tersedia, makanc
(alias netcat) di sisi pengirim dan bash dengan/dev/tcp/HOST/PORT
pengalihan di sisi penerima mungkin bekerja juga.Jika Anda tidak memiliki mesin Raspbian lain, Anda dapat mengambil paket coreutils (dapatkan
.deb
untuk versi yang tepat), dan membongkarnya dengandpkg-deb
(di Debian / Ubuntu / Mint / ..., bahkan jika itu bukan pada Pi):Jika Anda tidak memiliki komputer lain dengan dpkg, Anda dapat mengekstrak file dengan
ar
(dari alat pengembangan binutils) dan tar:sumber
scp
tidak tersedia, makanc
(aliasnetcat
) di sisi pengirim danbash
dengan/dev/tcp/HOST/PORT
pengalihan di sisi penerima mungkin bekerja juga.Karena ini debian (atau ubuntu), ada cara mudah untuk mendapatkan file:
Ini berfungsi karena apt-get mengunduh coreutils.deb sebelum mencoba menginstalnya, dan dpkg-deb dijamin ada pada sistem berbasis debian.
Jangan mengekstrak langsung ke / tmp, itu mengubah izin pada direktori induk.
Jika Anda ingin bermain-main, Anda mungkin ingin menginstal paket busybox-static, yang berfungsi bahkan jika Anda merusak semuanya.
sumber