跳到主要內容

發表文章

目前顯示的是 2013的文章

架設 Gitlab 於 uBuntu 12.04.3 LTS(Non-root path)

有一個 GUI 的界面對我們的親和力總是比較高的,即使是習慣 Coding 的人還是會想有一個好的介面來使用 Git,諸如 github 與 bitbucket 此類的 Code hosting,也都設計了想當好的 Web Interface 提供相當好的使用體驗。如果我們想要有好的界面,但是又想自己 Hosting Code 在自己的伺服器呢?目前有許多 Open Source 的專案提供了這類的  Web 應用,我比較喜歡的是 Indefero (基於PHP) 和 Gitlab (基於Ruby) 這兩套。Indefero 是類似 Google Code 的網站,而 GitLab 則是類似 Github 的界面。 Indefero GitLab 由於個人比較喜歡 GitLab 的界面,所以雖然對 Ruby 不是很熟悉,決定來挑戰一下安裝 GitLab。參考了  Tsung's Blog:將 GitLab 架設 於 Ubuntu 12.04 (Precise) 和 官方的安裝說明文件 ,不同的地方主要是在前述方法會成爲主要的 Root 網站,但我運行的伺服器還有運行其他的 Web 服務,所以要安裝在非主目錄。尋找解決方法和測試,花了將近 8 個小時,爲了方便自己記憶,決定記錄下整個過程。 套件需求 Python 2.5+ ruby 1.9.3+ git 1.7.10+ redis 2.0+ MySQL(or PostgreSQL) 基本環境安裝 更新套件庫資料 $ sudo apt-get update $ sudo apt-get dist-upgrade 安裝 VIM 作爲編輯工具,並設定爲預設編輯器(若已安裝請略過) $ sudo apt-get install -y vim $ sudo update-alternatives --set editor /usr/bin/vim.basic 安裝必要的套件 $ sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-s

更換 LibreOffice 圖示爲 Flat Icons

在 uBuntu/Mint/Fedora Linux 安裝好之後,就會自帶一套開源的跨平臺辦公室軟體 LibreOffice,以前各家 Linux 發行版都是預設 OpenOffice,在 2009 年 Oracle 合併 Sun 之後,因爲 Oracle 的態度和作爲,使得原先開發 OpenOffice 的人員另外成立 The Document Foundation  ,並在 Oracle 不同意捐出 OpeneOffice 名稱後,另外以 LibreOffice 名稱單獨發行。 LibreOffice 預設的 Icon 爲 Tango ,是屬於多彩且立體的風格(如下圖一),習慣線上使用 Google Doc 單色簡單的平面風格,也想替 LibreOffice Toolbar 換上 簡約的圖示風格。 LibreOffice 看來似乎有一個新的圖示集合( Flat Icon Set )符合我想要的條件,是基於 Gnome 的  Symbolic icons 發展而來的。 在 uBuntu 中的安裝方式是先安裝 LibreOffice Crystal icons 後,再下載 Flat icons 取代 Crystal 圖示。如下面步驟: 安裝 LibreOffice Crystal icons $ sudo apt-get install libreoffice-style-crystal 將圖示集下載至 /tmp 資料夾下 $ cd /tmp && wget https://github.com/hotice/myfiles/raw/master/images_flat.zip 複製並取代 Crystal 圖示集合 $ sudo cp images_flat.zip /usr/share/libreoffice/share/config/images_crystal.zip LibreOffice 中設定使用已交換的 Flat Icon Set,工具列 Tools -> Options -> LibreOffice ->> View -> Icon size and style,將選項裏的內容選至 Crystal 即可。 更換後的結果非常滿意 :) 參考資料: TRY T

釋放 Linux 中的記憶體空間

Linux kernel 在版本 2.6.16 之後增加了 Drop Caches ( Drop Caches )的機制,在這之後的 kernel 版本能夠簡單地清出多餘的記憶體空間。只要利用簡單的指令以數字讀寫 /proc/sys/vm/drop_cache,或使用 sysctl 指令就可以達成釋放的目的。 即時查看目前使用記憶體的情形: # watch -n 1 free -m 不同的數值代表的意義: 1:釋放 pagecache,捨棄一般沒使用的 cache 2:釋放 dentries 和 inodes 所佔用的 cache memory 3:等同於1+2的效果,釋放 pagecache、dentries 和 inodes 可以使用下面方式指令來釋放記憶體: Command 1 # sysctl -w vm.drop_caches=3 Command 2 #  sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 註:釋放前必須要先執行 sync 見資料寫入硬碟,避免錯誤發生

Linux 中將現有的專案加到 GitHub

