30、如何强制安装 packages?
由於有些 packages 会有与其他 packages 相依性的关系,所以必须先行安装那些 packages 才能正常安装。 如果须要强制安装 packages ,可以不须安装那些有相依性 packages ,但要注意的是强制安装的结果可能会导致执行或运作的不正常。强制安装 packages 的指令如下,如强制安装一个 joe 的 tgz:
代码:
pkg_add -f joe-{version}.tgz
31、如何查询 packages 与其他 packages 之间的相依性?
由於有些 packages 会有与其他 packages 相依性的关系,所以必须先行安装那些 packages 才能正常安装。 查询 packages 与其他 packages 之间的相依性的指令如下,如查询与 portupgrade 相依的其他 packages:
代码:
pkg_info -r portupgrade-{version}.tgz
32、如何远端安装 packages?
有两种设定方式,首先是 PACKAGEROOT,如:
setenv PACKAGEROOT ftp://ftp.cn.freebsd.org/ #设定 PACKAGEROOT 为 站台
另一种方式是设定 PACKAGESITE,好处是若该站台的 packages 仓储并不是符合
官方的设定或你想自己指定一个路径。
以 i386 的 current pakcages 为例:
setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-current/Latest/
两种方式选择其中一种皆可,接下来的步骤都一样。
往後要安装 packages 的时候,如 portupgrade 的话,则:
代码:
pkg_add -r portupgrade
则系统会自动於 抓取所有与 portupgrade 相依的 packages 并安装。
33、如何更新 INDEX 对照表?
4.x 的 INDEX 位於 /usr/ports/INDEX,5.x 位於 /usr/ports/INDEX-5。
INDEX 是对照 ports 所有相依等资讯的对照表,若长期未更新的话,会导致 ports 对照失败。官方有定期更新 INDEX,如果想自行更新的话,则:
代码:
cd /usr/ports/
make index
34、如何更新 INDEX HTML?
FreeBSD 提供了用网页的方式来观看 ports collection,即可使用 lynx, w3m,links 或其它可浏览网页的程式来查阅。制作全部 ports collection 的方式如
下:
代码:
cd /usr/ports/
make readmes
如果是仅须要做目前目录下的资讯,或单一更新某一分类下的资讯,如 /usr/ports/ftp/ 的话,则:
代码:
cd /usr/ports/ftp/
make readme
则仅会更新 /usr/ports/ftp/ 这个目录的资讯,其上与其下的目录皆不会更动到。 执行成功後,会在相对应的目录下产生 README.html 的档案。
35、如何针对某些 ports 不做 CVSup?
若 ports 底下的某些分类完全用不到,则可以在 CVSup 时,不做更新,以节省网路频宽与时间。
代码:
# vi /usr/sup/refuse
******************************************
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/japanese
那麽则上述目录下的档案皆不会更新。
如果是想要某些单一的 ports 不做同步,例如想保留旧版不做同步,或新版出现问题时。
代码:
# vi /usr/sup/refuse
******************************************
ports/lang/perl5.8
那麽 ports/lang/perl5.8 这个 ports 不会做 CVSup 同步。
这些设定方法支援万用字元。
代码:
# vi /usr/sup/refuse
******************************************
ports/lang/perl*
ports/po*
36、如何使用 CVSup 同步 ports collections?
请叁考 gslin 的 用 CVSup 去更新你的 source tree 以及 ports tree。
37、安装 ports 出现 port is outdated 的错误讯息
例如安装 imap-uw 时,出现以下内容:
Your installation of the cclient port is outdated. Please delete it before continuing.
表示因为相对应,且已安装好的 cclient 这个软体过於老旧,建议先升级这个软体再行安装 imap-uw。因此只要先升级 cclient 後,再安装即可。
代码:
# cd /usr/ports/mail/cclient/
# make reinstall 或 # make deinstall && make install
# cd /usr/ports/mail/imap-uw/
# make install
38、安装 ports 出现 OpenSSL vulnerabilities 的错误讯息
在安装有些套件时,如果有相依於 OpenSSL 时,且判断系统目前使用的 OpenSSL 版本有漏洞问题时,会出现如下的讯息:
Dependency warning: used OpenSSL version contains known
vulnerabilities Please update or define either WITH_OPENSSL_BASE or
WITH_OPENSSL_PORT
一般建议的解决方法有二种。
第一种:升级系统(需含系统内建之 OpenSSL 一并升级),再安装该套件可以先查询目前系统所用之 OpenSSL 的版本:
代码:
openssl version -v
升级系统可叁考 FNP: upgrade core system 或 FNP: upgrade major system。
升级完系统後,再进行一次 OpenSSL 版本之确认。
然後再安装该套件,这讯息就不会出现了。
第二种:使该套件相依於 ports tree 中的 OpenSSL
这种方法会安装 ports tree 中新版本的 OpenSSL,然後相依於此新版本的OpenSSL,而不是系统本身内建的 OpenSSL。只要安装套件时,加入 WITH_OPENSSL_PORT 的叁数,即会安装 ports tree 中的 OpenSSL,并且该套件
也会相依於此。方法如下:
代码:
make -DWITH_OPENSSL_PORT install
这里不建议用叁数 WITH_OPENSSL_BASE,因为这表示安装套件时,是相依於原本系统中可能有漏洞的 OpenSSL,这样会导致安全性的问题。