2013年4月23日 星期二

解決zsh中自訂alias過的指令不能用tab補全參數

我的.zshrc都是到處抄來的,很久以前只要設定類似alias ys='yaourt -S'這樣用ys都不能補全yaourt的參數,直到最近用上了oh-my-zsh,在打開他的外掛plugins=(systemd archlinux),這兩個能補全yaourt、pacman、systemctl指令,我很好奇他是怎麼寫的,打開~/.oh-my-zsh/plugins/中的systemd/systemd.plugin.zsh及archlinux/archlinux.plugin.zsh發現明明人家也是alias沒什麼特別的,為何我原本的就不行。





好奇殺死貓,我不信邪,一部份一部關閉alias、functions、setopt、zstyle等等,終於被我找到一個設定會引起我這個問題,只要註解或刪掉setopt complete_aliases這樣自設的alias就沒問題了。



原本這個設定就有其註解其作用:# 補完動作の解釈前にエイリアス展開,我將他修改成這樣以作警惕## 不要打開 補全會不見setopt complete_aliases # 補完動作の解釈前にエイリアス展開





這是systemd.plugin.zsh,寫的好聰明要用commands或sudo_commands都不用自已在加sudo對我這個常常忘記加sudo的蛋來講相當好用。

user_commands=(

list-units is-active status show help list-unit-files

is-enabled list-jobs show-environment)



sudo_commands=(

start stop reload restart try-restart isolate kill

reset-failed enable disable reenable preset mask unmask

link load cancel set-environment unset-environment)



for c in $user_commands; do; alias sc-$c="systemctl $c"; done

for c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; done

編譯firefox-kde-opensuse時將語系檔一併包進去

我原本編譯都是英文加上額外安裝中文語系,這樣升級後會造成一個困擾,語系檔不相容一開就當,還要先手動砍掉語系檔的資料夾,再次開啟又要抓新的語系檔,我想為編譯時為何不加上語系檔?



這想法說來簡單,但有點難度搞了二、三天才搞定,好幾次編譯到一半就當掉,最後得到的心得是,一、關掉Firefox,二、移除掉Firefox,三、不要加入--disable-pango,加上語系檔可能額外要修改過才行。四、記憶體小於2GB打包時會失敗,最好放在大於2GB的硬碟空間,而不要直接在/tmp、/dev/shm編譯。







好的,現在開始實作一樣是用Arch,先下載tarball解壓縮後進入資料夾,修改mozconfig(沒有PGO)或mozconfig-pgo(編譯加上PGO)。



找到# System libraries在其下插入

ac_add_options --with-l10n-base=..
mk_add_options MOZ_CO_LOCALE="zh-TW"
ac_add_options --enable-ui-locale=zh-TW


在開啟PKGBUILD



找到build() {

在其下插入

hg clone http://hg.mozilla.org/releases/l10n/mozilla-release/zh-TW zh-TW


找到md5sums=(

將第其下兩行改成'SKIP',修改後像這樣:

md5sums=('b822ff4b2348410587dec563235d9320'

'SKIP'

'SKIP'
這兩行是對映mozconfig mozconfig-pgo的md5sums當然你也可以在修改mozconfig先算出他的md5sum,修改後找到原本的md5sum後將其改成新的數值即可。

source=(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.bz2

mozconfig mozconfig-pgo






最後開啟終端機進入該資料夾,下編譯指令即可

makepkg -si


P.S編譯PGO

要開啟PGO只要將PKGBUILD_enable_pgo="n"改成_enable_pgo="y"即可,但編譯到一半如果停在http xxx 0404只要在開啟另一個終端機下指令將Xvfb程序砍掉,程序將會繼續編譯。

pkill Xvfb


P.S2這是我修改過的,我怕講的不清楚特別放上來讓你們參考



2013年4月13日 星期六

samba4.0分享設定中的share已經不行用了

samba4.0已經不能設定security = share了,如果一樣要用匿名分享,只要修改以下幾行就行了。



sudo vim /etc/samba/smb.conf


[global]

security = user

map to guest = Bad User

guest ok = Yes

guest account = XXX


最後一個guest account不一定要設功能是以匿名登入後使其認為是你所指定的ID連入,只要本機的資料是你那個所指定的ID所建立的,都可以直接刪除,不用設定writable = yes囉。之前幾版好像就有對我來講還蠻好用的所以補上它。



設定完成要重開smbd nmbd才會生效哦



sudo systemctl restart smbd nmbd


以下是我的完整設定可以參考參考。有需要看自已的請用指令:

testparm


Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section "[homes]"

Processing section "[printers]"

Processing section "[電影]"

Processing section "[連續劇]"

Processing section "[歌仔戲]"

Processing section "[tmp]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions





[global]

workgroup = MSHOME

server string = Samba Server

map to guest = Bad User

guest account = hepha

log file = /var/log/samba/log.%m

max log size = 50

printcap name = /etc/printcap

dns proxy = No

wins support = Yes

idmap config * : backend = tdb

guest ok = Yes



[homes]

comment = Home Directories

read only = No

browseable = No



[printers]

comment = All Printers

path = /var/spool/samba

guest ok = No

printable = Yes

print ok = Yes

browseable = No



[電影]

path = /mnt/big

read only = No

create mask = 0664

directory mask = 0775

想要了解更多4.0版的請看另外4.0版也可以當不過我用不到沒研究。



另外我在Jamyy's的部落格看到以下兩個設定或許對其它也有用。

Fedora 9 升級 Samba Server

徹底取消印表機功能



load printers = no

printcap name = /dev/null

disable spoolss = yes

;cups options = raw



samba 3.5 以上, 允許家目錄內的 soft link



wide links = yes

unix extensions = no


參考資料: