在 Debian / Ubuntu GNU/Linux 底下找出特定命令 / 程式的來源套件

Debian / Ubuntu based GNU/Linux 底下做事有個很棒的優點,有太多工具可以透過 apt 套件庫來進行安裝,重灌電腦的時候只要透過 apt 或 apt-get 就可以把一大半會需要用到的工具給裝起來,不過有時候可能邊摸索邊上網查資料來看某工具要怎麼用,一骨腦裝完卻沒作筆記,日後要準備重灌時卻想不起來該裝什麼套件才能把要用到的命令找回來,窘 …

如果你有安裝 command-not-found 這個套件,在 bash shell 底下如果執行了找不到的命令,除了常見的 blah: command not found,他還會有很貼心的提示使用者應該安裝哪個缺漏的套件,像這樣:
$ kvm
The program 'kvm' is currently not installed. You can install it by typing:
sudo apt install qemu-kvm

上面範例為我執行了一個不存在的命令 – kvm ,然後 command-not-found 這套工具建議我去裝 qemu-kvm 這個套件,裝完後就會有 kvm 這個命令可以使用了,如果同時存在不只一個套件包含了同樣的命令,command-not-found 這套工具一樣會很好心的幫我們列出來,例如:
$ sar
The program 'sar' can be found in the following packages:
* sysstat
* atsar
Ask your administrator to install one of them

就算是找不到 100% 符合的命令,command-not-found 也會很好心的列出其他參考,例如:
$ gitx
No command 'gitx' found, did you mean:
Command 'gitg' from package 'gitg' (universe)
Command 'git' from package 'git' (main)
Command 'gitk' from package 'gitk' (main)
gitx: command not found

不過上述的功能僅限於我們沒有正確的安裝對應的套件才能使用,如果是套件已經裝起來了的時候呢?例如我工具都已經裝好了,只是想確認某個命令是從哪裡來的,要做個筆記而已,這種情況很常見的啊,例如遇到問題跑去問 Google ,看到一堆解法,一個不行換一個,換到可以的解法的時候可能已經 apt-get install 不知道多少次了,已經忘記剛剛的命令到底是從哪邊來的了XD

還好 dpkg 有個強大的搜尋功能,可以讓我們從已經安裝的套件中搜尋出他們到底包含了哪些檔案,底下是從 Ubuntu 16.04.1 裏面擷取的 dpkg manpage:

-S, –search filename-search-pattern…
Search for a filename from installed packages.

使用方式為:
$ dpkg -S '檔案路徑/名稱'

要透過 dpkg -S 來找命令對應所屬的套件,只要把命令的完整路徑丟給他就可以了,命令的完整路徑我們可以透過 type 或 which 這兩個指令來確認,例如:
$ type whoami
whoami is /usr/bin/whoami

$ which whoami
/usr/bin/whoami

從上面的輸出我們可以知道 whoami 這個命令的完整路徑是 /usr/bin/whoami ,再把 /usr/bin/whoami 拿去 dpkg 查詢就可以了!例如:
$ dpkg -S '/usr/bin/whoami'
coreutils: /usr/bin/whoami

$ dpkg -S '/usr/bin/curl'
curl: /usr/bin/curl

或是直接
$ dpkg -S "$(which whoami)"
coreutils: /usr/bin/whoami

$ dpkg -S "$(which curl)"
curl: /usr/bin/curl

從上面的結果我們可以發現 curl 這個命令是從 curl 這個套件來的, whoami 這個命令則是從 coreutils 這個套件來的,如果你查詢的是還沒有安裝或是不是透過 apt / dpkg 套件管理工具安裝的命令,那就沒辦法了:
$ dpkg -S '/usr/bin/kvm'
dpkg-query: no path found matching pattern /usr/bin/kvm

要注意的是

1. which 跟 type 輸出的格式不太一樣,type 的輸出結果因為多了 blah is … ,所以還需要經過處理把前面那段拿掉才有辦法餵給 dpkg ,而 which 因為是直接出出路徑所以沒有這問題

