මම / bin / rm මකා දැමුවෙමි. මම එය අය කර ගන්නේ කෙසේද?


168

විනෝදය සඳහා, මගේ රාස්ප්බෙරි පයි ධාවනය වන රාස්බියන් මත මෙම විධානය භාවිතා කරනු ඇතැයි මම සිතුවෙමි:

sudo rm -f /bin/rm

මම හිතුවා මට නැවත ස්ථාපනය කරන්න පුළුවන් කියලා coreutils: මම වැරදියි!

apt-get install --reinstall coreutilsdpkgපැකේජය ඉවත් කළ නොහැකි යැයි පවසමින් දෝෂයක් ලබා දෙයි . Makefileභාවිතයන් නිසා ප්‍රභවයෙන් සම්පාදනය කිරීම ක්‍රියා නොකරයි rm.

මම rmනැවත වැඩ කරන්නේ කෙසේද?


9
සෑම .deb මූලිකවම ඔබට ඉවත් කළ හැකි ලේඛනාගාරයක් වන අතර rm ක්‍රියාත්මක කළ හැකි / බින් වෙත පිටපත් කළ හැකිය.
schaiba

1
මෙය කුමක්ද? ලිනක්ස්? යුනික්ස්? වෙන මොනවා හරි? ලිනක්ස් නම්, කුමන ඩිස්ට්‍රෝ ද? 64bit? 32?
ටර්ඩන්

12
ln -s /usr/lib/initramfs-tools/bin/busybox /bin/rm(හෝ /bin/busybox, එය
මුල

10
රාස්ප්බෙරි පයි හි මෙහෙයුම් පද්ධතිය SD මතක කාඩ්පතක ඇති බැවින් ඔබට වෙනත් යන්ත්‍රයක ඇති පැකේජයෙන් rm ද්විමය උපුටා ගෙන එය නැවත කාඩ්පතට පිටපත් කළ හැකිය. කෙසේ වෙතත්, ඔබ එතැනට ඇද දැමූ හාස්‍යජනක කපටිකම සහ එය ප්‍රසිද්ධියේ පිළිගැනීමට ඔබ නිර්භීත ය :)
ක්‍රිස්තියානි

15
@ user645715 37 දෙනෙකු මෙම ප්‍රශ්නය විනෝදජනක බව සොයා ගත්හ.
බ්‍රිලියන්ඩ්

Answers:


194
sudo touch /bin/rm && sudo chmod +x /bin/rm
apt-get download coreutils
sudo dpkg --unpack coreutils*

නැවත කිසි දිනෙක.


ඔබ යෝග්‍ය ලෙස සූඩෝ භාවිතා නොකළේ ඇයි?

මෙම නිසා downloadවිධානය එය අවශ්ය නොවේ:

download
බාගත කිරීමෙන් ලබා දී ඇති ද්විමය පැකේජය වත්මන් නාමාවලියට බාගත වේ.

එබැවින්, ඔබට ලිවිය නොහැකි කිසියම් නාමාවලියක නොමැති නම්, ඔබට එය භාවිතා කිරීමට අවශ්‍ය නොවන අතර, පැකේජය ඉවත් කිරීමට / ගෙනයාමට sudoඔබට rootඅවසර අවශ්‍ය බැවින් එය පසුව ගැටළු සහගත වනු ඇත .


3
apt-get sudo සමඟ ධාවනය කළ යුතුය :)
AWippler

31
W විප්ලර් නැත, මේ අවස්ථාවේ දී නැත.
බ්‍රියාම්

5
හිස් ක්‍රියාත්මක කළ හැකි ගොනුවක් කිසිවක් නොකරන ෂෙල් ස්ක්‍රිප්ටයක් ලෙස ක්‍රියාත්මක වන බව සලකන්න. ඒ නිසා ඉන් අදහස් කරන්නේ ආයාචනය /bin/shකිරීමයි. වැඩ කිරීම සඳහා සරල sudo ln -s true /bin/rmහෝ ඊටත් වඩා හොඳ sudo ln -s busybox /bin/rmදෙයක් කිරීමට ඉඩ තිබුණි rm.
ස්ටෙෆාන් චසෙලාස්

1
apt-getඔබ coreutils බාගත කර නොමැති නම් sudo අවශ්‍ය වේ, එසේ නොමැති නම් ඩෙබියන් /varවිසින් බාගත කළ ගොනු සුරකින තැනට ලිවීමට නොහැකි වනු ඇත .
ක්‍රිස්ටෝපර් ඉව්ස්

3
Rist ක්‍රිස්ටෝපර් වැරදියි ... apt-getපැකේජය සෑම විටම වත්මන් ඩිරෙක්ටරියට බාගත කරයි (ඔව්, ඔබ භාවිතා කළත් sudo), එබැවින් ඔබ නාමාවලියක නොමැති නම් ඔබට අවශ්‍ය නොවන ඔබේ පරිශීලකයා ලෙස ලිවිය නොහැක sudo. කරුණාකර මිනිසාගේ පිටු පරීක්ෂා කරන්න.
බ්‍රියාම්

