2010年6月2日

dpkg指令(2)

接著來看一下dpkg -l出來的結果,其實很多參數讓人迷糊,最常看到的
  • -ii:已經安裝(這很容易瞭解)
  • -iU:下載回來還沒安裝
  • -rc:表示有設定檔案尚未宜除
說真的,像使許多kernel,ubuntu預設都會留著,如果不是在開發程式或者為了使用某些特殊版本,只是為了作一個簡單的個人server,真的可以把他們通通移除。接著比較麻煩的就是那些rc檔案,如果要一個一個找出來移除還真麻煩(不過也比較保險),但是如果你跟我一樣,心臟夠大顆,那就試試看下面這個指令
dpkg --get-selections | grep deinstall | awk '{ print $1 }' | xargs dpkg --purge
管他三七二十一,只要是rc的設定檔案通通剷除 ,只能說xargs真是個好物阿!!

dpkg指令(1)

相信許多玩過一陣子的人都知道dpkg指令可以做到許多事情,大多可以被apt跟aptitude取代,不過兩者骨子裡面還是dpkg,就先回顧一下debian wiki上的dpkg

dpkg 是 Debian GNU/Linux 底下管理套件的工具,提供比較低階的安裝維護功能,一般而言,使用者會使用比較友善的 dselect 或是 aptitude
顯示目前裝在系統中的所有 packages(rpm 用 rpm -qa)
dpkg --list
想知道總共有那些檔案安裝在系統中(rpm 為 rpm -ql samba)
dpkg --listfiles samba
或是在系統中有某個執行檔, 想知道屬於那個 package, 這樣在別台機器中才有辦法安裝
$ which smbd
/usr/sbin/smbd
$ dpkg --search /usr/sbin/smbd
samba: /usr/sbin/smbd
最前面的 samba 即為 package 名稱, 先用 which 找到 smbd 這個執行檔放在那個路徑, 再用 dpkg --search 來找到 package
名稱(redhat 中則用 rpm -qf /usr/sbin/smbd)
看 package 的說明(redhat 為 rpm -qi samba)
dpkg --status package_name 
或
dpkg -s package_name
假設我們由網路上自行抓了一個 .deb 的檔回來, 這時就要用 dpkg 來安裝(redhat 為 rpm -i xxx.rpm)
dpkg --install package_name.deb
或
dpkg -i package_name.deb
移除某個 package(rpm 為 rpm -e package_name)
dpkg --remove package_name
或
dpkg -r package_name
徹底移除 package
dpkg --purge package_name 
或
dpkg -P package_name
在還未安裝到系統中前, 查看會安裝那些檔案在系統中(rpm 用 rpm -qlp xxx.rpm)
dpkg --contents package_name.deb
或
dpkg -c package_name.deb
在還未安裝到系統中前, 查看 deb 檔es的資訊(rpm 用 rpm -qip xxx.rpm)
dpkg --info xxx.deb
顯示目前各個軟體套件的安裝狀態(未安裝、正確安裝、被移除、完整移除、安裝失敗等等)
dpkg --get-selections
如何在升級套件時, 讓某些套件不要更新:
echo "packagename hold" | dpkg --set-selections
還有這個討論區的討論
首先要學習debian的中層包管理dpkg,這是一個基礎.

簡介
dpkg是 Debian的中級軟件包管理器,類似RPM.
dpkg是Debian軟件包管理系統的中流砥柱,負責安全卸載軟件包,配置,以及維護已安裝的軟 件包.也是Debian系統中眾多軟件包管理工具的後端.有關dpkg的更多介紹參閱:http://www.dpkg.org

系 統中所有packages的信息都在/var/lib/dpkg/目錄下,其中子目錄」/var/lib/dpkg/info」用於保存各個軟件包的配置 文件列表.
.conffiles 記錄了軟件包的配置文件列表
.list 保存軟件包中的文件列表,用戶可以從.list的信息中找到軟件包中文件的具體安裝位置.
.md5sums 記錄了軟件包的md5信息,這個信息是用來進行包驗證的.
.prerm 腳本在Debian報解包之前運行,主要作用是停止作用於即將升級的軟件包的服務,直到軟件包安裝或升級完成.
.postinst腳本是完成 Debian包解開之後的配置工作,通常用於執行所安裝軟件包相關命令和服務重新啟動.
/var/lib/dpkg/available文件的內 容是軟件包的描述信息,該軟件包括當前系統所使用的Debian安裝源中的所有軟件包,其中包括當前系統中已安裝的和未安裝的軟件包.


