/ Opt සහ / usr / local අතර වෙනස කුමක්ද?


446

අනුව දැකෙන පූජක සම්මත , /opt"එකතු කිරීම යෙදුම් මෘදුකාංග පැකේජ ස්ථාපනය" සඳහා ය. /usr/localයනු "දේශීයව මෘදුකාංග ස්ථාපනය කිරීමේදී පද්ධති පරිපාලකගේ භාවිතය සඳහා" යන්නයි. මෙම භාවිත අවස්ථා බොහෝ දුරට සමාන බව පෙනේ. මෘදුකාංග සඳහා සාමාන්යයෙන් එක්කෝ ස්ථාපනය කිරීමට පෙරනිමියෙන් සකසා ඇත බෙදාහැරීම් සමග ඇතුළත් කර නැති /usr/localහෝ /optඔවුන් තෝරා ලෙස වන කිසිදු විශේෂ රසයයි හෝ හේතුව.

මට මග හැරී ඇති යම් වෙනසක් තිබේද, නැතහොත් දෙදෙනාම එකම දේ කරන නමුත් historical තිහාසික හේතූන් මත පවතින්නේද?


3
මගේ අවබෝධය නම් /usr/localඑය /usrගොනු පද්ධතියේ දේශීය අනුවාදයක් වන අතර /optවිවිධ දේ සඳහා ස්ථාන දරන්නා වේ.
yasouser


Historical තිහාසික හේතූන් මත මාතෘකාවෙන් බැහැරව: බින්, එස්බින්, usr / bin, usr / sbin භේදය අවබෝධ කර ගැනීම .
ඇලෙක්සි

Answers:


400

මෙහෙයුම් පද්ධතිය අයත් ෙනොවන, ගොනු අඩංගු කිරීමට නිර්මාණය කර ඇත දෙකම අතර, /optසහ /usr/localගොනු ම එකම අඩංගු කිරීම රිසි නැත.

/usr/localmake(උදා:) විධානය භාවිතා කරමින් පරිපාලක විසින් ගොඩනඟන ලද ගොනු ස්ථාපනය කිරීමට ස්ථානයකි ./configure; make; make install. මෙහෙයුම් පද්ධතියේ කොටසක් වන ලිපිගොනු සමඟ ගැටුම් වළක්වා ගැනීම මෙහි අදහසයි, ඒවා දේශීයව නැවත ලිවීම හෝ නැවත ලිවීම සිදු කරයි (උදා: /usr/bin/fooමෙහෙයුම් පද්ධතියේ කොටසක් වන අතර /usr/local/bin/fooදේශීය විකල්පයක් වේ).

/usrලිනක්ස් සමඟ මෙය කලාතුරකින් සිදු වුවද, යටතේ ඇති සියලුම ලිපිගොනු මෙහෙයුම් අවස්ථා අතර බෙදා ගත හැකිය. මෙය එෆ්එච්එස් තරමක් ස්වයං-පරස්පර විරෝධී වන අතර /usrඑය කියවීමට පමණක් යැයි අර්ථ දක්වා ඇති නමුත් /usr/local/binසාර්ථක මෘදුකාංගයක් ස්ථාපනය කිරීම සඳහා දේශීය මෘදුකාංග ස්ථාපනය කිරීම සඳහා කියවීම-ලිවීම අවශ්‍ය වේ. එෆ්එච්එස් හි ප්‍රධාන දේවානුභාවයෙන් යුත් ප්‍රභවය වූ එස්වීආර් 4 ගොනු පද්ධති ප්‍රමිතිය මෙම ගැටළුව මඟහරවා ගැනීම වෙනුවට වළක්වා ගැනීමට /usr/localභාවිතා කිරීමට නිර්දේශ කරයි /opt/local.

/usr/localයනු මුල් BSD හි උරුමයකි. එම අවස්ථාවේ දී, එහි ප්රභව කේත /usr/binමෙහෙයුම් පද්ධතිය විධාන සිටි /usr/src/binසහ /usr/src/usr.binදේශීයව සංවර්ධනය විධාන මූලාශ්රය දී වූ අතර, /usr/local/srcඔවුන්ගේ ද්විමය ගොනු දී /usr/local/bin. ඇසුරුම්කරණය පිළිබඳ සංකල්පයක් නොතිබුණි (පිටත තාර බෝල්).

