Debian / Ubuntu 系列 GNU/Linux 服務開機自動啟動調整

有些服務不是apt-get安裝完之後就完了,像是apache2開機的時候會自己帶起來,但vsftp就不會

利用update-rc.dinsserv可以來做調整,加入需要開機自動啟動的程式、反之移除沒需要的

其實就是幫你把init.d底下的script link進rc*.d底下去~ (* = runlevel) 就會跟著系統啟動一起執行這些程式~

Debian 6.0以前用update-rc.d、6.0開始用insserv(舊的看起來還是會動就是了),而Ubuntu則是用update-rc.d

最常用的應該就…

設啟動
insserv servicename

update-rc.d servicename defaults

從預設啟動裡面移除
insserv -r servicename

update-rc.d servicename remove

runlevel什麼的就先不管它了 暫時沒需求 :P

Reference:
LSBInitScripts/DependencyBasedBoot – Debian Wiki
The Debian GNU/Linux FAQ – Customizing your installation of Debian GNU/Linux
Update-rc.d – LQWiki
Ubuntu Manpage: update-rc.d – install and remove System-V style init script links

PS:
Redhat系列的好像是chkconfig servicename on這樣?

dpkg: error: parsing file ‘/var/lib/dpkg/available’ near line N

好像是因為上一次用apt-get在安裝套件的時候意外中斷造成的

剛剛在裝irssi來掛IRC的時候就卡在這…


peterdavehello@vm-0:~$ sudo apt-get install irssi
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libperl5.14
Suggested packages:
irssi-scripts
The following NEW packages will be installed:
irssi libperl5.14
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/902 kB of archives.
After this operation, 2,446 kB of additional disk space will be used.
Do you want to continue [Y/n]?
dpkg: error: parsing file '/var/lib/dpkg/available' near line 63:
missing package name
E: Sub-process /usr/bin/dpkg returned an error code (2)

解法:
peterdavehello@vm-0:~$ sudo dpkg --clear-avail
搞定收工!

在Ubuntu 13.10 / Linux Mint或其他Debian based的GNU/Linux上安裝ElasticSearch

翻了一些文章, 以前裝ElasticSearch比較麻煩一點, 要自己處理, 不過現在官方已經有打包deb了!

ElasticSearch官方下載頁面:http://www.elasticsearch.org/download/

目前的版本為0.90.9, 下載網址為:https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.9.deb

因為依賴於java環境, 所以先安裝jre(JAVA Runtime Environment):

可以只裝minimal的版本, 比較輕量一點, 不用裝那麼多東西, 安裝也比較快:
sudo apt-get install openjdk-7-jre-headless(不想裝輕量版就把-headless拿掉就好了!)

安裝好java環境後來下載elasticsearch:
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.9.deb

然後來安裝:
sudo dpkg -i elasticsearch-0.90.9.deb

沒問題的話service應該會自動跑起來,這邊來測試看看,有curl的話就用curl直接在terminal測(用telnet應該也可以!?):
curl http://localhost:9200

或是直接在瀏覽器開http://localhost:9200也可以

結果應該會長這樣:
{
"ok" : true,
"status" : 200,
"name" : "Drake, Frank",
"version" : {
"number" : "0.90.9",
"build_hash" : "a968646da4b6a2d9d8bca9e51e92597fe64e8d1a",
"build_timestamp" : "2013-12-23T10:35:28Z",
"build_snapshot" : false,
"lucene_version" : "4.6"
},
"tagline" : "You Know, for Search"
}

看到這就表示沒問題了!

用 bash-completion 增強 Bash shell 的自動補齊功能(apt-get / aptitude / portsnap … 等)

bash 預設的自動補齊功能只會補命令跟檔名而已,假如要 apt-get install openjdk-7-jre 的話只打了 openjdk-7- 按下 tab 是不會有效果的…

透過 bash-completion 這個套件的話就可以支援非常多常用工具的命令自動補齊,bash-completion 其實就是一堆 bash shell scripts 寫出來的自動補齊功能,基於 Ubuntu 的 GNU/Linux 分支可能都有內建了,如果沒有,手動安裝的方式也很簡單:

Debian/Ubuntu 系列用
sudo apt-get install bash-completion

如果是用 yum 來管套件的Linux distro (CentOS/Fedora/RHEL)
sudo yum install bash-completion

FreeBSD(新的套件管理系統請使用 pkg install 取代 pkg_add):
sudo pkg_add bash-completion

想知道 bash-completion 到底支援了多少命令,可以看一下他的 filelist (以 Debian sid 套件為例, 應該都大同小異):
http://packages.debian.org/sid/all/bash-completion/filelist

另外要注意的是,不是每個 distribution 裝起來的 bash-completion 都會幫你處理好自動取用 bash-completion 這件事,按照不同的系統可能要手動使用類似這樣的指令:
source /usr/local/share/bash-completion/bash_completion.sh

通常是會加在 bashrc 底下,system admin 的話加入系統預設的 bashrc 也是不錯的做法