FreeBSD的軟體管理工具ports詳解

來源:互聯網
上載者:User

一、ports套件的安裝
①安裝ports

我的FreeBSD8.0-release是迷你安裝,所以沒有ports,即也沒用/usr/ports目錄;選擇啟用ports的話,那麼需要在root下輸入"sysinstall"來安裝它:
輸入sysinstall --> 選擇Configure --> Distributions --> ports,然後安裝即可。
②ports路徑
ports的預設路徑是/usr/ports,這個ports的根目錄,下面有很多的檔案夾及子檔案夾,組成一個樹狀目錄,包含大量ports下的軟體:
這些即是套件的軟體分類和名稱,比如mail代表郵件服務軟體;games則是一些遊戲;www裡面是一些web服務軟體;databases則是資料庫軟體[root@bsd01 /

usr/ports]# cd www[root@bsd01 /usr/ports/www]# ls -d apache*apache-contrib apache13 apache13-modssl+ipv6apache-forrest apache13+ipv6 apache13-sslapache-jserv apache13-modperl apache20apache-mode.el apache13-modssl apache22

如果你需要安裝什麼軟體,只要進入目前的目錄,然後“make install clean”即可。

[root@bsd01 ~]# cd /usr/ports/www/apache22[root@bsd01 /usr/ports/www/apache22] make install clean

而/usr/ports/distfiles是存放軟體包的檔案夾,ports就會先檢查/usr/ports/distfiles目錄內有沒有這個軟體包,如果沒有它就會自動從網上下載安裝。
③源地址
ports從網上下載軟體包自動安裝,那麼從那裡下載呢?這就需要一個源地址管理,跟ubuntu上的/etc/source.list檔案一樣,freebsd用的檔案是/etc/make.conf,我們來編輯這個檔案,加入下列幾行,國內比較塊的源:

[root@bsd01 ~]# vi /etc/make.confMASTER_SITE_OVERRIDE?= \http://ports.hshh.org/${DIST_SUBDIR}/ \http://ports.cn.freebsd.org/${DIST_SUBDIR}/ \ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\

有新的伺服器加入就直接往後面加就可以了,格式就是“源地址+/${DIST_SUBDIR}/ \”。但是不要同時存在2個“MASTER_SITE_OVERRIDE?”,否則第二個就不起效了。

 

