Linux 桌面瘦身加速工具組 — trans-purge

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

Linux 桌面瘦身加速工具組 — trans-purge

文章PCMan » 週日 10月 15, 2006 7:41 pm

這兩天製作了新的 Lniux 桌面瘦身加速工具: trans-purge

顧名思義,這是用來移除系統上無用的多國語言翻譯
很多人都知道 localepurge,但是系統上可以 purge 的其實還有很多地方

我就製作了這組工具來榨乾最後的部份
目前總共有提供 desktop-purge, mime-purge, 和 gconf-purge
可以節省下的空間相當可觀,同時可加速一些程式載入,但不影響功能

事實上,我們目前的桌面系統上,除了 locale 之外
還安裝了許多無用的多國語言翻譯
有很大部份在散落各處的 *.desktop 檔
而剩下的部份,很多是在 mime-database 內
還有很多是 gconf 的 schema 檔,這個多花 20 MB 左右

我們只用英文和 zh_TW,但是這些檔案內卻常包含十幾國翻譯
因此會造成系統載入速度的拖慢,也浪費磁碟空間

desktop-purge 就是用來自動掃描系統上的 *.desktop 檔
然後把其中用不到的翻譯全部刪掉,再存檔回去
使用方式: 以 root 權限直接執行 desktop-purge
主要會加速的是 gnome-panel 一類,需要產生選單的程式
效果很明顯。 我系統上需要載入的設定檔從 2 MB 減為 2xx KB。

mime-purge 是從 mime-database 裡面拿掉用不到的檔案敘述
主要能加速的對象是檔案管理程式 (對 PCManFM 有效)
使用方式: 以 root 權限直接執行 mime-purge

gconf-purge 會從 gconf 的 schema 檔裡面抽掉無用翻譯,
我自己的系統上從原本的 20 MB 清除完剩下 1.5 MB,相當可觀
使用方式: 以 root 權限直接執行 gconf-purge

所有用不到的翻譯會被清除掉 (無法復原)
保留下來的語言是英文以及「目前使用中的 locale」

下載路徑:
http://pcman.sayya.org/desktop-purge.c
http://pcman.sayya.org/mime-purge.c
http://pcman.sayya.org/gconf-purge.c

編譯方式:

gcc `pkg-config glib-2.0 --cflags --libs` -o desktop-purge desktop-purge.c

gcc `pkg-config glib-2.0 --cflags --libs` -o mime-purge mime-purge.c

gcc `pkg-config glib-2.0 --cflags --libs` -o gconf-purge gconf-purge.c

然後手動將這三個檔案 copy 到 /usr/bin 下

最後,如果使用的系統是 Debian/Ubuntu,在此提供一個自動化 purge 的方法
請手動加入這個檔案:/etc/apt/apt.conf.d/99-transpurge
檔案內容如下:

DPkg
{
Post-Invoke {"if [ $(ps w -p "$PPID" | grep -c remove) != 1 ]; then /usr/bin/desktop-purge > /dev/null; /usr/bin/mime-purge >/dev/null ; /usr/bin/gconf-purge > /dev/null; else exit 0; fi";};
};

這樣就會在每次 apt-get 安裝軟體後自動執行 purge 掉無用翻譯

警告:
本軟體以 GPL 授權釋出,並不帶有任何擔保,若使用後造成任何系統損壞,作者並不負責。 (理論上會造成的損壞,最嚴重就是中文翻譯都不見剩下英文,此外應該不太會有其他影響)

我在我自己機器上測試過,效果很好。
手動執行完畢會顯示節省了多少空間 :)

測試起來如果沒有問題希望能有人幫忙包成套件 XD
PCMan
榮譽學長
榮譽學長
 
文章: 217
註冊時間: 週六 7月 02, 2005 10:46 am

文章granziliao » 週一 10月 16, 2006 12:22 pm

另外兩個 file能不能像gconf-purge.c那樣加一個控制locale的述句(第87行)來決定哪些翻譯是要拿掉的?
有些人可能有學習語言的需求(同時需要de_DE, es_ES, en_US, en_GB,zh_TW, 其他則能省則省)·
一個小建議而己
凡發生之事必合理
頭像
granziliao
可愛的小學生
可愛的小學生
 
文章: 99
註冊時間: 週三 6月 18, 2003 9:23 am
來自: 板橋後埔

文章訪客 » 週一 10月 16, 2006 2:05 pm

想請問一下
我在compile時
出現以下錯誤

/usr/include/bits/local_lim.h:36:26: linux/limits.h: 沒有此一檔案或目錄
In file included from /usr/include/errno.h:36,
from desktop-purge.c:31:
/usr/include/bits/errno.h:25:26: linux/errno.h: 沒有此一檔案或目錄
desktop-purge.c: In function `do_purge':
desktop-purge.c:47: warning: assignment discards qualifiers from pointer target type
desktop-purge.c: In function `main':
desktop-purge.c:137: warning: passing arg 1 of `app_dirs_foreach' from incompatible pointer type

請問我可以怎處理阿
訪客
 

文章訪客 » 週一 11月 13, 2006 10:30 am

在jserv前輩的部落格http://blog.linux.org.tw/jserv/
看過以下兩篇文章
http://jserv.sayya.org/freedesktop/ligh ... p-2006.pdf
http://jserv.sayya.org/freedesktop/LiteDesktop.pdf
雖然沒看得很懂,但是至少知道刪掉某些檔案對效能會有改善

不過,小弟一直編不太起來
不知道有沒有哪位已經成功使用的前輩可以分享已經編好的檔案
或者願不願意把這些編好的檔案包成deb分享給大家呢?
謝謝
訪客
 

文章阿信 » 週一 11月 13, 2006 2:06 pm

Anonymous 寫:想請問一下
我在compile時
出現以下錯誤

/usr/include/bits/local_lim.h:36:26: linux/limits.h: 沒有此一檔案或目錄
In file included from /usr/include/errno.h:36,
from desktop-purge.c:31:
/usr/include/bits/errno.h:25:26: linux/errno.h: 沒有此一檔案或目錄
desktop-purge.c: In function `do_purge':
desktop-purge.c:47: warning: assignment discards qualifiers from pointer target type
desktop-purge.c: In function `main':
desktop-purge.c:137: warning: passing arg 1 of `app_dirs_foreach' from incompatible pointer type

請問我可以怎處理阿

安裝libc-dev就可以了
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章訪客 » 週三 11月 15, 2006 6:49 pm

抱歉
小弟出現下面訊息
用apt-cache search 找 glib-2.0卻是一大堆套件
不知道要裝哪一個,請各位前輩幫忙
謝謝


Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
desktop-purge.c:27:18: error: glib.h: 沒有此一檔案或目錄
desktop-purge.c:36: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'saved_size'
desktop-purge.c:38: error: expected declaration specifiers or '...' before 'gpointer'
desktop-purge.c: In function 'do_purge':
desktop-purge.c:41: error: 'GDir' undeclared (first use in this function)
desktop-purge.c:41: error: (Each undeclared identifier is reported only once
desktop-purge.c:41: error: for each function it appears in.)
desktop-purge.c:41: error: 'dir' undeclared (first use in this function)
desktop-purge.c:42: error: 'GKeyFile' undeclared (first use in this function)
desktop-purge.c:42: error: 'file' undeclared (first use in this function)
desktop-purge.c:45: error: 'NULL' undeclared (first use in this function)
desktop-purge.c:47: warning: assignment makes pointer from integer without a cast
desktop-purge.c:51: warning: assignment makes pointer from integer without a cast
desktop-purge.c:59: error: 'user_data' undeclared (first use in this function)
desktop-purge.c:59: error: too many arguments to function 'do_purge'
desktop-purge.c:60: error: 'G_KEY_FILE_KEEP_COMMENTS' undeclared (first use in this function)
desktop-purge.c:62: error: 'gsize' undeclared (first use in this function)
desktop-purge.c:62: error: expected ';' before 'len'
desktop-purge.c:71: error: 'len' undeclared (first use in this function)
desktop-purge.c:71: warning: assignment makes pointer from integer without a cast
desktop-purge.c:88: error: 'saved_size' undeclared (first use in this function)
desktop-purge.c: At top level:
desktop-purge.c:114: error: expected ')' before 'func'
desktop-purge.c: In function 'main':
desktop-purge.c:137: error: 'NULL' undeclared (first use in this function)
desktop-purge.c:138: error: 'saved_size' undeclared (first use in this function)
訪客
 

文章jserv » 週日 11月 19, 2006 1:43 am

Anonymous 寫:抱歉
小弟出現下面訊息
用apt-cache search 找 glib-2.0卻是一大堆套件
不知道要裝哪一個,請各位前輩幫忙


# apt-cache search glib 2.0 dev

所以就是 libglib2.0-dev
簡單來說,缺什麼軟體,就找對應的 -dev 套件。

Good Luck!
jserv
懵懂的國中生
懵懂的國中生
 
文章: 116
註冊時間: 週六 5月 08, 2004 7:36 pm

文章訪客 » 週日 1月 21, 2007 4:26 am

那請問會影響上網時所顯示的多國語言嗎?

如日語、簡中等
訪客
 


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客