අනෙක් අතට, /optනොබැඳි පැකේජ ස්ථාපනය කිරීම සඳහා වූ නාමාවලියකි (එනම් පැකේජ මෙහෙයුම් පද්ධති බෙදාහැරීමේ කොටසක් නොව ස්වාධීන ප්‍රභවයක් මඟින් සපයනු ලැබේ), සෑම එකක්ම තමන්ගේම උප බහලුමක ඇත. ස්වාධීන තෙවන පාර්ශවීය මෘදුකාංග බෙදාහරින්නෙකු විසින් සපයන ලද සම්පූර්ණ පැකේජ ඒවා දැනටමත් ගොඩනගා ඇත. /usr/localදේවල් මෙන් නොව , මෙම පැකේජ නාමාවලි සම්මුතීන් අනුගමනය කරයි (හෝ අවම වශයෙන් ඒවා කළ යුතුය). උදාහරණයක් ලෙස, එහි විධානයන්ගෙන් එකක් someappස්ථාපනය කර ඇති /opt/someappඅතර /opt/someapp/bin/foo, එහි වින්‍යාස ගොනුව ක්‍රියාත්මක /etc/opt/someapp/foo.confවන අතර එහි ලොග් ලිපිගොනු ඇතුලත් වේ /var/opt/someapp/logs/foo.access.


67
/ usr / local, ස්වයං, ගෘහස්ථ, සම්පාදනය කරන ලද සහ නඩත්තු කරන ලද මෘදුකාංග සඳහා. / opt යනු ස්වයං නොවන, බාහිර, පෙර සැකසූ ද්විමය / යෙදුම් මිටි ස්ථාපන ප්‍රදේශය සඳහා ය. හ්ම් ... සෑම දෙයක් සඳහාම අපට C: \ වැඩසටහන් ගොනු නොමැත ;-)
නිඛිල් මුලි

3
"අනෙක් අතට, / opt යනු නොබැඳි පැකේජ ස්ථාපනය කළ යුතු නාමාවලියකි" මෙහි 'නොබැඳි' පැකේජවල තේරුම කුමක්ද?
කෙවින් වීලර්

3
E කෙවින් වීලර් එය ඊළඟ වාක්‍යයෙන් විස්තර කෙරේ. නොබැඳි යන්නෙන් අදහස් වන්නේ පැකේජ මෙහෙයුම් පද්ධති බෙදාහැරීමේ කොටසක් නොව ස්වාධීන ප්‍රභවයක් මගින් සපයනු ලැබේ.
jlliagre

2
@jlliagre the centos docs * state "නිදසුනක් ලෙස, / usr / බහලුම දුරස්ථ ධාරකයකින් කියවීමට-පමණක් NFS කොටසක් ලෙස සවිකර තිබේ නම්, / usr / local / directory යටතේ පැකේජයක් හෝ වැඩසටහනක් ස්ථාපනය කළ හැකිය." නිවැරදි කවුදැයි මම නොදනිමි, නමුත් මෙය FHS දුර්වල ප්‍රදේශයක් පිළිබඳ ඔබේ ප්‍රකාශයට පටහැනි බව පෙනේ. (* source centos.org/docs/5/html/5.1/Deployment_Guide/… )
කෙවින් වීලර්

1
E කෙවින් වීලර් එය හරියටම මා සඳහන් කරන දුර්වලතාවයයි. දුරස්ථ, කියවීමට පමණක් ඇති නාමාවලියක පැකේජයක් හෝ වැඩසටහනක් ස්ථාපනය කිරීම කළ නොහැක්කකි. මෙහි ප්‍රති ar ලය වනුයේ දේශීය ගොනු පද්ධතියක් / usr / local මත සවි කිරීමයි, නමුත් මෙය නිසි ලෙස නිර්මාණය කර ඇති දෙයකට වඩා තාවකාලික රැකියාවක් ලෙස පෙනේ.
jlliagre