2. 這邊如果輸入的不是完整路徑,則可能會出現一堆其他不相關的東西,例如:
$ dpkg -S 'whoami'
bash-completion: /usr/share/bash-completion/completions/ldapwhoami
coreutils: /usr/share/man/man1/whoami.1.gz
coreutils: /usr/bin/whoami

因為 dpkg 會直接把所有完整路徑裏面符合輸入字串的部份都印出來,所以像是 whoami 的 manpage 以及 bash-completion 的自動補齊指令都被列出來了。

好了,這篇筆記雖然短,可我覺得很實用,哪天失憶或是被問問題的時候就可以把這篇丟出來,這就是做筆記最大的用途 … :D

在 Windows 10 上面跑的 Ubuntu / bash …

上個月(2016/03)底,今年微軟 Build 大會最讓人震驚的消息,沒有之一,透過微軟跟 Canonical (開發 Ubuntu 的公司) 的合作,未來可以在 Windows 10 上面跑原生的 Ubuntu / bash,不是跑在虛擬機或使用模擬器、容器等技術,是原生的!有了這個重大的改變,或許未來都不需要使用到 cygwinmsysGnuWin 這種專案了?一時沒空把所有資訊都看完,先來整理一些筆記 …

這項更新目前已經有測試版可以玩了,正式的版本預計在今年夏天的 Windows 10 年度更新釋出,之後就會在 Windows 10 上面有一個完整的 Ubuntu user space 子細統,不但 Linux 上常見的 utilities 如 grep, sed, awk 等工具未來都可以直接跑在 Windows 10 上,甚至 Debian / Ubuntu 在使用的套件管理系統 apt 也都可以直接使用,不論是對於使用者或是開發者都提供了更大的彈性以及便利性,同時代表未來 Windows 對 Linux 或其他原先只能跑在 unix-like OS 的專案會更加的友善。

微軟現在甚至使用 GitHub 來當 BashOnWindows 的 issue tracker:

https://github.com/Microsoft/BashOnWindows/issues

Microsoft-BashOnWindows-issues-on-GitHub.png

然後也有一個在 uservoice 上面的討論、反應平台:

https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/category/161892-bash

我從底下會提到的 Linux Command Line on Windows 影片,截了一些畫面出來:

可以看到 lsb_release -a 看到的是 Ubuntu 14.04.4 LTS:

screenshot-from-Linux Command Line on Windows-video-ll-lsb_release-a.png

示範一些常見的工具,例如 fdisk 、mount,還有貼上文字的功能:

screenshot-from-Linux Command Line on Windows-video-fdisk-and-mount-and-paste.png

透過 apt install gcc 來安裝 gcc:

screenshot-from-Linux Command Line on Windows-video-demo-apt-install-gcc.png

繼續閱讀

LAMP Web Server 網頁伺服器快速建置入門

前言 …

LAMP 為 Linux + Apache + MySQL + PHP 這種網站伺服器組合的簡稱,分別代表著

  1. 作業系統
  2. http 伺服器
  3. 資料庫
  4. 網頁後端語言

LAMP 可說是目前非常廣泛被使用的網站建置環境組合,另外也有將其中組合抽換為其它相同功能但不同產品的組合,例如把 Linux 改為 FreeBSD 或 Windows 的 FAMP、WAMP,把 Apache 改為 NGINX 的 LNMP 等,其中的 Linux distribution (分支) 又以 Debian / Ubuntu 最為熱門,本篇不例外是使用 Ubuntu / Debian 作為示範,但基本上基於 Debian 以及 Ubuntu 的 GNU/Linux distributions 都適用。

根據 W3Techs 的統計,Linux 在 web server 的作業系統市佔率高達 36.2% ( Unix 佔總共的 68%、Linux 佔其中的 53.2% ),其中 Debian / Ubuntu 就分別佔了 Linux 的 32.6% / 31.1%:

w3techs-usage-of-operatingSystems-unix-Mar-1-2016

Aapache 的 Web Server 領域更是有著 55% 過半的驚人市佔率:

w3techs-usage-of-WebServers-Mar-1-2016

資料請參考 W3Techs :