二、ports管理軟體常用命令
①安裝軟體
下面以安裝rpm為例:
[root@bsd01 ~]# cd /usr/ports/archivers/rpm
[root@bsd01 /usr/ports/archivers/rpm]# make install clean
如果想清除www內所有的暫存檔案,就cd到/usr/ports/www內。如果想清除所有的暫存檔案,就cd到/usr/ports根目錄:
[root@bsd01 ~]# cd /usr/ports
[root@bsd01 /usr/ports]# make clean
cmake clean只是清除暫存檔案,並不是清除distfiles裡面的軟體包。什麼是暫存檔案?其實主要是編譯過程產生的一些臨時檔案,其實也是軟體目錄內的work檔案夾,而執行make clean會把當前軟體目錄內的work檔案夾刪除。
如果想刪除distfile連檔案夾內軟體包怎麼做呢?
[root@bsd01 ~]# cd /usr/ports/www/apache22
[root@bsd01 /usr/ports/www/apache22]# make distclean
而make distclean不但會清除軟體包,而且包含了make clean命令。這樣就會清除apache22的軟體包,以及apache22目錄內的work檔案夾。
同理,如果像清除所有www內的軟體包及暫存檔案,就cd到/usr/ports/www;如果像清除所有的包及暫存檔案,就cd到ports根目錄。
②卸載軟體
卸載軟體用make deinstall:
[root@bsd01 ~]# cd /usr/ports/www/apache22
[root@bsd01 /usr/ports/www/apache22]# make deinstall
③查詢可用ports安裝的軟體
我一直想,freebsd的ports直接在系統內佔用資源空間組成樹目錄是好還是不好呢?如果要是從能查詢這一點講就比apt-get好一些了,以前用 apt-get安裝軟體的時候,要是遇到一些稍微不規範一點的軟體,就很難知道名字了,經常要用Regex來測試軟體名是什麼。
而現在在freebsd裡面可以直接在ports樹目錄內查詢可用的軟體了。
[root@bsd01 ~]# cd /usr/ports
[root@bsd01 /usr/ports]# make search key=apache
不過這種會找出很多,看的眼花,但是我們注意到有一個細節,就是Port和Path2個關鍵字,一個代表名字,一個代表路徑,我們就可以改善+過濾:
[root@bsd01 /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.
Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.
Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
現在還可以進一步來增強查詢,就是在擷取一個空行,這樣讓查詢結果更直觀一點,Linux的管道真是好東西,可以自己發揮一下:
[root@bsd01 ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:|^$"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.

Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.

Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
④查詢已安裝的軟體
怎麼像Linux中用“rpm -qa | grep samba”來查詢某個軟體是否安裝了呢(這裡以samba為例),ports用“pkg_info”:
[root@bsd01 ~]# pkg_info | grep samba
samba-3.0.32_1,1 A free SMB and CIFS client and server for UNIX
samba-libsmbclient-3.0.28 Shared libs from the samba package
[root@bsd01 ~]# pkg_info | grep nfs

 

三、使用cvsup來更新ports樹目錄
既然ports的樹目錄全部下載到本地,那麼freeBSD有新的軟體包了或者添置了新的軟體,本地分類樹就不會更新。所以我們在一段時間需要更新本地分類樹。不過如果你是“ports-all”的話,要很長時間哦,大約需要1個小時,甚至更長。
所以,下面我們來介紹一種在freebsd中更加方便、快捷的更新ports的方法。在FreeBSD8.0中,我也推薦直接用以下方法進行更新。

 

四、使用portsnap來更新ports分類樹
portsnap是freebsd6以後才有的,他是以壓縮包的形式,先把最新的壓縮包形式的ports快照下載到/var/db/portsnap檔案夾,然後再更新到/usr/ports中。
freebsd6以後的系統,portsnap是不需要手工安裝的,已經預設直接在系統中了,所以可以直接使用portsnap命令來更新ports分類樹。
當然ports中也有這個軟體包:
[root@bsd01 /var/db]# cd /usr/ports
[root@bsd01 /usr/ports]# make search key=^portsnap
Port: portsnap-1.1
Path: /usr/ports/ports-mgmt/portsnap
Info: Provides secure snapshots of the ports directory
Maint: cperciva@daemonology.net
B-deps:
R-deps: bsdiff-4.3
WWW: http://www.daemonology.net/portsnap/
①配置portsnap:
我們使用portsnap,首先要設定一下它的設定檔,位於/etc/portsnap.conf:
[root@bsd01 /usr/ports]# vi /etc/portsnap.conf
把SERVERNAME=portsnap.freebsd.org
修改成:
SERVERNAME=portsnap.hshh.org
這個是他的補救伺服器,另外還有幾個國內比較塊的portsnap伺服器:
portsnap.hshh.org
portsnap2.hshh.org
portsnap3.hshh.org (網通)
portsnap4.hshh.org
②首次使用portsnap:
在你的freebsd首次使用portsnap必須執行下面2步:
[root@bsd01 ~]# portsnap fetch
[root@bsd01 ~]# portsnap extract
#這2步可以合成使用:
[root@bsd01 ~]# portsnap fetch extract
#portsnap fecth是從網上擷取portsnap快照的最新壓縮包,聽聞這個壓縮包官方沒小時更新一次。
#portsnap extract 則是把這個壓縮包創立到/usr/ports。哪怕你以前已經手工安裝了ports,他也會重新創立一次。
③以後使用portsnap更新ports:
以後更新,只需要執行下面2步:
[root@bsd01 ~]# portsnap fetch
[root@bsd01 ~]# portsnap update
這2步可以合成使用:
[root@bsd01 ~]# portsnap fetch update
portsnap第一次運行extract命令時,可能需要一段時間,以後更新使用update的時候,速度就塊很多了。

下面以用ports安裝nginx0.7.65為例詳細說明下,安裝步驟如下:
更新ports
portsnap fetch extract
#第一次生級用上述命令,以後生級用命令portsnap fetch update
安裝axel提高ports的安裝速度
cd /usr/ports/ftp/axel
make install
修改ports源地址,以提高ports的安裝速度
#修改 /et/make.conf
vi /etc/make.conf
#加入以下內容
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
MASTER_SITE_OVERRIDE?=\
http://ports.hshh.org/${DIST_SUBDIR}/\
http://ports.cn.freebsd.org/${DIST_SUBDIR}/\
ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}

 

五:執行個體:安裝Nginx

安裝 pcre8.00
pcre 是Nginx所需的Perl相容Regex庫
cd /usr/ports/devel/pcre
make install
安裝 Nginx0.7.65
cd /usr/ports/www/nginx
make install
#配置編譯參數
[ ] DEBUG                     Enable nginx debugging
[ ] IPV6                      Enable IPv6
[ ] GOOGLE_PERFTOOLS          Enable google perftools module
[X] HTTP_MODULE               Enable HTTP module
[ ] HTTP_ADDITION_MODULE      Enable http_addition module
[X] HTTP_CACHE_MODULE         Enable http_cache module
[ ] HTTP_DAV_MODULE           Enable http_webdav module
[ ] HTTP_FLV_MODULE           Enable http_flv module
[X] HTTP_GZIP_STATIC_MODULE   Enable http_gzip_static module
[ ] HTTP_IMAGE_FILTER_MODULE Enable http_image_filter module
[ ] HTTP_PERL_MODULE          Enable http_perl module
[ ] HTTP_RANDOM_INDEX_MODULE Enable http_random_index module
[ ] HTTP_REALIP_MODULE        Enable http_realip module
[X] HTTP_REWRITE_MODULE       Enable http_rewrite module
[ ] HTTP_SECURE_LINK_MODULE   Enable http_secure_link module
[ ] HTTP_SSL_MODULE           Enable http_ssl module
[X] HTTP_STATUS_MODULE        Enable http_stub_status module
[ ] HTTP_SUB_MODULE           Enable http_sub module
[ ] HTTP_XSLT_MODULE          Enable http_xslt module
[ ] MAIL_MODULE               Enable IMAP4/POP3/SMTP proxy module
[ ] MAIL_IMAP_MODULE          Enable IMAP4 proxy module
[ ] MAIL_POP3_MODULE          Enable POP3 proxy module
[ ] MAIL_SMTP_MODULE          Enable SMTP proxy module
[ ] MAIL_SSL_MODULE           Enable mail_ssl module
[ ] WWW                       Enable html sample files
[ ] HTTP_ACCESSKEY_MODULE     3rd party http_accesskey module
[ ] HTTP_EVAL_MODULE          3rd party eval module
[ ] HTTP_FANCYINDEX_MODULE    3rd party http_fancyindex module
[ ] HTTP_MOGILEFS_MODULE      3rd party mogilefs module
[ ] HTTP_MP4_H264_MODULE      3rd party mp4/h264 module
[ ] HTTP_NOTICE_MODULE        3rd party notice module
[ ] HTTP_REDIS_MODULE         3rd party http_redis module
[ ] HTTP_RESPONSE_MODULE      3rd party http_response module
[ ] HTTP_UPLOAD_MODULE        3rd party upload module
[ ] HTTP_UPLOAD_PROGRESS      3rd party upload_progress module
[ ] HTTP_UPSTREAM_FAIR        3rd party upstream fair module
[ ] HTTP_UPSTREAM_KEEPALIVE   3rd party upstream keepalive module
[ ] HTTP_ZIP_MODULE           3rd party http_zip module
[ ] PASSENGER_MODULE          3rd party passenger module
啟動nginx
/usr/local/sbin/nginx
查看連接埠號碼及使用進程等
lsof -i:80
mail# lsof -i:80
COMMAND PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
nginx   2799 root    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)
nginx   2800 www    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.