dpkg

查 詢以安裝的信息
查詢當前系統所有已安裝的deb包
dpkg –l 命令用於查詢當前系統所有以安裝的deb包的信息.,通過less和grep可以執行更複雜的查詢工作.

例如查找跟vim有關的軟件 包,dpkg –l |grep –ivim
(如發現iU 表示軟件包未安裝成功,ii表示安裝成功)

查看已安裝軟件包的詳細情 況
dpkg –s 命令查看軟件包的詳細情況,包括版本,依賴之類的

查詢系統中所安裝軟件包所安裝的文件
dpkg –L 命令用於查詢系統中所安裝軟件包的安裝的文件安裝到系統的位置和安裝了那些.

用apt-get install *

如 何可以看軟件包裝到哪個地方?
dpkg -L package-name|more

查詢系統中某個文件屬於那個軟件包
dpkg –S 命令用於瞭解當前的軟件屬於那個軟件包

查詢未安裝的信息
查詢未安裝軟件包詳細信息
dpkg –I 命令用於查看未安裝軟件包的詳細信息,以便瞭解該軟件包是否需要安裝.

查詢deb包文件中所包含的文件
dpkg –c 顯示未安裝deb軟件包所包含的文件列表,以及安裝位置

安裝軟件包
安裝deb軟件包
dpkg –i 手工安裝deb包到系統中,不過有時會存在Dpends關係,建議使用apt-get 來安裝.
如果通過dpkg –i安裝軟件後由於Dpends關係沒有安裝成功,可通過apt-get –f install解決

解決dpkg –i 安裝deb包出現Dpends問題
apt-get –f install 解決Dpends問題.

例如:dpkg –i lftp_3.1.3-1_i386.deb
Selecting previously deselected package lftp.
(Reading database … 20654 files and directories currently installed.)
unpacking lftp (from lftp_3.1.3-1_i386.deb)…
dpkg:dependency problems prevent configuration of lftp:
lftp depends on libexpat1 (<=1.95.8);however
dpkg : error processing lftp (--install)
dependency problems –leaving unconfigured
Errors were encountered while processing:
lftp
//lftp軟件包安裝失敗

dpkg –l |grep lftp
iU lftp 3.1.3-1 Sophisticated
command-line FTP/HTTP client p
//」 dpkg -l」 查詢信息表示lftp軟件包未安裝成功
(iU表示未安裝成功,ii表示安裝成功)

使用apt-get –f install解決

卸載deb軟件包
卸載deb包
dpkg –r用於卸載指定的軟件包,該命令只卸載軟件包安裝到系統中的文件,而不去刪除軟件包的配置文件,因此不是完全意義上的卸載.但是軟件包保存在系統中,可 以提供給以後在安裝軟件包時使用.

例如:dpkg –r prozilla 移除後再用dpkg –l |grep prozilla 查看
會看到rc proc 1.3.6-3woody3 multi-thraded download accelerator
表 示軟件包已經被卸載,但配置文件仍在「rc」帶表配置文件仍在.

卸載軟件包並清除配置文件
dpkg –P 用於卸載軟件包同時也刪除配置文件,dpkg –P 不能解決Dpends問題,建議卸載時使用apt-get操作

重新配置軟件包
對 於Debian系統中的眾多軟件包(尤其是系統和服務器軟件包)來說,在第一次安裝該軟件包時候會顯示對話框窗口,提示用戶輸入必要的配置信息.當用戶需 要再次對軟件包配置的時候,可以使用dpkg-reconfigure來對指定的軟件包進行配置.
比如dpkg-reconfigure locales

用於配置語言

