CentOS Linux 5.10 Release

在信箱的更新通知了,發現可以更新的套件有到 51 個檔案

更新了一下,發現已經升級到 5.10 版了!
之前的 CentOS 4.x 最多都只到 CentOS 4.9 版
# cat /etc/redhat-release
CentOS release 5.10 (Final)[@more@]CentOS Linux 5.10 版下載
i386
頭城國小
ftp://140.111.74.109/CentOS/5.10/isos/i386/
中山大學
http://ftp.nsysu.edu.tw/CentOS/5.10/isos/i386/

x86_64
頭城國小
ftp://140.111.74.109/CentOS/5.10/isos/x86_64/
中山大學
http://ftp.nsysu.edu.tw/CentOS/5.10/isos/x86_64/

使用架設完成的 Scientific Linux 6 Mirror 站台當成更新來源

底下是設定步驟:
1. 先備份原設定檔
    # mv /etc/yum.repos.d/sl.repo /etc/yum.repos.d/sl.repo.`date +%F`
2. 下載已經修改好的設定檔
     以 Scientific Linux 6.x 為例
     # wget ftp://140.111.74.109/Linux/sl.repo.6
     # mv sl.repo.6 /etc/yum.repos.d/sl.repo
3. 去除舊的 yum cache
    # yum clean all
4. 開始進行更新
    # yum update

列出取不到 IP 的網路卡卡號

針對一些不容易查到網路卡卡號的設備
# cat /var/log/messages | grep “no free leases” | awk ‘{OFS=”,”}{print $1,$2,$8,$10,$12}’ | sort | uniq
Oct,15,00:0c:29:67:73:72,eth0:,140.111.74.0/24:
Oct,15,00:11:93:88:7a:00,eth0:,140.111.74.0/24:
Oct,15,00:14:2a:3e:c7:5e,eth2:,192.168.250.0/24:
Oct,15,00:14:2a:3e:d1:00,eth2:,192.168.250.0/24:
Oct,15,00:26:51:0d:53:40,eth0:,140.111.74.0/24:
Oct,15,00:26:5a:be:5a:88,eth1:,192.168.249.0/24:
Oct,15,14:7d:c5:9f:68:b1,eth2:,192.168.250.0/24:
Oct,15,18:34:51:c0:40:14,eth2:,192.168.250.0/24:
Oct,15,6c:62:6d:63:8f:80,eth0:,140.111.74.0/24:

[@more@]或
# awk ‘{OFS=”,”}/no free leases/{print $1,$2,$8,$10,$12}’ /var/log/messages | sort | uniq
Oct,15,00:0c:29:67:73:72,eth0:,140.111.74.0/24:
Oct,15,00:11:93:88:7a:00,eth0:,140.111.74.0/24:
Oct,15,00:14:2a:3e:c7:5e,eth2:,192.168.250.0/24:
Oct,15,00:14:2a:3e:d1:00,eth2:,192.168.250.0/24:
Oct,15,00:26:51:0d:53:40,eth0:,140.111.74.0/24:
Oct,15,00:26:5a:be:5a:88,eth1:,192.168.249.0/24:
Oct,15,14:7d:c5:9f:68:b1,eth2:,192.168.250.0/24:
Oct,15,18:34:51:c0:40:14,eth2:,192.168.250.0/24:
Oct,15,6c:62:6d:63:8f:80,eth0:,140.111.74.0/24:

離線安裝 Windows Live

現在很多軟體在安裝時,都是直接從網路上下載下來安裝,所以安裝檔都非常小,這樣的好處就是可以讓使用者在安裝時,都是目前的最新版本,但有時候在安裝軟體時,電腦沒有連上網路,這時候安裝就會出現問題。
以 Windows Live 為例,安裝時會依照要安裝的軟體,再到網路上下載下來安裝
[@more@]個人很不喜歡這樣的安裝方式,比較喜歡離線安裝,就像是 Windows 平台的修正檔,也比較習慣離線安裝,所以在網路上搜尋了一下,終於在微軟的官網上,找到解決的方法。
下載網址:
http://wl.dlservice.microsoft.com/download/7/0/0/700CB50E-C1CB-4550-B513-A6B8A184D98D/zh-tw/wlsetup-all.exe

網路安裝和離線安裝的檔案大小比較

離線安裝畫面

semanage 指令找不到

semanage 是一個在 Linux 中設定 SELinux 權限的工具,但預設似乎不會安裝,所以要用的時候找不到。

找不到這一個程式
# which semanage
/usr/bin/which: no semanage in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