90

මූලික වෙනස වන්නේ /usr/localපද්ධති ඇසුරුම්කරු විසින් කළමනාකරණය නොකරන මෘදුකාංග සඳහා වන නමුත් තවමත් සම්මත යුනික්ස් යෙදවීමේ නීති අනුගමනය කිරීමයි.

ඔබ ඒකයි /usr/local/bin, /usr/local/sbin /usr/local/includeආදිය ...

/optඅනෙක් අතට මෙය අනුගමනය නොකරන මෘදුකාංග සඳහා වන අතර එය මොනොලිතික් ආකාරයෙන් යොදවනු ලැබේ. මෙය සාමාන්‍යයෙන් "වින්ඩෝස්" ශෛලියේ ඇසුරුම් කර ඇති වාණිජ සහ / හෝ හරස් වේදිකා මෘදුකාංග ඇතුළත් වේ.


12
ඔබගේ මොනොලිතික් කාරණය ගැන මම එකඟ නොවෙමි. FHS ප්‍රමිතිය පවසන්නේ / opt උප බහලුම් වල ස්ථාපනය කර ඇති පැකේජවල ඒවායේ ධාරක විශේෂිත ලිපිගොනු පිළිවෙලින් / etc / opt / පැකේජය යටතේ වින්‍යාස ගොනු සඳහා සහ ලොග්, ස්පූල් සහ ඒ හා සමාන / var / opt / පැකේජ යටතේ ස්ථාපනය කළ යුතු බවයි. / opt ඇත්ත වශයෙන්ම / usr / local ට වඩා යුනික්ස් යෙදවීමේ නීති වලට වඩා සමීප වන අතර, එය සියල්ල කියවීමට පමණක් විය යුතු නමුත් පැහැදිලි හේතු නිසා විය නොහැකි නාමාවලියක් යටතට පත් කරයි.
jlliagre

6
අනිවාර්යෙන්ම, මම විකල්ප පැකේජයක් සාදන අතර FHS අනුකූලතාවය ඉල්ලා සිටීමට අවශ්‍ය නම්. එසේ නොමැතිනම් ප්‍රමිතිය ඔබ “මාර්ගෝපදේශ” ලෙස හඳුන්වන දෙයට වඩා වැඩිය. නෙට්බීන්ස් / etc / opt / netbeans භාවිතා නොකරන නිසා එය පද්ධතිය පුරා පැතිරීමට / තෝරා ගැනීමට හෝ තනි පරිශීලකයෙකු සඳහා $ HOME / .local / opt කිරීමට ඉඩ නොදේ.
jla

10
ljlliagre මගේ පද්ධතියේ පරිපාලකයෙකු ලෙස, FHS යනු මාර්ගෝපදේශ මාලාවකි. / ඔප්ට් ඩිරෙක්ටරිය යනු මොනොලිතික් / ඔප්ට් / <පැකේජය> හෝ / ඔප්ට් / <ප්‍රොවයිඩර්> මෘදුකාංගය තැබීමට ඇති සාමාන්‍ය බුද්ධියයි. මම <පැකේජය | සැපයුම්කරු> / සියල්ල / දත්ත / අවශ්‍ය / සහාය / භාවිතා කිරීමට අවශ්‍ය පැකේජයක් ස්ථාපනය කරන විට, එය නවතම එෆ්එච්එස් හි සෑම විස්තරයක්ම අනුගමනය කිරීමට සැපයුම්කරු අපොහොසත් වුව ද එය තෝරා ගනු ලැබේ. මට ඊ-තැපෑලක් යැවීමට හෝ දෝෂයක් වාර්තා කිරීමට ඉඩ ඇත, නමුත් මගේ පද්ධතියේ FHS ගැන හොඳ හැඟීමක් ඇති කර ගැනීම සඳහා මම වෙනත් තැනක එම මොනොලිතික් පැකේජය තැබීමට යන්නේ නැත.
jla

2
ljlliagre. තේරුම: ස්ථාපනය කර ඇති මෘදුකාංගය ෆෝල්ඩරය /optතුළ නිතිපතා .conf ගොනු සෑදිය /etc/optයුතුද? මට උදාහරණ ලෙස ෆයර්ෆොක්ස්, හැෂ්කැට් සහ වෙනත් ගබඩාවල නොතිබුණි. /etc/optසම්පූර්ණයෙන්ම හිස් ය.
m3nda

2
ljlliagre FHS අනුකූල ආකාරයකින් ස්ථාපනය කළ නොහැකි සමහර මෘදුකාංග ඇති බව ඔබ අදහස් කරනවාද (එම මෘදුකාංගය වෙනස් නොකර)? ඔබට අනුව, සාමාන්‍ය සම්මුතීන් නොසලකා හරින මොනොලිතික් වැඩසටහනක් පරිශීලකයෙකු ස්ථාපනය කළ යුත්තේ කොතැනින්ද?
ජේබෙන්ට්ලි

19

ඒවා ඇත්ත වශයෙන්ම බෙහෙවින් සමාන වන අතර, එකක් හෝ අනෙකක් භාවිතා කිරීම වඩා වැදගත් කාරණයකි. ලිනක්ස් සඟරාව මෙම නිශ්චිත මාතෘකාව ගැන මේ මොහොතේ / කවුන්ටර්පොයින්ට් සාකච්ඡා කළා මෙතන .


10
අහෝ හිතවත. මම "ශුද්ධ යුද්ධයකට" ඇදගෙන යාමට අදහස් නොකළෙමි.
පැච්

2
At පැච්, “පරිගණක ආශ්‍රිත” කුඩය යටතේ ඇති සියල්ල ශුද්ධ යුද්ධයකි. 2020 දක්වා වේගයෙන් ඉදිරියට යාම පවා මෙය තවමත් පවතී.
tgm1024 -

මම මේ ප්‍රශ්නයට කැමතියි. බොහෝ පිළිතුරු!
ඇන්තනි රට්ලෙජ්

13

මට නම්, පෞද්ගලිකව, බිල් @ ෆිල්ෆර්ගේ සබැඳියෙන් පැවසුවේ මෙයයි:

සංවර්ධන පද්ධතියක හෝ වැලිපිල්ලක, ඔබට / විකල්ප නාමාවලියක් තිබීම, ඔබට දේවල් පෙරළා ඒවා වැඩ කරන්නේ දැයි බැලීමට හැකි වේ. මම දන්නවා මම ඒවා අත්හදා බැලීමට උත්සාහ කරන්නේ නැහැ. යෙදුම ක්‍රියාත්මක නොවන්නේ නම්, ඔබට / opt / mytestapp නාමාවලිය rm කළ හැකි අතර එම යෙදුම ඉතිහාසය වේ. ඔබ විශාල යෙදවීමක් සිදුකරන විට ඇසුරුම්කරණය අර්ථවත් විය හැකිය (මම පැකේජ යෙදුම් කරන අවස්ථා තිබේ), නමුත් බොහෝ වාර ගණනක්, දේවල් / තේරීම තුළට විසි කිරීම සතුටක්.

අවාසනාවකට මෙන්, බොහෝ make installස්ක්‍රිප්ට් /usr/localඑහි සමමුහුර්ත කිරීමක් වෙනුවට ගොනු තල්ලු කරයි : - /


2
කාරණය කුමක්ද? ඔබ කෙසේ හෝ සිම්ලින්ක් සෑදීමට යන්නේ නම්, මුල් ගොනුව එහි මුල් තැනට නොගත යුත්තේ ඇයි?
Šimon Tóth

9
make installලිපිගොනු තල්ලු කරන ඉලක්කය පිළිබඳව අදහස් දැක්වීම සඳහා /usr/local; --prefix=විධාන රේඛා පරාමිතියක් ./configureස්ක්‍රිප්ටයට යැවීමෙන් මෙම ක්‍රියාකාරීත්වය පහසුවෙන් වෙනස් කළ හැකිය , නැතහොත් ස්ක්‍රිප්ටයක් නොමැති නම් ./configure, ඔබට පරාමිතියක් makeඉලක්කයට එවිය හැකිය : make --prefix=/usr install.
ෂෝන් සී.

