<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 從源碼包自動構建軟件 源碼壓縮包(**tarball**)會嚴重損害你的健康。你既可以使用 **發行版**(**distro**)或第三方軟件包, 同時從源碼包構建你自己的軟件包也是可取的,這有時還會有許多工作要做。 創建 Debian 軟件包(或者其他風格的軟件包)會是一個漫長而容易出錯的過程, 而且你可能沒有時間或預算構建它。 如果你必須從源代碼構建你的程序,至少 Puppet 可以幫你實現這一過程。 一般地構建過程是自動化的,否則你就得手工構建: * 下載源碼包 * 解壓源碼包 * 配置(Configure)并構建(build)程序 * 安裝已構建的程序 在下面的例子中,我們將從源碼構建 **OpenSSL**(雖然在生產環境中你應該使用發行版提供的軟件包, 但這是一個有用的演示示例)。 #### 操作步驟 1. 添加如下代碼到你的配置清單: ``` exec { "build-openssl": cwd =&gt; "/root", command =&gt; "/usr/bin/wget ftp://ftp.openssl.org/source/ openssl-0.9.8p.tar.gz && /bin/tar xvzf openssl-0.9.8p.tar. gz && cd openssl-0.9.8p && ./Configure linux-generic32 && make install", creates =&gt; "/usr/local/ssl/bin/openssl", logoutput =&gt; on_failure, timeout =&gt; 0, } ``` 2. 運行 Puppet (這可能會執行一段時間!): ``` # puppet agent --test info: Retrieving plugin info: Caching catalog for cookbook.bitfieldconsulting.com info: Applying configuration version '1304954159' notice: /Stage[main]//Node[cookbook]/Exec[build-openssl]/returns: executed successfully notice: Finished catalog run in 554.00 seconds ``` #### 工作原理 exec 命令被 && 運算符分割成了五個階段。也就是說每個階段的命令若執行失敗, 整個命令將會失敗且停止運行。 當你想確保每個子命令都成功運行之后才運行下一個子命令時,這是一種有用的構造方法。 1. 第一階段,下載源碼包: ``` /usr/bin/wget ftp://ftp.openssl.org/source/openssl-0.9.8p.tar.gz ``` 2. 第二階段,解壓源碼包: ``` /bin/tar xvzf openssl-0.9.8p.tar.gz ``` 3. 第三階段,進入源碼樹的目錄: ``` cd openssl-0.9.8p ``` 4. 第四階段,運行配置腳本(通常還會指定一些自定義選項): ``` ./Configure linux-generic32 ``` 5. 最后階段,創建并安裝軟件: ``` make install ``` 6. 由于這是一個漫長的過程,你不想每次運行 Puppet 時都運行它,我們指定了一個條件, 即被創建的文件是否應經存在: ``` creates =&gt; "/usr/local/ssl/bin/openssl", ``` 無論出于任何原因,如果需要重建,你可以刪除此文件。 7. 錯誤并非只發生在首次編譯的情況。在出現問題時,我們指定了 logoutput 參數, 它將為我們顯示編譯或構建過程中的出錯信息: ``` logoutput =&gt; on_failure, ``` 8. 最后,因為編譯過程可能會持續一段時間,所以將 timeout 參數設置成了 0 (默認情況下,Puppet 執行 exec 命令 5 分鐘后就會超時): ``` timeout =&gt; 0, ``` #### 更多用法 如果你有一批必須從源代碼構建的軟件,那么將上述的 exec 放入一個 define 函數會使這一構建過程變得更方便,因為你可以使用大致相同的代碼構建每個包。
                  <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>

                              哎呀哎呀视频在线观看