106

debianසහ එහි ව්යුත්පන්න (සහ බොහෝ විට අනෙකුත් බොහෝ බෙදාහැරීම්) සමඟ එන්න busyboxතුළ භාවිතා වන initramfs.

busybox බොහෝ ක්‍රියාත්මක කළ හැකි විධාන රේඛා උපයෝගීතා එකලස් කරයි.

ඔබට තාවකාලිකව symlink හැකි /bin/rmකිරීමට /bin/busybox:

ln -s busybox /bin/rm

rmවැඩක් ලබා ගැනීම සඳහා (ඔබට ඔබේ දේ කළ හැකිය apt-get install --reinstall coreutils).

එම ක්‍රමයම busyboxඇතුළත් වන අනෙකුත් සියලුම උපයෝගිතා සඳහා භාවිතා කළ හැකිය . එම ලැයිස්තුව එක් යෙදවීමක සිට තවත් ස්ථානයකට වෙනස් වේ. ඔබට ලැයිස්තුව ලබා ගත හැකිය busybox --list.

කෙසේ වෙතත් ඒවා අනුරූප උපයෝගිතා වල සීමිත අනුවාදයන් බව සලකන්න. ඔවුන් සමහර විට GNU දිගු සඳහා සහය දක්වයි, නමුත් සාමාන්‍යයෙන් එසේ නොවන අතර සමහර ඒවා සියලුම සම්මත / POSIX විශේෂාංග සඳහා පවා සහාය නොදක්වයි (සමහර අංග සම්පාදනය කරන වේලාවේදී සක්‍රිය / අක්‍රීය කළ හැකිය).

විකල්පයක් ලෙස, ඔබට zshබිල්ඩින් ආර්එම් භාවිතා කළ හැකිය :

#! /bin/zsh
zmodload zsh/files
rm "$@"

මෙම zsh/filesමොඩියුලය අමතර builtin විධාන කිහිපයක් සමඟ සපයයි ( rm, mv, ln, mkdir, rmdir, chown, chmod, sync). මේ ආකාරයේ තත්වයකදී හෝ ඔබට තවත් ක්‍රියාදාමයන් සිදුකිරීමට නොහැකි නමුත් අන්තර්ක්‍රියාකාරී ධාවනයක් ඇති විට එය ප්‍රයෝජනවත් වේ zsh.

ksh93වැඩිපුර / විකල්ප විධාන ගණනාවක් buitin ඇත, නමුත් rmඔවුන් අතර ( basename, chmod, dirname, getconf, head, mkdir, logname, cat, cmp, cut, uname, wc, sync). ඔබට ඒවා සමඟ ආයාචනා කළ හැකිය:

command /opt/ast/bin/the-command

දී ksh93තිර රචනය.


5
නියම පිළිතුර. OP සැබවින්ම යථාර්ථය නැවත ස්ථාපනය කිරීමට අවශ්‍ය දැයි මට සිතේ rm. ;-)
joeytwiddle

ඇත්ත වශයෙන්ම. ඇත්ත වශයෙන්ම, මෙය මට කෝරියුටිල්ස් මකා දැමීම ගැන සිතීමටද හේතු වේ ... :-)
ඩේමන්

4
@ ඩමොන්: කාර්යබහුල පෙට්ටියට සාපේක්ෂව මූලික විධානයන්හි දීර් version අනුවාදයක් කෝරියුටිල්ස් සපයයි, එබැවින් කාර්යබහුල පෙට්ටිය SUSv3 අවශ්‍යතාවන්ට ගැලපෙන පරිදි ප්‍රමාණවත් විය හැකි අතර, කොරියුටිල්ස් වඩාත් විශේෂාංග වේ; උදාහරණයක් ලෙස කාර්යබහුල කොටුවට සීමිත i18n සහය ඇත.
liori

2
iliori: මම අඩ විහිළුවක් කළෙමි, මීට වසර 10-15 කට පෙර වුවද, මම එය ඇත්ත වශයෙන්ම එම තත්වය තුළ සිදු කරනු ඇත (එකතු කරන ලද "විශේෂාංග", විශේෂයෙන් i18n , මගේ මතය අනුව වාසියක් නොවේ - නොවරදින පරිවර්තන, සහ අනපේක්ෂිත ලෙස වෙනත් පරිගණකයක ස්ක්‍රිප්ට් බිඳ දැමූ ස්විච භාවිතා කිරීමට ඉගෙන ගැනීම, ස්තූතියි නැත). කෙසේ වෙතත්, වර්තමානයේදී, මා කිසිවක් ස්පර්ශ නොකර, සහ පද්ධතිය / වින්‍යාස ගොනු හෝ ද්විමයන් ගෙනයාම / මකා දැමීම / සංස්කරණය කිරීමකින් තොරව, ලිනක්ස් පද්ධතියක් පමණක් ස්ථාපනය කර ඇති පරිදි ක්‍රියාත්මක වන්නේ නම් මම සතුටු වෙමි. කනගාටුවට කරුණක් නම්, තවමත් බොහෝ විට එය ප්‍රමාණවත් නොවීමයි, එබැවින් මම නිසැකවම වැඩ කරන දෙයක් ස්පර්ශ නොකරමි :-)
ඩේමන්

