debian package 的相依性圖形

找了半天找不到適當的指令顯示套件的相依套件,想起之前無意找到的 apt-cache dotty,就想說用圖形來看套件的相依性還是最快的。

產生圖形的方法:

  • apt-cache:apt-cache 本身就有提供 dotty command 可以產生,用法是 apt-cache dotty your_package > out.dot
  • debtree:debtree 需要另外安裝,好處是有提供更多額外的參數來產生圖形,用法是 debtree your_package > out.dot

接著就可以利用 dot 指令來產生圖形了,dot 是 graphviz 套件提供的指令,可以根據 dot 語法來產生圖形,用法是 dot -T png -o out.png out.dot。用 apt-cache dotty 產生的 dot 語法,會讓 dot 產生圖形的速度變得非常慢;而 debtree 所產生出來的 dot 語法,就不會如此。我猜想是 debtree 有預先排除掉 libc6, libstdc++6 與 zlib1g 的關係吧。

systemd

最近 Debian 宣佈以後改用 systemd,Canonical 也隨之跟進,所以之後衍生的 distribution 應該也都會跟進。Arch 是已經改用 systemd 了,CentOS/RHEL 應該是到 7 以後才會可能會用 systemd。

看到這兒就想到目前在用的 Ubuntu 12.04 應該也可以改用 systemd 吧~目前先找到這兩篇:

基本上都是要特定 ppa (上面這兩篇提到的 ppa 還都不同,到時候再來看那邊比較新就用哪個),安裝 systemd 以後,然後改 grub ,大概就這樣。可能遇到的問題是 /etc/mtab 問題以及一些服務可能會無法啟動。從 Ubuntu Wiki 對 systemd 的說明裡 看起來缺的東西不少,我想最好是先拿 VM 的機器來試驗,不要拿工作機來試驗,免得把自己搞得焦頭爛額。

The Debian Administrator’s handbook

這本電子書是免費的,你可以在 The Debian Administrator’s handbook 網站上取得。

之前在 LinuxToy 上看到這本書可以下載,有利用 git 去抓取原始碼,後來就擱在硬碟裡。最近在整理硬碟時,看到這份原始碼,看了一下,居然可以產生 epub ,又看到 publican.cfg,以為是用 Python Pelican 產生的,就想說要找一天來仔細看看。今天再仔細一看,發現這誤會可大了,原來人家是用 publican,不是 pelican。

publican 的安裝很簡單,依照原始碼裡的文件,就用 sudo apt-get install publican 就可以,但在 Ubuntu 12.04 下,並沒有 publican-debian 。執行 publican 時,會有錯誤訊息:”Failed to load brand file”。所以我修改了 publican.cfg 裡的 brand,將其改為 common 就可以順利執行。指令是這樣下的,要產生 PDF:publican build –format=pdf –langs=en-US ;要產生 epub:publican build –format=epub –langs=en-US 。看原始碼裡有簡體中文的翻譯,有試著產生一份,但是發現並沒有翻譯完全,在 gitcafe 有看到 fork 一份出來,但是一樣不全,看來是停止翻譯了。

innobackupex

在噗浪上看到有人分享 innobackupex 這工具,就決定來試用看看。這指令其實是被包含在 xtrabackup 工具裡,使用 Perl 寫的,所以只要安裝 xtrabackup 就可以。

CentOS 5 上的安裝可以透過 yum,步驟可以參考 Percona 上的說明,首先用 rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm 安裝 Percona 的 repo 檔案,接著用 yum install percona-xtrabackup 就可以了。

我使用的是 MariaDB 5.5,試著要備份時,卻出現沒有指定 datadir 參數的問題。innobackupex 裡實際上使用的是 xtrabackup_55 (不同的資料庫需要用不同的指令,innobackupex 是自動判斷),大致追蹤指令原始碼,發現它是讀取 my.cnf 來得知 datadir 的值; MariaDB 的 my.cnf 很簡潔,直接 include /etc/my.cnf.d 下的所有 cnf 檔案,再查看裡面各個 cnf,都非常的簡潔,看起來是都採用預設值,所以不需要額外設置。因此我在 /etc/my.cnf.d/server.cnf 的 [mysqld] 之後加上 datadir=/var/lib/mysql 以後,innobackupex 就可以順利運作了。

  • 備份:innobackupex –user=DB_USER –password=DB_PASSWORD /path/to/BACKUP-DIR
  • 回存:innobackupex –copy-back /path/to/BACKUP-DIR

extundelete

之前一直以為在 Linux 上反刪除是很麻煩的,直到過年前自己誤刪了檔案,去 Google 解法之後,才知道現在有 extundelete 這工具。