系統中沒有安裝
# rpm -qa | grep semanage
libsemanage-2.0.43-4.2.el6.x86_64

yum search 也找不到
# yum search semanage
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Warning: No matches found for: semanage
No Matches found
[@more@]查詢哪一個套件有提供這一個程式
# yum provides /usr/sbin/semanage
Loaded plugins: downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.twaren.net
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
policycoreutils-python-2.0.83-19.30.el6.x86_64 : SELinux policy core python utilities
Repo        : base
Matched from:
Filename    : /usr/sbin/semanage

終於找到了,是 policycoreutils-python 這一個套件
進行安裝
# yum install policycoreutils-python

wget 指令

最近想要把原本 Mirror 在別台的 Scientific Linux 複製到新的 CentOS Mirror 主機,但一直無法成功,使用了 lftp / ncftp 來下載,似乎不支援下載整個目錄,使用 mirrordir 也會遇到 ISO 檔案不能超過 2G 的問題,看來似乎只能使用 rsync 的方式來處理,因為單單一個 Scientific 6 就高達 36x G,重新再 Mirror 一次真是有些累。
後來想到可以使用 wget 的指令來解決這樣的問題,wget 的用法及參數非常繁多,可以先查看一下。[@more@]# wget –help
GNU Wget 1.12,非互動式檔案下載工具。
用法: wget [選項]… [URL]…

長選項必須用的參數在使用短選項時也是必須的。

啟動:
  -V,  –version           顯示 Wget 版本並離開
  -h,  –help              印出這段說明文字
  -b,  –background        啟動後進入背景作業
  -e,  –execute=指令      執行 ‘.wgetrc’ 形式的指令

紀錄訊息及輸入檔案:
  -o,  –output-file=檔案    將紀錄訊息寫入<檔案>中
  -a,  –append-output=檔案  將紀錄訊息加入<檔案>末端
  -d,  –debug               印出偵錯訊息
  -q,  –quiet               安靜模式 (不輸出訊息)
  -v,  –verbose             詳細輸出模式 (預設使用這個模式)
  -nv, –non-verbose         關閉詳細輸出模式,但不啟用安靜模式
  -i,  –input-file=FILE     download URLs found in local or external FILE.
  -F,  –force-html          以 HTML 方式處理輸入檔
  -B,  –base=URL            resolves HTML input-file links (-i -F)
                             relative to URL.

下載:
  -t,  –tries=次數              設定重試次數 (0 表示無限)
       –retry-connrefused       即使連線被拒仍然會不斷嘗試
  -O   –output-document=檔案    將資料寫入指定檔案中
  -nc, –no-clobber              不覆寫已經存在的檔案
  -c,  –continue                繼續下載已下載了一部份的檔案
       –progress=方式           選擇下載進度的表示方式
  -N,  –timestamping           除非遠端檔案比較新,否則不下載遠端檔案
  -S,  –server-response         顯示伺服器回應訊息
       –spider                  不下載任何資料
  -T,  –timeout=秒數            指定所有時限為同一數值
       –dns-timeout=秒數        指定 DNS 查找主機的時限
       –connect-timeout=秒數    指定連線時限
       –read-timeout=秒數       指定讀取資料的時限
  -w,  –wait=秒數               每次下載檔案之前等待指定秒數
       –waitretry=秒數          每次重覆嘗試前稍等一段時間 (由 1 秒至指
                                 定秒數不等)
       –random-wait             每次下載之前隨機地指定等待的時間
       –no-proxy                禁止使用代理伺服器
  -Q,  –quota=大小              設定下載資料的限額大小
       –bind-address=位址       使用本機的指定位址 (主機名稱或 IP) 進行連線
       –limit-rate=速率         限制下載速率
       –no-dns-cache            不記憶 DNS 查找主機的資料
       –restrict-file-names=OS  只使用作業系統能夠接受的字元作為檔案字元
       –ignore-case             ignore case when matching files/directories.
  -4,  –inet4-only              只會連接 IPv4 地址
  -6,  –inet6-only              只會連接 IPv6 地址
       –prefer-family=FAMILY    優先採用指定的位址格式,可以是 IPv6、IPv4
                                 或者 none
       –user=用戶               指定 ftp 和 http 用戶名稱
       –password=PASS           指定 ftp 和 http 密碼
       –ask-password            prompt for passwords.
       –no-iri                  turn off IRI support.
       –local-encoding=ENC      use ENC as the local encoding for IRIs.
       –remote-encoding=ENC     use ENC as the default remote encoding.
目錄:
  -nd  –no-directories           不建立目錄
  -x,  –force-directories        強制建立目錄
  -nH, –no-host-directories      不建立含有遠端主機名稱的目錄
       –protocol-directories     在目錄中加上通訊協定名稱
  -P,  –directory-prefix=名稱    儲存檔案前先建立指定名稱的目錄
       –cut-dirs=數目            忽略遠端目錄中指定<數目>的目錄層
HTTP 選項:
       –http-user=用戶        指定 HTTP 用戶名稱
       –http-passwd=密碼      指定 HTTP 密碼
       –no-cache              不使用伺服器中的快取記憶資料
       –default-page=NAME     Change the default page name (normally
                               this is `index.html’.).
  -E,  –adjust-extension      save HTML/CSS documents with proper extensions.
       –ignore-length         忽略 ‘Content-Length’ 標頭欄位
       –header=字串           在連線資料標頭中加入指定字串
       –max-redirect          maximum redirections allowed per page.
       –proxy-user=用戶       設定代理伺服器用戶名稱
       –proxy-password=密碼   設定代理伺服器密碼
       –referer=URL           在 HTTP 請求中包括 ‘Referer: URL’ 標頭
       –save-headers          將 HTTP 連線資料標頭存檔
  -U,  –user-agent=AGENT      宣稱為 AGENT 而不是 Wget/VERSION
       –no-http-keep-alive    不使用 HTTP keep-alive (持久性連線)
       –no-cookies            不使用 cookie
       –load-cookies=檔案     程式啟動時由指定檔案載入 cookie
       –save-cookies=檔案     程式結束後將 cookie 儲存至指定檔案
       –keep-session-cookies  會載入和儲存暫時性的 cookie
       –post-data=字串        使用 POST 方式送出字串
       –post-file=檔案        使用 POST 方式送出檔案內容
       –content-disposition   honor the Content-Disposition header when
                               choosing local file names (EXPERIMENTAL).
       –auth-no-challenge     send Basic HTTP authentication information
                               without first waiting for the server’s
                               challenge.

HTTPS (SSL/TLS) 選項:
       –secure-protocol=PR     選擇安全通訊協定,可以使用 auto, SSLv2,
                                SSLv3 或 TLSv1
       –no-check-certificate   不檢驗伺服器的憑證
       –certificate=檔案       指定用戶端的憑證檔案名稱
       –certificate-type=類型  用戶端憑證的類型,可以是 PEM 或 DER
       –private-key=檔案       指定私鑰檔案
       –private-key-type=類型  私鑰的類型,可以是 PEM 或 DER
       –ca-certificate=檔案    載有憑證管理中心 (CA) 簽章的檔案
       –ca-directory=目錄      載有憑證管理中心 (CA) 簽章的目錄
       –random-file=檔案       作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔案
       –egd-file=檔案          產生隨機數據的 EGD socket 檔案名稱

FTP 選項:
       –ftp-user=用戶         指定 FTP 用戶名稱
       –ftp-password=密碼     設定 FTP 密碼
       –no-remove-listing     不刪除 ‘.listing’ 檔案
       –no-glob               不展開有萬用字元的 FTP 檔名
       –no-passive-ftp        不使用「被動」傳輸模式
       –retr-symlinks         在遞迴模式中,下載鏈結指示的目標檔案
                               (不包括目錄)

遞迴下載:
  -r,  –recursive          遞迴下載
  -l,  –level=數字         最大搜尋深度 (inf 或 0 表示無限)
       –delete-after       刪除下載後的檔案
  -k,  –convert-links      make links in downloaded HTML or CSS point to
                            local files.
  -K,  –backup-converted   將檔案 X 轉換前先備份為 X.orig
  -m,  –mirror             相等於 -N -r -l inf –no-remove-listing 選項
  -p,  –page-requisites    下載所有顯示網頁所需的檔案,例如圖片等
       –strict-comments    用嚴格方式 (SGML) 處理 HTML 注釋。

遞迴下載時有關接受/拒絕的選項:
  -A,  –accept=清單               接受的檔案樣式,以逗號分隔
  -R,  –reject=清單               排除的檔案樣式,以逗號分隔
  -D,  –domains=清單              接受的網域,以逗號分隔
       –exclude-domains=清單      排除的網域,以逗號分隔
       –follow-ftp                跟隨 HTML 文件中的 FTP 鏈結
       –follow-tags=清單          會跟隨的 HTML 標籤,以逗號分隔
  -G,  –ignore-tags=清單          會忽略的 HTML 標籤,以逗號分隔
  -H,  –span-hosts                遞迴模式中可進入其它主機
  -L,  –relative                  只跟隨相對鏈結
  -I,  –include-directories=清單  準備下載的目錄
  -X,  –exclude-directories=清單  準備排除的目錄
  -np, –no-parent                 不進入上層的目錄

請將錯誤報告或建議寄給 <bug-wget@gnu.org>。

列紅色的部分是個人比較可能常用的參數。

# wget -m ftp://140.111.74.3/pub/Linux/scientific

我覺得 Linux 很吸引人的地方就是一個小小的指令,就可以解決困擾多時的問題,其實 Windows 平台也有 wget 可以使用,不過要另外安裝。

解決 duplicate rpm 的問題

有一台 CentOS 6.x 的 Server,在一次更新中途失敗後,每次要更新時就出現如下的訊息:
selinux-policy-3.7.19-195.el6_4.12.noarch is a duplicate with selinux-policy-3.7.19-155.el6_3.14.noarch
setup-2.8.14-20.el6.noarch is a duplicate with setup-2.8.14-16.el6.noarch
sos-2.2-38.el6.centos.2.noarch is a duplicate with sos-2.2-29.el6.noarch
sssd-1.9.2-82.7.el6_4.x86_64 has installed conflicts selinux-policy < (‘0’, ‘3.7.19’, ‘160’): selinux-policy-3.7.19-155.el6_3.14.noarch
sssd-1.9.2-82.7.el6_4.x86_64 is a duplicate with sssd-1.8.0-32.el6.x86_64
sssd-client-1.9.2-82.7.el6_4.x86_64 is a duplicate with sssd-client-1.8.0-32.el6.x86_64
2:tar-1.23-11.el6.x86_64 is a duplicate with 2:tar-1.23-7.el6.x86_64
tzdata-2013c-2.el6.noarch is a duplicate with tzdata-2012j-1.el6.noarch
udev-147-2.46.el6.x86_64 is a duplicate with udev-147-2.42.el6.x86_64
upstart-0.6.5-12.el6_4.1.x86_64 is a duplicate with upstart-0.6.5-12.el6.x86_64
util-linux-ng-2.17.2-12.9.el6_4.3.x86_64 is a duplicate with util-linux-ng-2.17.2-12.7.el6_3.x86_64

看起來像是系統中,重複安裝了二個相同檔名的套件
# rpm -qa | grep samba
samba-common-3.5.10-125.el6.x86_64
samba-3.5.10-125.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba4-libs-4.0.0-55.el6.rc4.x86_64
samba-winbind-clients-3.5.10-125.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-client-3.5.10-125.el6.x86_64
看起來似乎有 2xx 多個重覆的檔案,難道要一一刪除嗎?[@more@]在網路上搜尋了一下,終於找到解決的方案 – AWS 機器上 duplicated RPM 問題 | 小惡魔 – 電腦技術 – 工作筆記 – AppleBOY

解決方式:
1. 安裝 yum-utils 套件
# yum install yum-utils
2. 移除相同的多餘套件
# package-cleanup –cleandupes

Transaction Summary
================================================================================
Remove      229 Package(s)

Installed size: 611 M
Is this ok [y/N]:y

共有 229 個重覆的套件檔,如果要一一刪除,就會累死人了!

後記:
不過,建議在做相關移除的動作時,應先好備份的工作,因為我發現移除之後,它把我的 SSH / MySQL / SNMP Server 等等,全部都移除了,我又手動一一安裝回去,才讓 Server 可以正常運作。

CentOS 6.x 第三方套件庫

RPMForge
http://pkgs.repoforge.org/
http://packages.sw.be/
i386 – http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
x86_64 – http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

安裝方式:
下載 rpmforge-release 套件
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

安裝 DAG 的 GPG 金鑰
# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt

安裝套件
# rpm -ivh rpmforge-release-0.5.3-1.el6.rf.*.rpm
# sed -i ‘s/enabled = 1/enabled = 0/g’ /etc/yum.repos.d/rpmforge.repo
[@more@]

EPEL 全名叫做 Extra Packages for Enterprise Linux,有許多可以安裝的套件
http://fedoraproject.org/wiki/EPEL

CentOS 6.x
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# sed -i ‘s/enabled=1/enabled=0/g’ /etc/yum.repos.d/epel.repo

Remi:http://rpms.famillecollet.com/
Remi

CentOS 6.x
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh remi-release-6.rpm