按時備份自己的文件或 code 是一個好習慣,以前尚未進入資訊科學這個領域時,最常使用的備份方式大概就是 Copy & Paste + Rename (Ex: Test .txt -> Test_20130723.txt)。這個方法很簡單也很快速,但是,有些小小的問題,如 1. 時間久了檔案佔用會很大的空間,2. 不知道每一個複製的版本究竟修改了什麼,3. 協同合作的時候檔案覆蓋即一去不復返。 上述的問題讓我開始找尋其他的方案來管理程式碼,並且可以與其他人協同合作。幾年前,在 synology 的 NAS 上安裝 SVN Server,開始使用 subversion 做版本管控。SVN 的 Client-Server 架構,在個人使用上倒也還蠻順利,沒出過什麼亂子,直到發生沒有網路就沒有辦法版本更新的事情,才開始注意到分散式版本管控的好處。另外,在 OpenSource 的場合中也常常聽到討論使用 GitHub 作爲 Git Server 的專案,決定來接觸接觸。Git 有下面幾項優點: 便宜的 Branch:Git 對 branch 是對整個資料夾做快照(snapshot)的方式,追蹤的是檔案的內容,即使在不同的 branch 內也只會有一個實體,所以既省空間又比較有效率。 聰明的 commit:Git 是與 snapshot 作比對不是單純的使用 diff 來比較 commit 的檔案。 分散式管理:Git 本地端有自己的 repository,即使沒有連線的狀態下仍然可以 commit,有網路時再 push 到 server 上就好。 Repository 毀壞的風險低:分散式的架構在每一份 Client 都會有一份 repository,即使 Server 上的 repository 毀損還是可以由其他的 Client 端恢復。 在這篇文章中,不討論如何在自己的 Server 上架設 Git Server,會着重在 Linux 中如何把現有的專案加入 GitHub 上。有機會再和大家分享自己架設 Git Server 的經驗 :) 如果還沒安裝 git,在 uBuntu / Mint 中請輸入 $ sudo apt-get install git-core 在 fedora 中請輸入 $ sudo yum instal

解決 Mint / uBuntu SD 讀卡機(SD Card Reader)無法運作問題

我的小黑機(Thinkpad x200)經歷了六年的征戰,雖然前一陣子換上了 SSD 硬碟加上 uBuntu 飛快使用了好一陣子。最近還是不敵歲月的洗禮,無線網路的硬體開關開始接觸不良,對於相當依賴網路的 Linux 系統來說,是個相當困擾的問題。於是我尋找了新的替代方案 ,說穿了也就是購買新電腦,哈哈哈! 因爲很少玩遊戲,而且大部分的程式都在 Server 上運算,選擇添購新機的條件也就很簡單,主要是以方便輕鬆帶着走的爲主。ultrabook  的輕便就會是我的第一考量。再者我擔心的是現在的新筆電都是 Win8 系統,在 UEFI  和 Securtiy Boot 開啓的情況下,很難順利的安裝雙系統在硬碟中。尋覓許久最後選定了 inhon 的 carbon book 做爲我的下一個夥伴,黝黑的外觀、全機碳纖加上高的性價比(CP值)是選上他的主因。 買來完成開機後的第一件事,就是縮小 win8 系統槽擠出空間來安裝 Linux。令我感到意外的是,這臺筆記型電腦在安裝 Mint 時並沒有碰上太大的困難,似乎在 UEFI 的部分 BIOS 中並沒有太大的限制。由於 ultrabook 是使用 SSD硬碟,雖然速度快但是容量珍貴。所以多買了一張 micro SD卡當作另外的儲存空間。做完所有的設定和更新後,SD  卡卻遲遲不出現,在排除讀卡機和SD卡是不是故障的因素後,合理的懷疑是 SD  card reader 的 driver 有問題造成的。網路上的討論,Acer 和 TOSHBA 的筆記型電腦安裝 uBuntu 或 Mint 時,似乎蠻常會出現這種情形。 接下來爲解決 SD  card reader driver問題的步驟: 使用 lspci 指令找出讀卡機型號,我的是 Realtek RTS5229 : $ lspci 00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04) 01:00.0 Network controller: Atheros Communications Inc. AR9485 Wireless Network Adapter (rev 01) 02:00.0 Unassigned class

uBuntu 更新時 /boot 空間不足