4
Direct PATH හි සම්මත නාමාවලියක් ඇතුළත් කර තිබේද? මම දන්නවා / usr / local.
ලෝරන්ස් සී

7
EtLet_Me_Be හි වාසිය වනුයේ පැරණි අනුවාදයන් තබා ගැනීම ඉතා පහසු වීමයි. ගේ මම පිහිටා 'foo' 2 අනුවාද තිබෙනවා කියා /opt/foo-1.1හා /opt/foo-1.2. මම උත්ශ්‍රේණි කරන විට, ලකුණු foo-1.2 වෙත fooසමමුහුර්ත කරන්න /usr/local/bin. කිසියම් හේතුවක් නිසා මට පෙරළීමට අවශ්‍ය නම්, මම සිම් ලින්ක් එක වෙනුවට foo-1.1 වෙත යොමු කරමි. සති කිහිපයකට පසු 1.2 හරි නම්, ඉක්මණින් rm -rf /opt/foo-1.1පැරණි අනුවාදය ඉක්මනින් හා පිරිසිදු ලෙස ඉවත් කරයි.
pepoluan

7
@ultrasawblade නැත, එසේ නොවේ. කවදාවත් නොවිය යුතුය. සියල්ලට පසු, FHS ට අනුව, / opt පැකේජයේ නම සහිත උප උප කොටස් වලට බෙදිය යුතුය. සෑම දෙයක්ම PATH වෙතට ඇද දැමීම ව්‍යසනයකට ස්ථිර මාර්ගයකි. ඒ වෙනුවට, යෙදුම් තමන් විසින්ම / විකල්පය යටතේ ස්ථාපනය කළ යුතු අතර, ඔවුන්ගේ පරිශීලක-ආයාචිත වැඩසටහන් / usr / local / bin (හෝ sbin) වෙත සමමුහුර්ත කරයි.
pepoluan

12

පළමුව, දැඩි පිළිතුරක් ඇතැයි මම නොසිතමි; විවිධ පරිපාලකවරුන්ට ඔවුන්ගේ පසුබිම අනුව විවිධ මත ඇත. Ically තිහාසික වශයෙන්, /usr/localපළමු තැනට පැමිණියේය; එය IIRC හි බර්ක්ලිහි පැවති සමුළුවයි. පද්ධති V සංවර්ධනය කිරීමේදී එක් අවස්ථාවකදී, මම වරදවා වටහා නොගත්තොත් (මේ සියල්ල බොහෝ කලකට පෙරය, මම සටහන් ගත්තේ නැත), /usrකියවීමට පමණක් සවි කිරීමට තීරණයක් හෝ ආශාවක් තිබුණි , එයින් අදහස් කළේ ඔබට එයට නව මෘදුකාංගයක් එක් කළ නොහැකි බවයි; ඒ නිසා විය හැකියි /opt . එය සිදු වන විට, දැනට පවතින මෘදුකාංග විශාල ප්‍රමාණයක් තිබීම /usrනිසා එම අදහස කිසි විටෙකත් බිමට වැටුණේ නැත.

මගේ පුද්ගලික මනාපය නම් /opt, එක් එක් නිෂ්පාදනය සඳහා වෙනම උප බහලුමක් සහිතව; මෙමඟින් නිෂ්පාදනයක් ඉවත් කිරීම සරල අවස්ථාවකි rm -fr. නමුත් ඔබේ සියලුම මෘදුකාංග හොඳ පැකේජ කළමණාකරුවෙකු හරහා ස්ථාපනය කර ඇත්නම්, එය ගැටළුවක් නොවන අතර, ඔබ ස්ථාපනය කරන මෘදුකාංගය මෙම සම්මුතීන්ට දැඩි ලෙස අවනත නොවන්නේ නම් සහ වින්‍යාසයන් සහ වෙනත් තැනක ලියා තිබේ නම් /usr, එයද වැදගත් නොවේ. ප්රතිවිරුද්ධ හේතු සඳහා.


1
"" "ඔබේ සියලුම මෘදුකාංග හොඳ ඇසුරුම් කළමණාකරුවෙකු හරහා ස්ථාපනය කර ඇත" "" ඔබ බොහෝ විට භාවිතා කරන මෘදුකාංග පමණක් භාවිතා නොකරන්නේ නම් එය කළ නොහැකිය.
පැසීරියර්

1
Ac පැකේරියර් එය කළ හැකි ය, එය රඳා පවතින්නේ ඔබ භාවිතා කරන ඩිස්ට්‍රෝ ය. මෘදුකාංගය කුමක් වුවත්, එය බොහෝ විට ආරුක්කු පරිශීලක ගබඩාවේ ඇති අතර එය එසේ නොවේ නම්, PKGBUILD ලිවීමට සාපේක්ෂව පහසුය.
StarlitGhost

10

මට මේ ප්‍රශ්නය සම්බන්ධයෙන් තරමක් වෙනස් මතයක් තිබේ.
හැම දෙයක්ම ඇතුලේ jlliagre ගේ පිළිතුර , නිවැරදි මට ප්රායෝගික භාවිතය, පොකුරු මෘදුකාංග යොදා ගනිමින් විට, පෙරනිමි පරිසරය විචල්ය හා libs පෙරනිමි නැවත භාවිතය වෙත පැමිණේ.

සරලව කිවහොත් - /usr/localසහ එහි සියලුම ළමා ඩයර්ස් වැනි PATHසහ සුදුසු වැනි env vars වල ඇතMANPATH , හා /usr/local/lib{,64}ldconfig ගේ (වේ /etc/ld.so.conf.d/).

/opt/OTOH නොවේ - පද්ධතිය තුළ සහජීවනය සඳහා බහු අනුවාදයන් හෝ ගැටුම්කාරී පැකේජ අවශ්‍ය වන විට එය වාසිදායක වන නමුත් යම් ආකාරයක පරිසර කළමනාකරණයක් අවශ්‍ය වේ (උදා: පරිසර මොඩියුල හෝ මෘදුකාංග එකතු කිරීම ) අවශ්‍ය වන අතර එය අවාසිදායක විය හැකි අතර එය “නාස්තිය” විය හැකිය. "හවුල් පුස්තකාල අනුපිටපත් කිරීමෙන් ගබඩා අවකාශය, මන්ද සෑම ස්ථාපනයකින්ම /optසම්පූර්ණයෙන්ම ස්වයං අන්තර්ගත විය හැකිය.

වැඩ කිරීමේ හවුල් ස්වභාවය /usr/localසඳහා, උදා. ද්විමය යනාදිය වෙනුවට සෘජුවම /usr/local/bin(සහ මිනිස් පිටු සුදුසු පරිදි /usr/local/share/man/...) ස්ථාපනය කර ඇතැයි උපකල්පනය කෙරේ /usr/local/app/{bin,share/man,...}.


1

සාරාංශයක් ලෙස, මගේ බඩවැල් පිළිතුර ...

2.2.6 සිට මගේ FreeBSD හි සාධාරණ කොටස සහ 9 වන අනුවාදයේ සිට Red Hat Linux භාවිතා කර ඇත ...

/usr/local == Old School Conventions
/opt       == New School Conventions

යුනික්ස් / ලිනක්ස් ගොනු පද්ධතිවල දේවල් සැකසීම නිරපේක්ෂ තර්කනයට වඩා සම්මුතීන් හා සම්ප්‍රදායන් සමඟ සම්බන්ධ වේ.

එසේ නොමැතිනම්, මම බොහෝ දුරට අනෙක් සියල්ලන් සමඟ එකඟ වෙමි. :-)

සෑම විටම නීතියට යම් ව්‍යතිරේකයක් ඇත. දවස අවසානයේදී, ඔබ සැකසීමට වඩාත්ම සුදුසු දේ ඔබ තීරණය කරයි (ඔබට හැකි විට).

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.