alien包轉換工具
如果我們有很喜歡的RPM包,而又沒有deb版本.
怎 麼辦~?
可以同過alien來轉換或者直接安裝,這個小傢伙可是個很方便的東西!
基本命令如下:
首先通過apt-get install alien來安裝.
然後
alien -i name-of-the-pakage.rpm /*用來直接安裝rpm包
alien -d , --to-deb /*Make debian packages,This is the default
例:alien –d package.rpm
alien –r , --to-rpm /*Make rpm packages
例:alien –r package.deb
alien –p , --to-pkg /*Make Solaris pkg packages
alien –-to-slp /*Make slp packages
alien –t , --to-tgz /*Make tgz packages
alien –T 檢測
alien –-patch=patch 設置patch
這兩者應該提供了夠豐富的dpkg指令的使用方式

google要把平台全換到linux跟mac!?@@a

http://chinese.engadget.com/2010/06/01/google-said-to-be-moving-away-from-windows-internally-mac-and-l/

其實一直再想要不要把新聞性的東西放上來,思考中

2010年5月31日

graphviz工具

簡單來個範例,檔案名稱test.dot
digraph gr{
    大->小
    }
接著dot -T png test.dot -o result.png,這樣就可以輸出了,結果如下










當然還有許多應用,底下列出許多參考連結
程式分析相關
資料庫相關
程式文件相關

字形相關資訊

http://zh.wikipedia.org/zh-tw/%E7%84%A1%E8%A5%AF%E7%B7%9A%E9%AB%94
如果調整過桌面字形或firefox字形的人就常看到,啥叫做襯線,這個wikipeida倒是蠻清楚的圖解的
看到下面相關的斷字資訊,點進去很可惜沒有中文翻譯,其實有時候這種小東西還蠻有意思的
http://en.wikipedia.org/wiki/Hyphen
那就看看英文的吧,其實這東西對於排版有些好處,但是有時候字都排的很緊密也會看的很累
P.S.這篇竟然不知道如何歸類Orz,過去寫的類別竟然沒這篇的份

PCManFM 1.0 RC 1

感興趣者可以到sourceforge下載
http://blog.lxde.org/?p=727
這是pcman寫的wiki內容吧,可以參考看看,比起natuils,pcmanfm是一個輕量級的FM,有興趣的人看看系統資訊就知道natulis其實很消耗記憶體,而pcmanfm幾乎已經可以取代它。
一個台灣人開發的工具,結果幾乎在台灣網頁上找不到啥消息,真的有點...

2010年5月30日

關閉NetworkManager後的Firefox自動離線

因為pppoe之前跟network manager不相容,我就關閉了它,這樣一來造成每次firefox啟動的時候會認為沒有網路,自動進入離線模式,解決方式
用firefox的about:config
toolkit.networkmanager.disable=true
重新開機之後應該就可以解決

linux的市場佔有率

我思考著一個linux作為一個不錯的作業系統,上面有許多優良的軟體(當然也有不足夠好的軟體),為何普及率或者說市場佔有率還是不高,他到底還缺乏甚?我還是沒找到答案
先來看看數字,或許數字來自媒體,本身需要帶點懷疑,但是大趨勢不變
http://taiwan.cnet.com/digilife/0,2000089053,20135891,00.htm
http://www.ithome.com.tw/itadm/article.php?c=59458
M$本身的作業系統佔有超過八成以上的市場,linux非常低,大約1%,我想這是桌面市場來說,如果server市場linux/unix的比例應該相對提高,但是我想知道的也是桌面市場

很多人對linux的看法是,這東西不夠有親和力,說一句難聽的,或者就是軟體寫得不夠好(不是說軟體不正確,而是無法符合使用者的預期),底下有一篇討論,提出了一個有趣的觀點http://www.ubuntu-tw.com/modules/newbb/viewtopic.php?topic_id=15098&viewmode=flat&order=ASC&type=&mode=0&start=0

...
有本書叫做"誰說人是理性的(Predictably Irrational)",裡面提到社會規範(social norms)和市場規範(market norms)的概念。
當你跟別人說"Linux很好,送你!",別人欣然接受。這時候是屬於社會規範,大 家都很高興。
但是當別人有困難時你卻口出惡言,你就是把狀況導向市場規範,這時別人肯定就會用市場的方式討論自由軟體。
接著你又拿出那套 自由軟體哲學跟別人吵,別人肯定會認為你很虛偽。
...

回頭看看自己以前寫得文章

Linux下的多媒體鍵盤(multimedia keys)

現在鍵盤很多都已經是多媒體鍵盤了,的確在使用上會比較方便一點,只要一個按鈕就可以叫出檔案瀏覽器或者說做出播放的動作,真的相當方便
可是許多人都不知道哪裡設定,其實只要兩個簡單的步驟
  1. 使用xev取得keycode
  2. 設定.Xmodmap(在使用者目錄下,沒有請自行建立)
打開xev之後會跳出一連串文字,先不理會,可能會跳出一個白色的視窗,作為監測鍵盤滑鼠移動的視窗,點了之後,不要移動滑鼠(免得資訊太多),然後按下'a',就會收到兩個event,分別是key press跟key release,表示按鍵按下跟放開,其中有個重要的資訊叫做keycode,表示該按鍵的代號,是要寫入.Xmodmap
例如把keycode為162的按鍵對應到檔案瀏覽器上

keycode 162 = XF86Explorer

最後,那麼有多少已經設定好的key呢?可以參考最後的列表,如果英文有點底子的話,大多可以望文生義,不然就自行測試囉
另外就是有許多鍵盤上面有function key,就是寫著fn的按鍵,配合其他按鍵可以產生類似調整螢幕亮度大小的功能,這是跟一般按鈕事件不一樣的,因為會產生硬體控制的方式,所以這樣的組合key是送給bios,不會當作一般事件。
function key使用的是 apcil(Advanced Configuration & Power Interface)這個daemon來控制,所以如果說系統沒有裝好良好的driver,可能function key並不會作用。使用acpi_listen可以抓到這樣的組合key的keycode。接著把keycode的資訊寫到/etc/apcil裡面去就可以,可以參考這裡

2010年5月29日

Mobile Device上面的Linux

不管是Ubuntu的Remix或者Fedora的Moblin Spin都是嘗試把linux搬到mobile device上面,然後改些操作介面,或者他們所謂的netbook上
我想這會有兩個問題:
  1. 目前netbook慢慢的向notebook靠攏,其實我覺得這樣的前景其實不大好,因為慢慢使用者會裝回正常的desktop版本,沒有太大的需求使用這種特異版本
  2. 其次,改變最多的是桌面環境的操作方式,在應用程式方面跟核心的調整方面很缺乏,未來如果要使用到電力有限的移動裝置上面,有相當的限制
Android在這部分就顯得比較好一些,畢竟是一開始就鎖定mobile device上,另外應用程式大多也重新開發過,並非直接移植linux上面的
或許,因為考量到使用者體驗的問題,remix跟moblin才沿用之前的應用程式,讓使用者有一致的使用方式,而google本身只要儘量的複製他雲端模式就可以了
其實講到Mobile device的話,就另外有三個可以提到版本,一個是nokia的synbian跟M$的win mobile,還有apple iphone。這三者的特色就是作業系統的部分幾乎都不開放。
Nokia的版本本身效能相當好,不過似乎開發上面很不容易,外加好像有其他的因素,並沒有很多開發者投入,變得比較封閉
win mobile就不用說了,要不是他跟OS有相當強的相容性,不然早就被市場淘汰了XD(我是這麼認為啦),穩定性相當差,也不知道是手機開發廠商的問題,還是他作業系統的問題,似乎6.x版本跟過去的win 95一樣,幾乎隨時隨地可以當機
iphone是另外一個很特異的版本,本身吸引了相當多的開發者,也努力的往這方面經營,使用者不用怕手機變成孤兒
其實這些版本,如果在手機上來說,remix跟moblin似乎沒有參與的意願,而win mobile的吸引力最差,也就是他本身除了作業系統的綁定跟後面有個有錢的公司在支持外,應該沒啥競爭力。
可是另外兩者也不是沒有問題,比方說andorid目前相當青澀,開發太快,有些開發者跟使用者不知所措,比方HTC某修更新就來不及,然後跳票了。Nokia也是頗為分歧,有4.0, 6.0等等版本,開發者並不如有些平台來的多。iphone似乎是最穩定的,不過他價格昂貴,在市場上是有所區隔的,如果說要普及到大眾上應該有點小問題。

最後想說的,未來在發展這類行動裝置上面的平台的時候,似乎應該考量到操作方式以及產品特色。例如大多的操作方式是幾個應用程式,比較少使用者會想異想天開的在上面執行一些科學計算或者統計吧(雲端的另外說,因為他本身計算不在該機器上);另外就是使用者的輸入方式,有些設備是使用拇指,並不具備鍵盤,應該想辦法讓這樣的操作可以順利,但是有不免需要輸入,比方回一些訊息或者email,要如何讓使用者可以簡易的回答。應用程式慢慢的也應該想辦法朝著省電同時又達到相當效能的方式設計,這部分可能要同時由作業系統核心跟應用程式整合的方式開發