提供經由port或是packages來升級/安裝新的軟體[取自於OHaHa's學習心得]
由於FreeBSD並沒有像Debian,有apt server可以做upgrade的整體軟體升級
所以if您跟zgod一樣是先以freebsd早期4.8、4.9版本安裝後,再自行更新source升級系統的話
這樣可能在很多套件的安裝時,版本相依的問題就會產生
此時就非常需要…portupgrade這套軟體了
[FreeBSD4]安裝
#cd /usr/ports/sysutils/portupgrade #make install #make clean |
[FreeBSD5/6]安裝
#cd /usr/ports/ports-mgmt/portupgrade #make install #make clean |
裝完記得重新login哦!
在使用上非常簡單
#portupgrade 欲升級的軟體名稱
ps:都記得先做完port tree更新哦!
例如:我想在安裝svn時說我有一個叫libtool的軟體太舊了,所以我就對libtool做upgrade的動作
#portupgrade libtool
Making install in tests install-info --quiet /usr/local/info/libtool.info /usr/local/info/dir ===> Registering installation for libtool-1.5.22_2 ===> Cleaning for libtool-1.5.22_2 ---> Cleaning out obsolete shared libraries [Updating the pkgdb in /var/db/pkg ... - 22 packages found (-0 +1) . done] ** Package 'libtool' has been removed from ports tree. ** Port directory not found: devel/libtool ** Listing the failed packages (*:skipped / !:failed) ! (libtool-1.3.4_4) (port directory error) ---> Packages processed: 1 done、0 ignored、0 skipped and 1 failed # |
它會自行尋找新的版本並比較,然後自行安裝
完成就會出現這類的訊息。
用pkg_info來查看:
#pkg_info | grep libtool
libtool-1.3.4_4 Generic shared library support script
libtool-1.5.22_2 Generic shared library support script
1.3.4是舊版的1.5.22是新的
。。接下來你可以用。。
# pkgdb -F
自動整理軟體之間的相依性,將不用的舊的版本移除
pkgdb -F 來掃瞄已裝的 ports 資料庫
portupgrade -ai 升級系統上所有已裝的過舊 ports。 -i 則在過程當中,會要求確認相關動作是否符合所需。
# portsclean -CD
可以自動清除之前用port安裝過的暫存檔
# portsclean -f
在 ports 裡, 進到要重新設定的目錄,用 make config 修改後, portupgrade -f 強制自我升級
太常忘記了 快[筆記]
http://www.freebsd.org/doc/zh_TW/books/handbook/ports-using.html
port make config portupgarde 升級、安裝、更新 用法
以下再po上,之前在網路上找到的一些整理常用指令
出處
安裝軟體 Gentoo: emerge Debian: apt-get install FreeBSD: portinstall 移除軟體 Gentoo: emerge unmerge Debian: apt-get remove FreeBSD: pkg_deinstall 升級單一軟體 Gentoo: emerge -u <package> Debian: apt-get install <package> FreeBSD: portupgrade <package> 察看升級全系統會動到哪些套件: Gentoo: emerge -puDv world Debian: apt-get -u dist-upgrade FreeBSD: portupgrade -arnv 升級全系統 Gentoo: emerge -u --deep world Debian: apt-get dist-upgrade FreeBSD: make world ; portupgrade -ar 查詢系統裝了哪些軟體 Gentoo: emerge -pe world 或 qpkg -I -v Debian: dpkg --get-selections FreeBSD: pkg_info 查詢某檔案屬於哪個軟體 Gentoo: qpkg -f (need gentoolkit) Debian: dpkg -S FreeBSD: pkg_info -W 查詢某個套件安裝了什麼檔案 Gentoo: qpkg -l <package> Debian: dpkg -L <package> FreeBSD: pkg_info -L <package> 查詢有沒有裝這個關鍵字的套件 Gentoo: qpkg -I | grep (qpkg再加上 -v 看版本號碼) Debian: dpkg -qa | grep FreeBSD: pkg_info | grep 找哪些 pkg "簡介" 裡含有你要找的關鍵字: Gentoo: emerge -S <關鍵字> 輸出方式和前者一樣, 關鍵字都可以用正規表示式 Debian: apt-cache search FreeBSD: make search key= 不管相依性強制移除某套件 Gentoo: emerge -C FreeBSD: pkg_delete -f 全系統重新編譯 Gentoo: emerge -e world FreeBSD: make world ; portupgrade -arf ======== 補充: qpkg -f ps: emerge gentoolkit first. -- gentoo : 查詢某個套件安裝了什麼檔案: qpkg -l 查詢有沒有裝這個關鍵字的套件: qpkg -I (再加上 -v 看版本號碼) 不管相依性強制移除某套件: emerge -C 仔細看一下 man emerge 要找一個 pkg 的 "名稱": emerge -s <關鍵字> 輸出會有這個 pkg 的簡介 找哪些 pkg "簡介" 裡含有你要找的關鍵字: emerge -S <關鍵字> 輸出方式和前者一樣 更厲害的是上面的關鍵字都可以用正規表示式!! -- emerge -f (fetchonly) 好處在於當你emerge 兩個package以上的時候,可以先把source給抓回來,不過需要再emerge emerge -p (pretend) 看要裝些什麼東西, 小弟認為這兩個指令對撥接使用者很重要,尤其 -f .一來可以大略知道下載時間,二來可以隨時中斷,然後在續傳(感謝偉大的wget) -- |