根據 extundelete 的網站說明,在反刪除之前,第一要先卸載,如果是系統分割區,那最好就是趕緊重開機,以 LiveCD 開機;第二就是用 extundelete 進行搜索被刪除的檔案。

我自己的情況是不小心移除了系統分割區上的檔案,所以我趕緊重新開機以 Ubuntu 12.04 LiveCD 開機。重開機以後,去系統設定裡的 “Software & Updates” ,把 main, universe, restricted, multiverse 都勾選起來,接著到 terminal 裡執行 sudo apt-get udpate && sudo apt-get install extundelete ,安裝 extundelete。安裝完成後,執行 sudo extundelete –restore-all –restore-directory /home/user –after 1390881600 /dev/sda1 就會開始進行反刪除的動作,反刪除後的檔案會放置在當前目錄下的 RECOVERED_FILES 資料夾下。”–after” 表示只拯救指定日期後的檔案,而其後的數字,是用 date -d “2014-01-28 12:00” +%s 取得,extundelete 不接受日期時間字串,只能透過 date 指令取得數字來使用,這部份可以在 extundelete 的 man page 裡看到。

只是 Ubuntu 12.04 的 extundelete 有問題,我後來再用 Ubuntu 13.10 的 LiveCD,才能正常使用。但最後還是拯救失敗,因為從刪除到重開機,我還是做了太多動作,導致一些檔案已經被覆蓋掉,殘念,只能安慰自己說那些檔案其實不重要。

參考資料:

puddletag 的編碼轉換

puddletag 跟 Windows 上的 mp3tag 軟體一樣都是編輯 MP3 id3 資訊的工具,Linux 上同類的軟體有 easytag。這套軟體的介面基本上就是向 mp3tag 看齊,有使用過 mp3tag 的話,使用上應該不太有困難。

除了介面與 mp3tag 相似以外,我覺得 puddletag 最大的特色是 action/function 這功能,你可以用 action 跟 function 組合出各式各項快捷的新組合,讓你在編輯上能更方便,例如可以對歌曲重新編 track 並且填入 album 。

我在使用時,遇到有亂碼的問題,我大概知道是編碼的問題,之前是使用 big5 填 id3 tag v1,所以如果沒 id3 tag v2 的欄位時,會拿 id3 tag v1 的欄位來用,這時候因為不知道要從何種編碼轉為 unicode ,就會有亂碼的發生。本來我已經捲起袖子要寫 Plugin 來解決問題了,後來看了 puddletag 本身提供的 function,發現已經有 “Convert from non-standard encoding” 這個 function,只是裏面的選項沒有 big5 可以選。

追蹤 puddletag 的原始碼,這個 function 是定義在 /usr/share/pyshared/puddlestuff/functions.py 裡,內容大致是這樣:

因此,只要在 “&Encoding, combo,” 後加上 “big5,” 就可以多出 big5 的選項,日文就是 shiftjis,簡體中文就是 gb2312。有了這選項,編碼轉換的功能也可以順利運作了。為了避免更動原始碼,就寫了一個 plugin function,其實只是增加多的編碼,網址在 https://github.com/elleryq/puddletag_pluginfunction_extended_enconvert

CentOS OpenSSL

今天看到這篇 Secure Web API ,提到可以用 SSL Server Test 這個網站服務來檢查 SSL 憑證的安全性,所以就來試試看。

我的機器用的是 CentOS 5,因為是從很早以前的版本升級來的,設定幾乎都是照舊,今天重新整理,對照設定檔跟新設定檔以後,才發現 certification 位置已經更換了。

CentOS 5 的 SSL certification 改放在  /etc/pki/tls/certs ,所以要到該目錄下輸入 make your.crt ,依照步驟回答問題後,就可以製作出 your.crt 跟 your.key ,接著把 your.key 複製到 /etc/pki/tls/private 。然後去調整 /etc/httpd/conf.d/ssl.conf ,並且參考 Configuring Apache, Nginx, and OpenSSL for Forward Secrecy 去修改設定檔案,但不要加入這行 SSLCipherSuite 。不加入的原因是因為 CentOS 的 OpenSSL 並沒有加入 EC support ,如果要加入的話,目前看來是要重新編譯 OpenSSL 套件 (Bounty : OpenSSL with EC for Fedora/RH/CentOS : 3.6 BTC),裡面提到的步驟是下載 source RPM,修改 .spec 裡的 configure 該行,改為 enable-cms enable-md2 no-idea no-mdc2 no-rc5 enable-ec enable-ecdh enable-ecdsa 。

最後再重新啟動 Apache 。

ArchLinux 裡的 locale 設定