已經使用 uBuntu 12.04 LTS 當作工作環境好一陣子,越來越順手和好用。除了偶爾需要玩一些遊戲解悶和郵局轉帳的限制外,其實,差不多已經可以脫離對 windows 系統的依賴。 使用時間拉長以後,有些之前短暫使用不會出現的情形就會發生。今天準備做系統更新時出現 /boot Not enough free disk space 的訊息,以致於無法順利的完成更新的動作。df 看了一下 /boot partition 的情形,512MB 的空間已經是 97% 的使用量,容不下最新一次的 kernel 更新了。其實 /boot 不需要很大的空間,Fedora 的官方建議只需要 256MB 空間即可。爲什麼會空間不足?是因爲更新後系統仍會保留舊的 kernel,避免執行新的 kernel 發生狀況時,使用者仍然可以使用舊的 kernel 進入系統。kernel 保留的多了自然空間就不大夠了,因此,我們要移除掉一些舊的 kernel 檔案清出空間。 首先,使用 uname -a 確定目前 kernel 的版本是什麼。 $ uname -a Linux jeffy-local 3.2.0-44-generic #69-Ubuntu SMP Thu May 16 17:35:01 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 下面的指令可以列出目前非使用中的 kernel 套件 $ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' linux-headers-3.2.0-31 linux-headers-3.2.0-31-generic linux-headers-3.2.0-32 linux-headers-3.2.0-32-generic ... 接下來可以利用下面的指令可以選擇不需要的套件移除 $ sudo apt-get -y purge some-kernel-package some-kern

uBuntu NIS Client + NFS Client + Autofs 設定

前一陣子在 CEntOS 的 Server 上安置好 NIS Server 與 NFS Server 的相關設定和服務,希望實現在安裝 uBuntu OS 的不同 Client 電腦上,使用 Server 的帳號登入,並且將 Server 上的家目錄於登入後自動掛載至 Client 端的電腦做爲 Client 端登入的家目錄。使用者在不同的電腦登入後可以獲得相同的桌面環境。 以前在 RedHat 的環境實作過,設定上相對於 uBuntu 系統來說簡單的許多。本篇會着重在 uBuntu 系統裡的設定說明。 NIS Client 設定及配置 安裝 nis 和 portmap 套件,安裝過程會需要輸入 NIS Domain # sudo apt-get install nis portmap 在 /etc/hosts 加入 NIS Server 的位址,避免 DNS 出狀況時無法登入 # sudo vim /etc/hosts 192.168.1.100   example.com 設定認證的 NIS Server 位置 # sudo vim /etc/yp.conf ypserver  example.com 設定 Name Service Switch,加上 nis # sudo vim /etc/nsswitch.conf passwd:         compat nis group:          compat nis shadow:         compat nis hosts:          files ... mdns4 nis 檢查 NIS 的預設設定是不是正確 # sudo vim /etc/default/nis // 是否為 NIS SERVER NISSERVER=false //是否為 NIS CLIENT NISCLIENT=true 修改 portmap 的設定(12.04 中沒有 /etc/default/portmap 可自行加入) # sudo vim /etc/default/portmap OPTIONS="-i 127.0.0.1" 由於 portmap 支援 TCP-Wrapper,設定 Server 端可以存取 Client # sudo vim /etc/hos

在 uBuntu 中讀寫 exFat 格式裝置

在各系統間支援度最高的爲 FAT32 格式的檔案系統,但在儲存媒體容量愈來愈大下也就慢慢浮現這個檔案系統的限制性。FAT32 單一分割區最大容量爲 32 GB 而單一檔案的最大限制爲 4GB,目前高品質的多媒體很容易就超過 FAT32 的先天限制,而後 M$ 推出的 NTFS 雖然突破了上述的限制,但在讀寫存取效率上卻遠遠的落後 FAT32 許多,使得備份和複製檔案時得花上不少的時間。 exFAT  (Extended File Allocation Table)格式的出現則具有更多的優勢,exFAT 又被稱爲 FAT64,優點在單一分割區擴展至 256 T B,單一檔案大小則是擴展至 16 EIB( Exbibytes ),現階段來說幾乎是單檔無上限了。對於跨系統的使用者 exFAT 無疑是一個更好的選擇,目前技術上在各系統已可以使用,但是 exFAT 仍存在 M$ 授權的法律問題,所以在 uBuntu 中預設是無法支援讀寫 exFAT 格式的檔案系統。MAC OS 在 10.6.5 後已正式支援 exFAT。 在 Linux 中 FUSE (Filesystem in Userspace) 實作了 exFAT 的讀寫套件 fuse-exfat,在 uBuntu 中我們同樣可以透過 PPA 安裝,安裝方式如下: 開啓 Terminal(可用 Ctrl+Alt+T 快速鍵),加入 PPA 到系統 Source 中 # sudo apt-add-repository ppa:relan/exfat 更新套件庫資訊 # sudo apt-get update 安裝 fuse-exfat 套件 # sudo apt-get install fuse-exfat PS. 如果在 Command Line 加入 PPA 過程中碰到 pycurl.error,可以更換使用 Software Center 的 Source 加入方式(可參考: How to Add a PPA to Ubuntu ),再將 PPA Key 加入我們的 Keyring 中。fuse-exfat 的 key 是 A252A784,可用下面的方式加入 # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys