2015年5月11日 星期一

ARM rootfs 語系設定

rootfs 太陽春, 解壓縮包時, 常常有一些語系相關的警告出現. 今天來看看如何設定.

打 locale 看到 LANGUAGE & LC_ALL 沒有定義, 另外有 3 個警告
debian@arm:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
debian@arm:~$

打 locale -a 可看到目前已經安裝語系.
debian@arm:~$ locale -a
C
C.UTF-8
POSIX

sudo nano /etc/default/locale
改 LANG=C.UTF-8
加 LANGUAGE=C.UTF-8
LC_ALL=C

若是要增加語系, 則用
locale-gen en_US.UTF-8
dpkg-reconfigure locales





ARM rootfs 減肥

檢查各目錄使用容量

du -hx --max-depth=1 /
du –sh /var/cache/apt/archives
du –sh /var/lib/apt/lists

清除記錄
apt-get clean
apt-get autoremove --purge

/usr/share/doc 及 /usr/share/man 的文件, 在 embedded 系統中沒有甚麼大用, 只是佔空間 40幾MB, 就看看如何把它們刪掉

建立 /etc/dpkg/dpkg.cfg.d/01_nodoc
加入如下內容, dpkg 在抓套件時, 就不會抓 doc
path-exclude /usr/share/doc/*
# we need to keep copyright files for legal reasons
path-include /usr/share/doc/*/copyright
path-exclude /usr/share/man/*
path-exclude /usr/share/groff/*
path-exclude /usr/share/info/*
# lintian stuff is small, but really unnecessary
path-exclude /usr/share/lintian/*
path-exclude /usr/share/linda/*
然後執行刪除既有 doc
find /usr/share/doc -depth -type f ! -name copyright|xargs rm || true
find /usr/share/doc -empty|xargs rmdir || true
rm -rf /usr/share/man/* /usr/share/groff/* /usr/share/info/*
rm -rf /usr/share/lintian/* /usr/share/linda/* /var/cache/man/*

在 /usr/share/locale 也有一堆用不到的語系資料, 可以用 localepurge 來移除

apt-get install localepurge


增加 /etc/locale.nopurge, 假設只留英語

####################################################
# This is the configuration file for localepurge(8).
####################################################

####################################################
# Uncommenting this string enables removal of localized
# man pages based on the configuration information for
# locale files defined below:

MANDELETE

####################################################
# Uncommenting this string causes localepurge to simply delete
# locales which have newly appeared on the system without
# bothering you about it:

DONTBOTHERNEWLOCALE

####################################################
# Uncommenting this string enables display of freed disk
# space if localepurge has purged any superfluous data:

SHOWFREEDSPACE

#####################################################
# Commenting out this string enables faster but less
# accurate calculation of freed disk space:

#QUICKNDIRTYCALC

#####################################################
# Commenting out this string disables verbose output:

#VERBOSE

#####################################################
# Following locales won't be deleted from this system
# after package installations done with apt-get(8):

en
en_US
en_US.ISO-8859-15
en_US.UTF-8


sudo localepurge
localepurge 會刪除不要的語系, 以後安裝新套件, localepurge 會被啟動, 將不要的刪除, 這樣會讓系統變慢. 最好是用完, 將 localpurge remove. 需要再重裝

如果不需要 X-windows, 相關套件也可以刪去

apt-get remove libx11-6 libx11-data

另外 /var 也有些肥胖, 如果不再安裝套件, 可以刪去內容物, 但是路徑要留下來
sudo find /var/cache/apt/ -type f -exec rm -v {} \;
sudo find /var/lib/apt/lists -type f -exec rm -v {} \;














ubuntu 使用 mini-httpd 當 web server

這個是不小心找到的, 原作者就是開發 thttpd , 當初的目的, 只是想知道用古老的 fork 有多慢, 作者實測認為有 apache 90% 的效能, 而 mini-httpd 有 GET, POST, HEAD method, 有密碼保護, 有CGI, 當作一個 embedded web server 跑一些簡易網頁應該是夠用了.

可到此一看究竟 http://acme.com/software/mini_httpd/

更奇怪的是 ubuntu 已經拋棄 thttpd, 但是 mini-httpd 還在它的套件庫裏面.


1. 下載 mini-httpd
sudo apt-get install mini-httpd
mini-httpd 被安裝到 /usr/sbin

同時會下載 apache2-utils, 會用到的應該就是 htpasswd, 其實在 mini-httpd source code 也有 htpasswd.c  若是由 source code rebuild, 應該不用下載 apache2-utils

2. 修改設定
sudo nano /etc/default/mini-httpd
找到 START=0, 改成 START=1

sudo nano /etc/mini-httpd.conf
找到 user, 將其改為 user=www-data
找到 data_dir, 將其改為 data_dir=/var/www

3. 啟動/暫停 mini-httpd
sudo /etc/init.d/mini-httpd start
sudo /etc/init.d/mini-httpd stop

4. log file 在 /var/log/mini-httpd.log

2015年5月10日 星期日

build CIVETWEB under Linux


mongoose 以前是 MIT 授權 (2013), 後來改成 GPL or 商業授權.
它標榜的是單一 source code, less memory footprint , 適合 embedded 使用.

現在有人拿 MIT 授權時代的 mongoose 來發展, 依然維持 MIT 授權
可在此找到 source code
https://github.com/bel2125/civetweb

因為需要 libssl.so & libcrypto.so
sudo apt-get install libssl-dev

http://sourceforge.net/projects/civetweb/files/1.6/
取得 civetweb.tar.gz 

make help
make build
make install
執行檔在 /usr/local/bin/civetweb
設定檔在  /usr/local/etc/civetweb.conf








ubuntu 14.04.2 安裝 thttpd

1. 安裝
用 sudo apt-get install thttpd  已經找不到 package

user@user-ubuntu140402:~$ sudo apt-get install thttpd
[sudo] password for user:
Reading package lists... Done
Building dependency tree    
Reading state information... Done
Package thttpd is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'thttpd' has no installation candidate

還好本家 debian 還是有這個 package

https://packages.debian.org/squeeze/thttpd
http://ftp.tw.debian.org/debian/pool/main/t/thttpd/

下載 deb, 用 software center 自動安裝

2. 修改設定
sudo cp /etc/defualt/thttpd /etc/defualt/thttpd.backup
sudo nano /etc/defualt/thttpd
find and change ENABLED=no to ENABLED=yes

3. 啟動/停止 thttpd
sudo /etc/init.d/thttpd start
sudo /etc/init.d/thttpd stop

4. 使用事項
a. 預設使用 /var/www 當網頁根目錄, 相關 html, 圖檔等資料存放位置
b. 設定檔 /etc/thttpd/thttpd.conf 可開啟或關掉 thttpd 某項功能






追蹤者