मैं स्थानीय-संग्रह के आकार को कैसे कम करूँ?


18

मुझे locale-archiveअपने कुछ RHEL6 सिस्टम पर फ़ाइल का आकार कम करने की आवश्यकता है ।

यहाँ मेरे सिस्टम पर वह फाइल है:

[root@-dev-007 locale]# ls -l
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 15:22 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

तो मैंने ऐसा किया ...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

... तो मुझे लगा कि मैं इस zh_CNतरह से छुटकारा पा सकता हूं ...

[root@-dev-007 locale]# localedef --delete-from-archive zh_CN

... और मैं देख सकता हूँ कि zh_CNअब और सूचीबद्ध नहीं है ...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

... लेकिन आकार locale-archiveछोटा नहीं होता ...

[root@-dev-007 locale]# ls -l  
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 17:16 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

... क्या मुझे कुछ और करने की जरूरत है?

जवाबों:


24

आप सबसे पहले सभी अनावश्यक स्थानों को हटा सकते हैं:

$localedef --list-archive | grep -v -i ^en | xargs localedef --delete-from-archive

जहाँ ^enआप रखना चाहते हैं उस स्थान से बदला जा सकता है

फिर

$build-locale-archive

यदि यह आपको एक त्रुटि देता है

$build-locale-archive
/usr/sbin/build-locale-archive: cannot read archive header

फिर यह प्रयास करें

$mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
$build-locale-archive

यदि वह अभी भी विफल रहता है, तो अपने संस्करण की जांच करें। इस पृष्ठ के अनुसार अंतरिक्ष को बचाने के लिए नए संस्करणों में संग्रह के पुनर्निर्माण के लिए आवश्यक फाइलें नहीं हैं। आपको दौड़ने की आवश्यकता होगी

yum reinstall glibc-common

Red Hat Enterprise Linux के बाद के रिलीज़ में, आप dnfएक समान एप्लिकेशन का उपयोग कर सकते हैं ।


3
हालांकि मैंने देखा कि मैं मेजबान को अपने ssh कनेक्शन को नुकसान पहुंचाता हूं जब मैं निष्पादित करता हूं build-locale-archive... इसे रोकने का कोई तरीका?
रेड क्रिकेट

2
मैं यह कोशिश कर सावधान रहना होगा। मेरे CentOS सर्वर को तोड़ दिया और मुझे एक समाधान निकालने के लिए 30 मिनट लगे। unix.stackexchange.com/questions/246705/…
पीजे ब्रुनेट

rhel में dnf ??? निश्चित रूप से आपका मतलब यम ;-)
Dani_l

1

अमेज़ॅन लिनक्स पर

  1. स्थानीय संग्रह से अप्रयुक्त अभिलेखागार को हटा दें। यह कमांड एन से शुरू होने वाले को छोड़कर सभी को हटा देता है।

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. नए स्थान-संग्रह के लिए स्थानीय-संग्रह (हटाए गए स्थानों के साथ) फ़ाइल की प्रतिलिपि बनाएँ

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. रन बिल्ड-लोकेल-आर्काइव

    build-locale-archive
    

नोट: यदि आप बिल्ड-लोकेल-आर्काइव चलाते हैं तो यह प्रत्येक रन के बाद .tmpl फ़ाइल को शून्य कर देता है और जब आप इसे फिर से चलाते हैं तो आपको त्रुटि दिखाई देगी:

build-locale-archive: cannot read archive header

आप लोकेल-आर्काइव की फ़ाइल की एक कॉपी प्राप्त कर सकते हैं। या तो मौजूदा लोकल-आर्काइव को लोकेल-आर्काइव.मप्लिप में कॉपी करके या ग्लिब-आम डाउनलोड और अनपैक करके प्राप्त कर सकते हैं। यदि आप build-locale-archiveglibc- सामान्य RPM से डिफ़ॉल्ट लोकेल-आर्काइव.टिप फाइल का उपयोग करते हैं और इसके विरुद्ध चलते हैं, तो यह पूर्ण (~ 102MB) लोकेल-आर्काइव बनाएगा। छोटे आकार के संग्रह को पाने के लिए आपको उपरोक्त चरणों को दोहराना होगा।

उपरोक्त मामले में en_ * अपनों को छोड़कर सभी स्थानों को हटाने से मेरा स्थान-संग्रह 102MB से 3.4MB नीचे चला गया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.