28

නඩුවේ apt-getහෝ dpkgඅවශ්යතා rmසහ තොරව rmඑය යලි පත්කර ඔබ නොකළ හැකිය, posssible නොවේ rmසමග perl:

cat > /bin/rm << "EOF"
#!/usr/bin/perl
foreach (@ARGV) { unlink $_ or warn "$@:$!"; }
EOF
chmod +x /bin/rm

3
එය හැසිරවිය නොහැකි බව සලකන්න, එය -rනිවැරදි පිටවීමේ තත්වයක් ලබා නොදීම ගැටළු ඇති කළ හැකිය.
ස්ටෙෆාන් චසෙලාස්

6
T ස්ටෙෆේන් චැසෙලාස් apt-get install --reinstall coreutilsOP යථා තත්ත්වයට පත් කිරීමට ඉඩ දී ප්‍රමාණවත් වේ .
ටර්ඩන්

ඒ නිසයි මම "නඩුවේ" ලිව්වේ. පැකේජයේ coreutils හි ස්ක්‍රිප්ට් නොමැත. සාමාන්‍යයෙන් ලිපිගොනු තිබේ නම් හෝ නොපවතී නම් පූර්ව හා පසු-ස්ථාපන ස්ක්‍රිප්ට් දෝෂ මත අසමත් වේ, උදාහරණයක් ලෙස ඒවා ඉවත් කිරීමට අවශ්‍ය නම්. ඔව්, පැකේජය කල්තියා පරීක්ෂා කිරීමට මට කම්මැලි බව ඇත්ත.

ඔබ ද, අනුකරණය කළ හැකි rmසමග mv( 'කුණු කූඩයට බින්' දක්වා)
sendmoreinfo

14

මම rmවෙනත් යන්ත්‍රයකින් නිවැරදි ද්විමය ලබා ගැනීමට උත්සාහ කරමි , පසුව scpඑය පයි වෙත පිටපත් කිරීමට භාවිතා කරමි. ඇත්ත වශයෙන්ම මෙය ක්‍රියාත්මක scpවන්නේ දැනටමත් ස්ථාපනය කර ඇත්නම් පමණි ...

scpලබා ගත නොහැකි නම් nc, යැවීමේ පැත්තේ (අකා නෙට්කැට්) සහ /dev/tcp/HOST/PORTලැබීමේ පැත්තේ යළි හරවා යැවීමක් සහිත බාෂ් ද ක්‍රියා කරයි.

ඔබට වෙනත් රාස්බියන් යන්ත්‍රයක් නොමැති නම්, ඔබට කොරූටිල්ස් පැකේජය ලබා ගත හැකිය ( .debනිවැරදි අනුවාදය සඳහා), සහ එය ඉවත් කරන්න dpkg-deb(ඩේබියන් / උබුන්ටු / මින්ට් /…, එය පයි මත නොතිබුණත්):

dpkg-deb --fsys-tarfile coreutils*.deb | tar xf - ./bin/rm

ඔබට dpkg සමඟ වෙනත් යන්ත්‍රයක් නොමැති නම්, ඔබට ar(බිනූටිල්ස් සංවර්ධන මෙවලම් වලින්) සහ තාර සමඟ ගොනුව උකහා ගත හැකිය :

ar p coreutils*.deb data.tar.gz  | tar xzf - ./bin/rm

8
scpලබා ගත නොහැකි නම් , nc(අකා netcat) යවන පැත්තේ සහ ලැබීමේ පැත්තේ යළි හරවා යැවීම bashසමඟ ද /dev/tcp/HOST/PORTක්‍රියා කළ හැකිය.
එම්වීජී

13

එය ඩෙබියන් (හෝ උබුන්ටු) බැවින්, ගොනු ලබා ගැනීමට පහසු ක්‍රමයක් තිබේ:

mkdir /tmp/coreutils
sudo dpkg-deb --extract /var/cache/apt/archives/coreutils_ [tab complete for correct version].deb /tmp/coreutils
sudo cp /tmp/coreutils/bin/rm /bin

මෙය ක්‍රියාත්මක වන්නේ එය ස්ථාපනය කිරීමට පෙර coreutils.deb බාගත කර ගැනීම සහ ඩෙබියන් පදනම් කරගත් පද්ධතියක් මත dpkg-deb සහතික වී ඇති බැවිනි.

/ Tmp වෙත කෙලින්ම උපුටා නොගන්න, එය මව් නාමාවලියෙහි අවසර වෙනස් කරයි.

ඔබ සෙල්ලම් කිරීමට යන්නේ නම්, ඔබට පැකේජය කාර්යබහුල-ස්ථිතික ස්ථාපනය කිරීමට අවශ්‍ය විය හැකිය, ඔබ අනෙක් සියල්ල බිඳ දැමුවද එය ක්‍රියාත්මක වේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.