說到寫這篇的原因,主要是前陣子因為 推坑 推薦 不少人來使用 WordPress 撰寫部落格、筆記,WordPress 目前已經擁有高達 26% 的網頁市佔率,平均每四個網站就有一個是使用 WordPress 架設,可想而知 WordPress 不管是在社群、生態系方便都已經相當成熟,考量到自行架設 WordPress 會比直接使用 WordPress.com 現成的服務來的更有彈性、功能更加強大,同時又可以學技術,但對於初學者對於遇到問題的恐懼一直是最大的阻礙,故撰寫這份 LAMP 簡易安裝筆記供入門者參考,對於其他同樣使用 PHP 語言的網站平台基本上都適用。

繼續閱讀

Roseapple Pi (RaPi) 台灣蓮霧派初體驗

自從 Raspberry Pi (樹莓派) 在 2012 年初推出至今,市面上的小型單板電腦(one board computer) 可說是如雨後春筍般冒出,例如 CubieboardGalileoUDOOBanana Pi 、Orange Pi 等,尤其是各種 “水果派",畢竟 Raspberry Pi 的共同創辦人 Eben Upton 都說歡迎山寨廠抄襲、複製了(Raspberry Pi 創辦人在台專訪:歡迎山寨廠商來競爭、複製),而這次要來玩的 Roseapple Pi 也是其中一款向 Raspberry Pi 致敬的產品!

其實早在 Raspberry Pi 之前就已經有如 PandaBoard、 ODROIDBeagleBoard 等開發板,Raspberry Pi 最讓人震憾的還是他的價格,當時的 model A / B 分別只要美金 25$ / 35$ ,換算下來約台幣一千元就可以有一台不含週邊設備、硬碟的電腦主機,這對於偏遠地區的資訊教育來說是有著顯著的門檻降低功用 (當然還是需要師資以及其他設備啦),當時看到樹莓派二話不說就立刻跟授權廠商之一的 RS Components 下訂單了,還記得那時候主機本體、外殼是分兩次從英國原廠寄出,讓我有點吃驚(畢竟沒多少錢的東西),雖然等了一小段時間,但想想是從英國搭飛機來的,也就還說的過去。

我玩樹莓派的主要用途是學習 Unix 系統以及影音播放(放客廳再方便不過了、還可以透過網路存取影片),主要看上的就是這類開發板省電、低費熱、零噪音、體積小,但樹梅派有個小缺點,就是運算效能不高,可能各位手上的手機可能速度就比樹莓派來的快的多,樹梅派最初使用的是 Broadcom BCM2835 單核心的 SoC ,後續的 B+ model 雖然在規格上有所調整,但效能上並沒有進步,這大概是當時後愈來愈多號稱效能超越樹莓派的開發板不斷冒出來的原因之一,一直到 2015 年推出的 Raspberry Pi 2 才改採用 ARMv7 架構、四核心處理器的 BCM2836,同時也把記憶體容量,算是有相當程度的提升(官方宣稱是6倍),雖然晚了點,但有總比沒有好,只是有時候看影片還是沒辦法很順暢,所以我才希望找看看有沒有其他替代產品,不但能播放影片、還能讓我練習一些 Linux 管理、開發相關的平台,於是就找到蓮霧派了!

身為致敬產品,蓮霧派的 CPU / RAM / USB 規格算是比較吸引我的地方,官方公佈的規格可以看這邊:
http://roseapplepi.org/index.php/spec/

規格還不錯,不過沒有內建 Wifi / Bluetooth,網路卡也只有到 100 Mbits

比較吸引我的幾個規格:
RAM: 2GB DDR3 (2GB 比我手機還大了)
USB port: USB 3.0*1 (Type A) + USB 2.0*2 (Type A)
External Buttons: On/Off,(Sleep/wake)/Reset (內建自己的開關/按鍵)
Operation Systems: Debian, Ubuntu, Fedora, Android 5.0/5.1 (可以跑 Andoird 5.1 !!!)

很可惜在處理器部份並沒有詳細的資料可以參考,沒看錯的話 Roseapple Pi 採用的是 Actions Semi (炬力) 的 S500 整合晶片,S500 這款 Soc 在官網上並沒有自己的 Spec 或是 Product page,只能從 ActDuino S500 這款開發板上的介紹略知一二,簡單挑重點來講,這款 Soc 為 28nm 製程 、包含了 Cortex-A9R4 中央處理器、NEON SIMD 協同處理器、PowerVR SGX544 繪圖晶片,能夠支援到 4K 或是 1080p@60fps 的高品質影片播放,同時支援了 USB 3.0, HDMI 1.4b,等等的規格,不過因為不是本篇重點,其餘就不贅述了。

先從外觀開始看,開箱就省了吧,直接看開完箱的照片:

USB / 網路孔正面照,在這個 USB 3.0 還沒全面普及的時刻,能在這種單板電腦上看到,真是莫名的感動!

170008

拍的有點暗,懶得重拍了,加減看,從左至右分別是 power button, HDMI, 3.5mm audio, CSI 相機接頭,UART debug pin

165946

最左邊 4 個 pin 是麥克風跟紅外線使用的,右邊兩排共 40 個 pin 是 GPIO

165955

繼續閱讀

Step by step, install Ubuntu 14.04 Server on VirtualBox 虛擬機安裝紀錄

先前分享過 FreeBSD 在虛擬機上的安裝:

https://www.peterdavehello.org/2016/01/freebsd-10-2-on-virtualbox-vm-notes/

這次換寫 Ubuntu Server 的安裝,Ubuntu Server (伺服器版) 和 Ubuntu Desktop (桌面版) 的主要差異其實只有兩點:

  1. 預設安裝的套件不同
  2. 操作介面不同

就像 Ubuntu 、 KubuntuLubuntuXubuntu 、 Ubuntu Gnome 都是 Ubuntu GNU/Linux ,使用相同的 Ubuntu apt repository,但預設使用不同的設訂、安裝了不同的桌面環境,但骨子裡都是一樣的系統,Ubuntu Server / Desktop 的關係也是這樣,少了圖形化介面以後 Server 可以省下更多的資源來提供服務,在大多數情況下也可以省下不少的硬碟空間來儲存更多的資料,身邊有些朋友因為害怕純文字介面的操作而使用桌面版的系統來架設伺服器,讓不必要的圖行化介面佔用系統資源,是有點可惜了,這篇以 VirtualBox 虛擬機環境紀錄 Ubuntu Server 14.04 的安裝,給新手做為安裝時的參考

如果想要把已經安裝好的 Ubuntu Desktop 轉換為 Ubuntu Server、在不同桌面環境間的版本轉換,可以參考這篇:

https://www.peterdavehello.org/2015/09/convert-your-ubuntudebian-between-different-versions-like-desktop-to-server/

先說 Ubuntu 安裝程式的下載, 關方有提供一個 mirror 鏡像站列表,直接從台灣的伺服器下載速度會比較快:
https://launchpad.net/ubuntu/+cdmirrors

往下拉到 “Taiwan" 的地方,可以看到台灣目前有九個已向官方登記的站台,任意挑選其中一個站台的 http 連結進入即可。ubuntu taiwan cd mirrors

這邊以元智大學的FTP站台為例 (http://ftp.yzu.edu.tw/Linux/ubuntu-releases/),點進去後會看到這樣的畫面(每個站台應該是大同小異):ubuntu download homepage

在剛剛的畫面點選 “Ubuntu 14.04.3 LTS (Trusty Tahr)" 或 “14.04″ 或 “14.04.3″ 以下載我們要的版本 14.04 ,14.04 後面的 .3 是在 14.04 正式發布後的後續更新版本,基本上屬於同一個版本,而不像 14.04 和 15.10 就是截然不同的兩個版本

Ubuntu 的版本號前面兩個數字代表西元年、後面代表月份,Ubuntu 每半年會發行一個新版本,也就是每年的4月及10月,所以我們才會看到 14.04, 14.10 這種版本號ubuntu download 14.04.3
繼續閱讀