<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 1.概述 RPM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux 分發版(distribution)的常見的軟件包管理器。 ## 2.環境準備 ``` // RPM打包使用的是rpmbuild,這個包必裝 yum install rpm-build yum install rpmdevtools // rpmdev-setuptree 命令可以自動生成編譯打包的工作空間rpmbuild,手動創建也可 //根據軟件的不同,選擇安裝其他編譯打包等工具 ``` ## 3.原理 **目錄結構說明** <table> <thead> <tr> <th>默認位置</th> <th>宏代碼</th> <th>名稱</th> <th>用途</th> </tr> </thead> <tbody> <tr> <td>~/rpmbuild/SPECS</td> <td>%_specdir</td> <td>Spec 文件目錄</td> <td>保存 RPM 包配置(.spec)文件</td> </tr> <tr> <td>~/rpmbuild/SOURCES</td> <td>%_sourcedir</td> <td>源代碼目錄</td> <td>保存源碼包(如 .tar 包)和所有 patch 補丁</td> </tr> <tr> <td>~/rpmbuild/BUILD</td> <td>%_builddir</td> <td>構建目錄</td> <td>源碼包被解壓至此,并在該目錄的子目錄完成編譯</td> </tr> <tr> <td>~/rpmbuild/BUILDROOT</td> <td>%_buildrootdir</td> <td>最終安裝目錄</td> <td>保存 %install 階段安裝的文件</td> </tr> <tr> <td>~/rpmbuild/RPMS</td> <td>%_rpmdir</td> <td>標準 RPM 包目錄</td> <td>生成/保存二進制 RPM 包</td> </tr> <tr> <td>~/rpmbuild/SRPMS</td> <td>%_srcrpmdir</td> <td>源代碼 RPM 包目錄</td> <td>生成/保存源碼 RPM 包(SRPM)</td> </tr> </tbody> </table> <br> SPECS目錄下是RPM包的配置文件,該文件會告訴`rpmbuild`命令如何打包。`宏代碼`在該文件中代指對應的目錄。 <br> <br> **打包過程說明** * 首先,需要把源碼放到`%\_sourcedir`中; * 然后進行編譯,編譯是在`%\_builddir`中完成的,需要將源碼復制到該目錄下。 * 把軟件包應該包含的內容(比如二進制文件、配置文件、man文檔等)復制到`%_buildrootdir`中,并按照實際安裝后的目錄結構組裝,比如二進制命令可能會放在`/usr/bin`下,那么就在`%_buildrootdir`下也按照同樣的目錄結構放置; * 需要配置一些必要的工作,比如在實際安裝前的準備啦,安裝后的清理啦,以及在卸載前后要做的工作啦等等,這樣也都是通過配置在SPEC文件中來告訴`rpmbuild`命令; * 還有一步可選操作,那就是檢查軟件是否正常運行; * 最后,生成的RPM包放置到`%_rpmdir`,源碼包放置到`%_srpmdir`下。 <table> <thead> <tr> <th>階段</th> <th>讀取的目錄</th> <th>寫入的目錄</th> <th>具體動作</th> </tr> </thead> <tbody> <tr> <td>%prep</td> <td>%_sourcedir</td> <td>%_builddir</td> <td>讀取位于 %_sourcedir 目錄的源代碼和 patch 。之后,解壓源代碼至 %_builddir 的子目錄并應用所有 patch。</td> </tr> <tr> <td>%build</td> <td>%_builddir</td> <td>%_builddir</td> <td>編譯位于 %_builddir 構建目錄下的文件。通過執行類似 ./configure && make 的命令實現。</td> </tr> <tr> <td>%install</td> <td>%_builddir</td> <td>%_buildrootdir</td> <td>讀取位于 %_builddir 構建目錄下的文件并將其安裝至 %_buildrootdir 目錄。這些文件就是用戶安裝 RPM 后,最終得到的文件。注意一個奇怪的地方: 最終安裝目錄 不是 構建目錄。通過執行類似 make install 的命令實現。</td> </tr> <tr> <td>%check</td> <td>%_builddir</td> <td>%_builddir</td> <td>檢查軟件是否正常運行。通過執行類似 make test 的命令實現。很多軟件包都不需要此步。</td> </tr> <tr> <td>bin</td> <td>%_buildrootdir</td> <td>%_rpmdir</td> <td>讀取位于 %_buildrootdir 最終安裝目錄下的文件,以便最終在 %_rpmdir 目錄下創建 RPM 包。在該目錄下,不同架構的 RPM 包會分別保存至不同子目錄, noarch 目錄保存適用于所有架構的 RPM 包。這些 RPM 文件就是用戶最終安裝的 RPM 包。</td> </tr> <tr> <td>src</td> <td>%_sourcedir</td> <td>%_srcrpmdir</td> <td>創建源碼 RPM 包(簡稱 SRPM,以.src.rpm 作為后綴名),并保存至 %_srcrpmdir 目錄。SRPM 包通常用于審核和升級軟件包。</td> </tr> </tbody> </table>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看