2010年9月23日星期四

使用舊版本的Arch Linux軟件包

在Arch Linux上更新軟件很方法,只需使用root權限輸入pacman -S package-name就可以把該軟件更新到最新的版本。又或將整個Arch Linux更新,只需輸入pacman -Syu就可以直接把整個Arch Linux連軟件更新到最新的版本了。因為Arch Linux的更新是無縫的,安裝Arch Linux後只需一直使用pacman -Syu就可以一直把Arch Linux保持最新的狀態。而不像Debian、Ubuntu等等每有新版本的發行就要把系統重灌,即使不重灌更新也有許些軟件要在升級後要自行更新或替換其他軟件。

但當使用pacman -Syu後,有某些軟件出現問題或不穩定,呢該怎麼回到舊版本呢?

基本上,更新時,系統也會下載舊版本的軟件包。我們只需查看/var/cache/pacman/pkg裡找上一個版本的軟件包就可以了。

以openssh為例,
ls /var/cache/pacman/pkg | grep "openssh"
找到了一堆過去的軟件包
$ ls /var/cache/pacman/pkg | grep "openssh"
openssh-5.3p1-3-x86_64.pkg.tar.gz
openssh-5.4p1-3-x86_64.pkg.tar.xz
openssh-5.4p1-4-x86_64.pkg.tar.xz
openssh-5.5p1-1-x86_64.pkg.tar.xz
openssh-5.6p1-1-x86_64.pkg.tar.xz

上一個版本是openssh-5.5p1-1-x86_64.pkg.tar.xz,那我們就安裝這個。
cd /var/cache/pacman/pkg
pacman -U openssh-5.5p1-1-x86_64.pkg.tar.xz

系統會以現在安裝這個軟件包去覆蓋現在的新版本。

2010年9月18日星期六

在Arch Linux安裝未被包括在核心軟件庫的程式

Arch Linux的軟件庫不是甚麼程式也會打包進去,一般軟件要進入軟件庫的程序是先要被加到AUR(Arch User Repository 社區用戶軟件庫)。在AUR內經投票或反對後,得到足夠票數的就會被放進軟件庫(community repository),之後就可以經pacman或ads來安裝。

要安裝一個在AUR找到個軟件可跟以下程序:

先到AUR搜尋想要的軟件 http://aur.archlinux.org/index.php?setlang=zh_CN



在該AUR軟件包頁面找連結下載壓縮包(Tarball)



下載後將他解壓
tar -xzvf pidgin-hotkeys.tar.gz
然後到該目錄下察看PKDBUILD和pidgin-hotkeys.install這兩個檔,目的是檢查裡面有否隱有不正當的script,因為AUR是整個社群也可以上載的,不加思索地安裝會有風險。

若沒甚麼異樣的話,可以執行指令裝作軟件包。
makepkg -s
那個-s是指,當這個軟件對其他軟件或涵式庫(library)有相依時,以sudo去主動找相關的軟件安裝。

安成後應該在出現一個以.pkg.tar.xz結尾的軟件包。執行pacman指令就可以安裝他。
pacman -U pidgin-hotkeys-0.2.4-1-x86_64.pkg.tar.xz
安裝完成

2010年9月7日星期二

Arch Linux接駁Google G1跑ADB (Android Debug Bridge)模式

Android系統若果開啟了USB Debug模式的話,可以經USB接駁電腦控制。在Arch Linux上搞了好久才知道怎樣連接我的G1使用ADB。以下是簡略的步驟,


首先,安裝Android SDK。這個可以使用yourt安裝AUR。

加上UDev rule,

su轉為root
vi /etc/udev/rules.d/51-android.rules

在文件裡加上:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

"0bb4"是給HTC的vendor ID,其他牌子ID可以這裡找: http://developer.android.com/guide/developing/device.html#VendorIds

儲存後,執行chmod令其他使用者也有權限可以使用。

chmod a+r /etc/udev/rules.d/51-android.rules


重新載入UDev的rule。

udevadm control restart

udevadm control --reload-rules

關掉正在執行中的adb

adb kill-server

在Android裡設定好使用USB Debug模式,Settings -> Applications -> Development -> USB Debug打勾。


接上Android到電腦後,查看Android有否被掛到Arch Linux上。

adb devices

若果看到自己的Android就可以連接了。用adb shell指令進入。

2010年9月5日星期日

停止MySQL server,及外間接入問題

mysqld無法停止?

有些系統在安裝mysqld時會創建一個mysql的user,並會在/etc/init.d/mysql start(這是Debian或Ubuntu的init daemon方式)時使用mysql這個user來啟動mysqld。所以使用/etc/init.d/mysql stop或restart會失敗([fail])。(有些系統會是/etc/rc.d/mysql restart)
所以我們要檢查mysqld是以哪個user來起動的,使用指令

ps ax | grep mysql

可以看到mysql是以 --user=mysql 來啟動的。那我們就用mysqladmin來關閉mysqld,指令

mysqladmin -u root -p shutdown

輸入密碼後就能關掉mysqld,上面的root用戶是mysqld裡面的root用戶,不是*nix系統的root用戶,請別搞錯。



mysql無法遠端連接?

若果防火牆沒有封檔,iptables也沒有把mysql的port擋掉的話(iptables -L查看),那就看看mysql的設定檔。

使用root修改mysql的設定檔

sudo vi /etc/mysql/my.cnf #非Debian或Ubuntu請先su後再把sudo這個指令拿掉

找bind-address這一行。如果他前面沒有#的話,請看看他是否設定為127.0.0.1或者localhost。要是這樣的話,可以再加一行bind-address設定,使用外界連接用的IP。像我的機器,

bind-address = 127.0.0.1
bind-address = 202.195.207.133 #外界接入的IP


重啟mysqld,外面應該能接入了。