丛思源 發表於 2008-9-8 18:48:44

FreeBSD软件安装卸载工具--Ports和Packages详解

<p>1、如何只抓取 tarball? <br />
2、如何仅做到解开 tarball的步骤? <br />
3、如何仅做到解开 tarball 并补上官方提供的 patch? <br />
4、如何<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 port? <br />
5、如何<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 port,并将打包(package)起来? <br />
6、如何打包一个 port,并将其所有相依的 ports 也打包起来? <br />
7、如何对一个已经<a target="_blank" href="#" class="UBBWordLink">安装</a>的 port 打包? <br />
8、如何清理 ports 编辑期间所产生的暂存资料? <br />
9、如何清理 ports 编辑期间所产生的暂存资料,以及其相对应的 tarball? <br />
10、如何在<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 前查询所需依赖/相关的套件? <br />
11、如何移除已<a target="_blank" href="#" class="UBBWordLink">安装</a>的 ports? <br />
12、如何一并移除所相依的 ports? <br />
13、如何重新<a target="_blank" href="#" class="UBBWordLink">安装</a>已<a target="_blank" href="#" class="UBBWordLink">安装</a>过的 ports? <br />
14、如何以关键字搜寻 ports? <br />
15、如何升级已<a target="_blank" href="#" class="UBBWordLink">安装</a>的 ports? <br />
16、如何查询目前<a target="_blank" href="#" class="UBBWordLink">系统</a><a target="_blank" href="#" class="UBBWordLink">安装</a>了哪些套件? <br />
17、如何查询目前<a target="_blank" href="#" class="UBBWordLink">系统</a>有没有<a target="_blank" href="#" class="UBBWordLink">安装</a>这个关键字的套件? <br />
18、如何查询某个档案是属於哪些套件? <br />
19、如何查询某个套件<a target="_blank" href="#" class="UBBWordLink">安装</a>了哪些档案? <br />
20、如何<a target="_blank" href="#" class="UBBWordLink">安装</a>旧版的 ports? <br />
21、如何更新 ports Mk? <br />
22、如何<a target="_blank" href="#" class="UBBWordLink">解决</a><a target="_blank" href="#" class="UBBWordLink">安装</a> ports 时出现 sed -i 的错误? <br />
23、如何列出所有可以升级的 ports? <br />
24、如何得知 ports system 对某个 ports 所提供的编译叁数? <br />
25、如何手动加入编译 ports 的叁数? <br />
26、如何指定 ports 的<a target="_blank" href="#" class="UBBWordLink">安装</a>路径? <br />
27、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 出现 FORCE_PKG_REGISTER 的错误讯息 <br />
28、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 出现 Shared object libintl.so.X not found 的错误讯息 <br />
29、如何<a target="_blank" href="#" class="UBBWordLink">安装</a> packages? <br />
30、如何强制<a target="_blank" href="#" class="UBBWordLink">安装</a> packages? <br />
31、如何查询 packages 与其他 packages 之间的相依性? <br />
32、如何远端<a target="_blank" href="#" class="UBBWordLink">安装</a> packages? <br />
33、如何更新 INDEX 对照表? <br />
34、如何更新 INDEX HTML? <br />
35、如何针对某些 ports 不做 CVSup? <br />
36、如何使用 CVSup 同步 ports collections? <br />
37、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 出现 port is outdated 的错误讯息 <br />
39、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 出现 OpenSSL vulnerabilities 的错误讯息 <br />
40、如何在 FreeBSD 上模拟 Linux 的环境? <br />
41、如何在 FreeBSD 上<a target="_blank" href="#" class="UBBWordLink">安装</a> Linux rpm? <br />
42、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 时,原本应该出现的清单选项不见了 <br />
43、如何检查是否有<a target="_blank" href="#" class="UBBWordLink">安装</a>重覆的 ports/packages? `make deinstall' 与 `pkg_delete' 有什麽不同? <br />
44、<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 出现 local modification time does not match remote 的 <br />
错误讯息 <br />
<br />
<br />
<span style="font-weight: bold">1、如何只抓取 tarball?</span>
                <br />
<br />
如果只希望抓取 tarball 下来的话,仅需下 make fetch 即可。 <br />
如果是要抓取单一的 port,以 editors/joe 为例的话,则: <br />
<br />
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make fetch</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
预设会将 joe 的 tarball 下载至 /usr/ports/distfiles/ 目录下。 <br />
如果是希望抓取<a target="_blank" href="#" class="UBBWordLink">安装</a>此 ports 所有须要的其他 ports 的 tarball,以 <br />
<br />
systuils/portupgrade 为例的话,则: <br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/systuils/portupgrade/ <br />
            make fetch-recursive</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