ArchLinux 的全域 locale 設定 (LANG)是在 /etc/locale.conf ,如果個別使用者想要設定自己的 locale 怎麼辦呢?

在登入,執行 bash 以後,bash 會先去載入 /etc/profile ,通常 /etc/profile 會去載入並執行 /etc/profile.d 下的所有 .sh 的檔案,這裡有個 locale.sh ,這邊就註明了會去哪裡載入。

首先會看是否有 $XDG_CONFIG_HOME/locale.conf ,有就載入;然後再看 $HOME/.config/locale.conf ,有就載入;再來才是看前面提到的 /etc/locale.conf ;最後才是參考 rc.conf。

所以只要在 $HOME/.config/locale.conf 裡寫 LANG=zh_TW.UTF-8 就可以囉。

同場加映,ArchLinux 已經不再使用 sysv ,這表示再也沒有 /etc/init.d 這類的目錄,ArchLinux 已經改用 systemd 了。

ArchLinux Yaourt/Pacaur

今天再次把 ArchLinux 開來玩。裝了 Razor-QT 以後,發現 Razor 設定中心裡的圖示都沒有出現,以為是安裝的問題,就想說用 yaourt 重新裝一次。

yaourt 是一個輔助 pacman 的工具,除了可以當作 pacman 來用之外,它還會自動從 AUR 取得軟體並進行編譯跟安裝。詳細的說明可以參考 ArchLinux Wiki 上的說明。依照指示設定以後,安裝失敗,我遇到是 GPG 驗證失敗的訊息,用 sudo pacman-key –init 無效,後來是在 /etc/pacman.conf 裡 [archlinuxfr] 的地方增加 SigLevel = Optional TrustAll ,然後重新執行 sudo pacman -Syu yaourt 才裝好。

執行 yaourt razor-qt 重新編譯安裝以後,圖示仍然沒有出現,再請 Google 大神幫忙以後,才知道是沒裝圖示套件的緣故,就用 sudo pacman -Ss oxygen-icons 就順利解決了。

另外在噗浪的回應裡看到說,除了 Yaourt 之外,還有一個 pacaur ,同樣也是類似 Yaourt 的工具,所以就順便裝上來試試看。但 pacaur 不在官方套件庫裡,只能用 yaourt 來裝,執行 yaourt -S pacaur 就可以了。

 

ArchLinux 初體驗

在 VirtualBox VM 裡裝的。

我是下載 CD image 來安裝,光碟是 LiveCD,只是沒圖形介面,所以拿光碟開完機就是 console,讓我小錯愕一下,還特別重新開機再確認一次。詳細安裝可以參考 Beginners’ Guide ,我是照這篇來安裝的。步驟很詳細,我覺得缺點是初學者可能會不知道要選哪一個。每個章節裡是一個大項目,然後裏面才會提到選擇,例如 bootloader 你可以選 syslinux, grub … 或是磁碟配置你可能要依照情況使用 cgdisk 或 fdisk 等工具。做完,一個乾淨的系統就安裝完成了,開完機會進 Console 模式。

由於是在 VirtualBox 裡,VirtualBox guest utility 必裝:Arch Linux as a guest in a Virtual Machine

pacman 是必學的指令,詳細的說明可以閱讀 ArchLinux Wiki,這邊只提幾個常用的:

  • pacman -Syy :類似 apt-get update
  • pacman -Syu :類似 apt-get upgrade
  • pacman -S :類似 apt-get install
  • pacman -R :類似 apt-get remove
  • pacman -Q :類似 dpkg -l
  • pacman -Ss :類似 apt-ache search

接著是安裝一些必裝的:

  • sudo :總不能一直都用 root 登入,裝這個以後,先新增使用者,設置群組,將使用者加到 wheel 群組裡,然後在 /etc/sudoers 裡取消 wheel 該行的註解。
  • vim :我用 vim …
  • base-devel :為了要編譯 razor-qt 用,這邊我是參考 AURAUR 有點像是寫好的 script,下載 AUR 裡套件的 PKGBUILD 以後,就可以用 makepkg 來包出所需的 package。
  • slimxorg :就為了圖形介面,不過 xorg 連結裡提到的 hal,我沒辦法安裝。有人說是新版已經不需要了。
  • gcin :好用的輸入法
  • firefox :好用的瀏覽器
  • terminator :好用的終端機
  • openbox :搭配 razor-qt 用的,LXDE 也用這個。

桌面環境,我是用 razor-qt,用 pacman -Ss 找不到,所以自己去 AUR 找 PKGBUILD,然後 build,再安裝。接著依照 Wiki 上的說明去設置 .xinitrc。

最後就大功告成了。裝完以後的感想是,對終端機的操作有點基礎會比較適合使用這個 distro。

參考資料: