Linux運維_Bash腳本_編譯安裝libGD-2.3.3

Linux運維_Bash腳本_編譯安裝libGD-2.3.3

Bash (Bourne Again Shell) 是一個解釋器,負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件,并于 1989 年發布的免費軟件,作為 Sh (Bourne Shell) 的替代品。

您可以在 Linux 和 MacOS 機器上使用 Bash,甚至可以通過適用于 Linux 的 Windows 子系統在 Windows 10 機器上使用。

使用方法

  • 下載源碼包:

gperf-3.1.tar.gz

freetype-2.12.0.tar.gz

expat-2.5.0.tar.gz

fontconfig-2.15.0.tar.xz

libpng-1.6.37.tar.gz

jpegsrc.v9.tar.gz

libgd-2.3.3.tar.xz

  • 放于指定路徑:

這里 Bash Shell 腳本的全局變量 STORAGE 指定的存放源碼包的路徑 /home/goufeng 可進行修改。

  • 執行 Bash Shell 腳本:

輸入 /[路徑名]/[腳本名].sh 即可進行自動編譯部署,過程中提示輸入 (y/n) 輸入 y 則進行下一步,這樣分階段確認的原因是為了確保能夠看到上一個源碼編譯結果中可能的錯誤和提示。

完整腳本

#! /bin/bash
# Create By GF 2024-03-01 19:57# --------------------------------------------------
# Install First:
# * GNU-Tools (Contains: pkg-config, m4, autoconf, automake, libtool, gettext, flex, bison, libiconv, make)# ------------------- Dependency -------------------
# Need File: gperf-3.1.tar.gz
# Need File: freetype-2.12.0.tar.gz
# Need File: expat-2.5.0.tar.gz
# Need File: fontconfig-2.15.0.tar.xz
# -------------------- Optional --------------------
# Need File: libpng-1.6.37.tar.gz
# Need File: jpegsrc.v9.tar.gz
# --------------------- libGD ----------------------
# Need File: libgd-2.3.3.tar.xz# ##################################################
STORAGE=/home/goufeng# ############################################ Dependency ############################################# Function: 編譯安裝(Compile Install) gperf-3.1
# ##################################################
function Compile_Install_gperf_3_1() {if [[ ! -d "/opt/gperf-3.1" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( gperf-3.1 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/gperf-3.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/gperf-3.1 && ./configure --prefix=/opt/gperf-3.1 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/gperf-3.1/bin/gperf /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/gperf-3.1 && return 0elseecho "[Caution] Path: ( /opt/gperf-3.1 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 編譯安裝(Compile Install) freetype-2.12.0
# ##################################################
function Compile_Install_freetype_2_12_0() {if [[ ! -d "/opt/freetype-2.12.0" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( freetype-2.12.0 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/freetype-2.12.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/freetype-2.12.0 && ./configure --prefix=/opt/freetype-2.12.0 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenrsync -av /opt/freetype-2.12.0/include/ /usr/local/include/rsync -av /opt/freetype-2.12.0/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/freetype-2.12.0 && return 0elseecho "[Caution] Path: ( /opt/freetype-2.12.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 編譯安裝(Compile Install) expat-2.5.0
# ##################################################
function Compile_Install_expat_2_5_0() {if [[ ! -d "/opt/expat-2.5.0" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( expat-2.5.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/expat-2.5.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/expat-2.5.0 && ./configure --prefix=/opt/expat-2.5.0 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/expat-2.5.0/bin/xmlwf /usr/local/bin/# ......................................rsync -av /opt/expat-2.5.0/include/ /usr/local/include/rsync -av /opt/expat-2.5.0/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/expat-2.5.0 && return 0elseecho "[Caution] Path: ( /opt/expat-2.5.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 編譯安裝(Compile Install) fontconfig-2.15.0
# ##################################################
function Compile_Install_fontconfig_2_15_0() {if [[ ! -d "/opt/fontconfig-2.15.0" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( fontconfig-2.15.0 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -xvJf $STORAGE/fontconfig-2.15.0.tar.xz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/fontconfig-2.15.0 && ./configure --prefix=/opt/fontconfig-2.15.0 \PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" && \STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/fontconfig-2.15.0/bin/* /usr/local/bin/# ......................................rsync -av /opt/fontconfig-2.15.0/include/ /usr/local/include/rsync -av /opt/fontconfig-2.15.0/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/fontconfig-2.15.0 && return 0elseecho "[Caution] Path: ( /opt/fontconfig-2.15.0 ) Already Exists."# ------------------------------------------return 0fi
}# ############################################# Optional ############################################## Function: 編譯安裝(Compile Install) libpng-1.6.37
# ##################################################
function Compile_Install_libpng_1_6_37() {if [[ ! -d "/opt/libpng-1.6.37" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( libpng-1.6.37 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/libpng-1.6.37.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/libpng-1.6.37 && ./configure --prefix=/opt/libpng-1.6.37 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/libpng-1.6.37/bin/* /usr/local/bin/# ......................................rsync -av /opt/libpng-1.6.37/include/ /usr/local/include/rsync -av /opt/libpng-1.6.37/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/libpng-1.6.37 && return 0elseecho "[Caution] Path: ( /opt/libpng-1.6.37 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 編譯安裝(Compile Install) jpeg-9
# ##################################################
function Compile_Install_jpeg_9() {if [[ ! -d "/opt/jpeg-9" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( jpeg-9 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/jpegsrc.v9.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/jpeg-9 && ./configure --prefix=/opt/jpeg-9 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/jpeg-9/bin/* /usr/local/bin/# ......................................rsync -av /opt/jpeg-9/include/ /usr/local/include/rsync -av /opt/jpeg-9/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/jpeg-9 && return 0elseecho "[Caution] Path: ( /opt/jpeg-9 ) Already Exists."# ------------------------------------------return 0fi
}# ############################################### libGD ############################################### Function: 構建安裝(Build Install) libgd-2.3.3
# ##################################################
function Compile_Install_libgd_2_3_3() {if [[ ! -d "/opt/libgd-2.3.3" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( libgd-2.3.3 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -xvJf $STORAGE/libgd-2.3.3.tar.xz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/libgd-2.3.3 && ./configure --prefix=/opt/libgd-2.3.3 \--with-png=/opt/libpng-1.6.37 \--with-freetype=/opt/freetype-2.12.0 \--with-fontconfig=/opt/fontconfig-2.15.0 \--with-jpeg=/opt/jpeg-9 \PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" && \STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/libgd-2.3.3/bin/* /usr/local/bin/# ......................................rsync -av /opt/libgd-2.3.3/include/ /usr/local/include/rsync -av /opt/libgd-2.3.3/lib/     /usr/local/lib/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/libgd-2.3.3 && return 0elseecho "[Caution] Path: ( /opt/libgd-2.3.3 ) Already Exists."# ------------------------------------------return 0fi
}function main() {# ----------------- Dependency -----------------Compile_Install_gperf_3_1Compile_Install_freetype_2_12_0Compile_Install_expat_2_5_0Compile_Install_fontconfig_2_15_0# ------------------ Optional ------------------Compile_Install_libpng_1_6_37Compile_Install_jpeg_9# ------------------- libGD --------------------Compile_Install_libgd_2_3_3
}main

總結

以上就是關于 Linux運維 Bash腳本 編譯安裝libGD-2.3.3 的全部內容。

更多內容可以訪問我的代碼倉庫:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718707.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

六、繼承(一)

1 繼承的引入 以往我們想分別實現描述學生、老師的類,可能會這樣子做: class Student {string _name;string _number;int _tel;int id;string _address;int _age; }; class Teacher {string _name;int _level;int _tel;int id;string _address;int _ag…

【歸并排序】 詳細解析 動圖演示 逐圖解析 洛谷P1177【模板】排序 sort【快速排序】

文章目錄 歸并排序1.歸并排序的復雜度分析2.細節解釋3.歸并排序動圖演示3(1) 我們的拆分過程如下↓ 4.code↓ 洛谷P1177【模板】排序數據規模與約定code(歸并排序)↓code(sort排序【快速排序】) 完結撒花( ̄▽&#xff…

閱讀筆記 | REFORMER: THE EFFICIENT TRANSFORMER

閱讀論文: Kitaev, Nikita, ?ukasz Kaiser, and Anselm Levskaya. “Reformer: The efficient transformer.” arXiv preprint arXiv:2001.04451 (2020). 背景與動機 這篇論文發表較早,主要關注Transformer的效率問題。標準的Transformer模型在許多自然…

數據中臺:數字中國戰略關鍵技術實施

這里寫目錄標題 前言為何要建設數據中臺數據中臺建設痛點數據中臺學習資料聚焦前沿,方法論體系更新與時俱進,緊跟時代熱點深入6大行業,提煉實踐精華大咖推薦,數字化轉型必備案頭書 前言 在數字中國這一國家戰略的牽引下&#xff0…

測試基礎|質量保障體系從1到N的思考

在2023年,重點構建了團隊的質量保障體系,基本完成了從0到1的過程積累,也在多個不同的場合做了相關的分享,收獲了很多同行給的建議和意見。今年的首個工作目標是把這套質量保障體系運營好,去覆蓋更多的團隊,完成從1到N的過程,讓更多的團隊從這個質量體系中獲益,保障基本…

Node插件開發(1)-快速入門

在使用Electron開發客戶端時,如果現有Node模塊所提供的功能無法滿足需求,我們可以使用C開發自定義的Node模塊,也稱插件(addon)。 Node.js插件的擴展名為.node,是二進制文件,其本質上是動態鏈接…

基于springboot+vue的響應式企業員工績效考評系統(源碼+論文)

文章目錄 前言 一、功能設計 1 普通員工功能 2 主管功能 3 系統管理員功能 4 評分標準功能 5 PC端與手機端 6 制圖 二、功能實現 普通員工 1普通員工登錄 2公告板塊 3日志板塊 主管 1主管登錄 2公告板塊 3日志板塊 4績效評分板塊 5個人信息板塊 系統管理員…

TypeScript 日期格式化工具方法

工具方法 創建工具文件:util.ts /*** 獲取時間并格式化函數* param M 格式模板 如: YYYY-MM-DD ...* param Time 可選傳入時間參數 默認為 Now*/ export const getFormatDate (M: string, Time: Date | null | string | number null) > {let date: Date Tim…

在 Linux 環境下安裝 Kibana

目錄 一、Kibana 是什么 二、在 Linux 環境下安裝 Kibana 1、下載安裝包 2、解壓 3、修改 Kibana的配置文件 config/kibana.yml 4、啟動 5、瀏覽器登錄 Kibana 6、測試查詢 一、Kibana 是什么 Kibana 是通向 Elastic 產品集的窗口。 它可以在 Elasticsearch 中對數據進…

品牌推廣的兩種飛輪:非酋飛輪與歐皇飛輪

在品牌推廣的世界里,存在著兩種截然不同的飛輪效應,我們稱之為“非酋飛輪”與“歐皇飛輪”。這兩種飛輪象征著品牌發展的兩種不同路徑和策略,而迅騰文化則以其獨特的“繁”的原則,巧妙地將這兩種飛輪結合,助力品牌形成…

Linux安裝JumpServer并結合內網穿透實現公網訪問本地服務

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

Kubernetes 學習總結(46)—— Pod 不停重啟問題分析與解決

我們在做性能測試的時候,往往會發現我們的pod服務,頻繁重啟,通過kubectl get pods 命令,我們來逐步定位問題。 現象:running的pod,短時間內重啟次數太多。 定位問題方法:查看pod日志 kubectl get event …

【Element】實現基于 Element UI el-tabs 的左右滑動動畫

實現基于 Element UI el-tabs 的左右滑動動畫 引言 在構建現代 web 應用時,為用戶提供平滑的動畫效果是提升用戶體驗的關鍵。本篇博客將詳細介紹如何在使用 Vue 以及 Element UI 時,實現一個具有左右滑動效果的 tab 切換動畫。 使用 el-tabs 創建 tab…

Flutter 中的 SliverGrid 和 GridView:區別與使用場景

在 Flutter 中,SliverGrid 和 GridView 都是用于展示網格布局的組件,但它們有著不同的特點和適用場景。本文將介紹它們之間的區別以及在實際開發中的使用場景。 SliverGrid 和 GridView 的區別 SliverGrid: SliverGrid 是 CustomScrollView …

第十五屆藍橋杯第三期模擬賽題單

目錄 第一題: 第二題: 第三題: 第四題: 第五題: 第六題: 第七題 第八題 第九題 第十題 第一題 【問題描述】 請問 2023 有多少個約數?即有多少個正整數,使得 2023 是這個正整數的整數倍…

FolkMQ 是怎樣進行消息的事務處理?

FolkMQ 提供了二段式提交的事務提交的機制(TCC 模型)。允許生產者在發送消息時綁定到一個事務中并接收事務的管理,以確保消息的原子性(要么全成功,要么全失敗)。在 FolkMQ 中,事務是通過 MqTran…

1、EmlogCms代碼審計

一、SQL注入 1、后臺標簽刪除處存在1處sql注入 漏洞條件 ● 漏洞url: http://emlog6.0.com/admin/tag.php?actiondell_all_tag ● 漏洞參數:tag[xx] ● 是否存在限制:無 ● 是否還有其他條件:actiondell_all_tag,token復現 POST /admin…

擼chatgpt3.5 api backend-api 對接wxbot

功能是實現 web 轉api 對接wxbot用, 直接上代碼, 1.獲取wss url def get_register_websocket():# 請求頭url "https://chat.openai.com/backend-api/register-websocket"payload {}headers {Authorization: Bearer eyJhbGxxxxxxxxxxxxx…

docker的網絡配置

文章目錄 1、網絡模式1.1、bridge模式(默認模式)1.2、host模式 2、bridge模式3、自定義網絡 1、網絡模式 Docker在創建容器時有四種網絡模式:bridge/host/container/none,bridge為默認不需要用–net去指定,其他三種模式需要在創建容器時使用…

【力扣 - 最長連續數組】

題目描述 給定一個未排序的整數數組 nums ,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入:nums [100,4,200,1,3,2] 輸出&…