预设会将此 ports 的 tarball 与所有须要的其他 ports 的 tarball,下载至 /usr/ports/distfiles/ 目录下。 <br />
<br />
如果是希望抓取全部所有 ports 的 tarball ,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ <br />
            make fetch</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
则会所将全部所有 ports 的 tarball 下载至 /usr/ports/distfiles/ 目录下。 <br />
如果是希望抓取全部 ftp 下所有 ports 的 tarball ,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ftp/ <br />
            make fetch</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
则会所将全部 ftp 下所有 ports 的 tarball 下载至 /usr/ports/distfiles/ <br />
目录下。 <br />
<br />
<span style="font-weight: bold">2、如何仅做到解开 tarball的步骤?</span>
                        <br />
<br />
有时候习惯自己 patch/修正 原始码的时候,很常用到这个功能。 <br />
以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make extract</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
会将 tarball解开至 /usr/ports/editors/joe/work/ 目录下。 <br />
<br />
<br />
<span style="font-weight: bold">3、如何仅做到解开 tarball 并补上官方提供的 patch?</span>
                        <br />
<br />
此<a target="_blank" href="#" class="UBBWordLink">方法</a>与 2 有一些类似,不同於是先补上官方提供的 patch ,再行 patch 自己 <br />
的修正。以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make patch</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
会将 tarball解开至 /usr/ports/editors/joe/work/ 目录下,并已经 patch 上 <br />
官方提供的 patch。 <br />
<br />
<span style="font-weight: bold">4、如何<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 port?</span>
                        <br />
<br />
如果<a target="_blank" href="#" class="UBBWordLink">系统</a>上未<a target="_blank" href="#" class="UBBWordLink">安装</a>此软体,则可以选择<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 port。 <br />
以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make install</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如此会在<a target="_blank" href="#" class="UBBWordLink">系统</a>上<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 joe 软体。如果需要在<a target="_blank" href="#" class="UBBWordLink">安装</a>完成後,一并清除编辑 <br />
时期所留下来的暂存目录,则可叁考 FAQ 8 的<a target="_blank" href="#" class="UBBWordLink">方法</a>,一起使用,如: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            #make clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如果想要一次清掉所有 ports 产生的暂存资料,则只要回到 ports 的根目录执 <br />
行即可: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ <br />
            #make clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
<span style="font-weight: bold">5、如何<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 port,并将打包(package)起来?</span>
                        <br />
<br />
将<a target="_blank" href="#" class="UBBWordLink">安装</a>完成的软体打包起来,有许多便利性:包括在丛集<a target="_blank" href="#" class="UBBWordLink">系统</a>中,可供其它机器 <br />
使用,或将未来此软体出问题可重新利用此 package 重新快速<a target="_blank" href="#" class="UBBWordLink">安装</a>。 <br />
以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            #make package</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如此会在<a target="_blank" href="#" class="UBBWordLink">系统</a>上<a target="_blank" href="#" class="UBBWordLink">安装</a>一个新的 joe 软体,并将此软体打包(package)起来。 <br />
<br />
package 预设会在 /usr/ports/editors/joe/ 目录下,如果希望集中管理的话, <br />
建议做如下的步骤: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>mkdir -p /usr/ports/packages/All/</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
以後打包的 packages 都会存放在此目录下,并且<a target="_blank" href="#" class="UBBWordLink">系统</a>会自动做分类,以方便管 <br />
理。如果需要在<a target="_blank" href="#" class="UBBWordLink">安装</a>完成後,一并清除编辑 时期所留下来的暂存目录,则可叁 <br />
考 FAQ 8 的<a target="_blank" href="#" class="UBBWordLink">方法</a>,一起使用,如: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make package clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
<br />
<span style="font-weight: bold">6、如何打包一个 port,并将其所有相依的 ports 也打包起来?</span>
                        <br />
<br />
因为 FAQ 5 只有对最终的 port 才进行打包,中间依赖的 ports 并没有一起打 <br />
包,这会出现一个常遇到 的问题,就是如果编辑一个 port 需要依赖其它的 <br />
ports,那麽必须将其它 ports 也一起打包,否则<a target="_blank" href="#" class="UBBWordLink">安装</a> packages 会有相 依赖其 <br />
它 ports 的 packages 的问题。 <br />
以 sysutils/portupgrade 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/sysutils/portupgrade/ <br />
            make DEPENDS_TARGET=package package</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如此会在对所有 portupgrade 所相依赖的 ports 一并打包,也包括自己本身。 <br />
<br />
<span style="font-weight: bold">7、如何对一个已经<a target="_blank" href="#" class="UBBWordLink">安装</a>的 port 打包?</span>
                        <br />
<br />
如果<a target="_blank" href="#" class="UBBWordLink">安装</a>好一个套软,事前并未打包,事後想打包的话,则: <br />
以 editors/joe 为例的话 <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /var/db/pkg/ <br />
            pkg_create -b joe-{版本号}</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
会将已<a target="_blank" href="#" class="UBBWordLink">安装</a>的 port 打包起来,放在 /var/db/pkg/ 目录下。 <br />
<br />
<span style="font-weight: bold">8、如何清理 ports 编辑期间所产生的暂存资料?</span>
                        <br />
<br />
在编辑 port 的时候,会有编辑期间所需要的工作目录(work),因此通常<a target="_blank" href="#" class="UBBWordLink">安装</a>好 <br />
一个套件後,会清除此暂存目录,以节省系 统磁碟空间。 <br />
以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如果是希望清除所有 ports 的暂存目录,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ <br />
            make clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如果是希望清除全部 ftp 下所有的暂存目录,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ftp/ <br />
            make clean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
<br />
<span style="font-weight: bold">9、如何清理 ports 编辑期间所产生的暂存资料,以及其相对应的 tarball? <br />
</span><br />
<br />
在 FAQ 8 中,仅只是清除编辑期间所需要的工作目录(work),并没有将编译 <br />
ports 时一并下载的 tarball 删除(相对应之 tarball 预设会存放 <br />
在 /usr/ports/distfiles/),如果欲把 tarball 一并删除, <br />
以 editors/joe 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make distclean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
make distclean 的步骤包含了 make clean 的功能,也就是说除了会删除 <br />
tarball 外,还会一并M除编辑期间所需要的工作目录。 <br />
<br />
如果是希望清除所有 ports 的暂存目录,及 tarball ,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ <br />
            make distclean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
如果是希望清除全部 ftp 下所有的暂存目录,及 tarball,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/ftp/ <br />
            make distclean</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
<br />
<span style="font-weight: bold">10、如何在<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 前查询所需依赖/相关的套件?</span>
                        <br />
<br />
在<a target="_blank" href="#" class="UBBWordLink">安装</a> ports 前,可以查询所需依赖/相关的套件。 <br />
以 mail/p5-Mail-SpamAssassin 为例的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/mail/p5-Mail-SpamAssassin/ <br />
            make all-depends-list #显示所有相关的套件 <br />
            make pretty-print-build-depends-list #显示编译期间所需要的套件 <br />
            make pretty-print-run-depends-list #显示此套件要执行时所需要的套件</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
<br />
<span style="font-weight: bold">11、如何移除已<a target="_blank" href="#" class="UBBWordLink">安装</a>的 ports?</span>
                        <br />
<br />
以 editors/joe 为例的话,则: <br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /usr/ports/editors/joe/ <br />
            make deinstall</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
或是使用 pkg_delete <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /var/db/pkg/ <br />
            pkg_delete joe-{version}</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
有时候套件之间的相依性会导致无法直接移除,如果要强制移除的话,则: <br />
<br />
</span>
<table cellspacing="1" cellpadding="3" width="90%" align="center" border="0">
    <tbody>
      <tr>
            <td><span><b>代码:</b></span></td>
      </tr>
      <tr>
            <td>cd /var/db/pkg/ <br />
            pkg_delete -f joe-{version}</td>
      </tr>
    </tbody>
</table>
<span><br />
<br />
但很有可能会导致其它的套件执行起来出现问题。 <br />
<br />
至於二者的差别,请叁考FAQ 43 <br />
<br />
</span></p>
                                             
                       
                                                <div class="cupage"><a href='#'>上一页</a><strong>1</strong><a href='https://www.jb51.net/os/Unix/1489_2.html'>2</a> <a href='https://www.jb51.net/os/Unix/1489_3.html'>3</a> <a href='https://www.jb51.net/os/Unix/1489_2.html'>下一页</a> <a href='https://www.jb51.net/os/Unix/1489_all.html'>阅读全文</a></div>
頁: [1]
查看完整版本: FreeBSD软件安装卸载工具--Ports和Packages详解