日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

版本控制 Git RPM打包

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 版本控制 Git RPM打包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版本控制

版本庫

典型的客戶/服務器系統
  • 版本庫是版本控制中心的核心
  • 任意數量客戶端
  • 客戶端通過寫數據庫分享代碼
版本控制系統
集中式版本控制系統
  • 開發者之間共用一個倉庫(repository)
  • 所有操作需要聯網
分布式版本操作系統
  • 每個開發者都是一個倉庫的完整克隆,每個人都是服務器
  • 支持斷網操作
版本控制軟件
  • 集中式版本控制軟件
    CVS
    SVN(Subversion)
  • 分布式版本控制軟件
    Git
    BitKeeper(收費)

Git基本概念

  • Git倉庫:保存所有數據的地方
  • 工作區:從倉庫中提取出來的文件,放在磁盤上供你使用或更改
  • 暫存區:就是一個文件,索引文件,保存了下次將提交的文件列表信息

Git作用

當我們把一個文件上傳到git里,讓git幫我們去管理,只要你把文件放到git里了,以后你對這個文件不管怎么修改,它都會把你的文件所有修改的歷史記錄全部備份下來,可以隨意的還原歷史版本,簡單來說git的作用就是幫你管理文件,對于git來說,這個文件有很多的版本,每修改一次就產生一個版本.

Git工作流程


1.從服務器上clone數據到本地,即工作區
2.工作區內存放最新版文件,但是工作區內修改的文件是不能直接提交到GIt倉庫
3.暫存區是指你修改所有文件的一個暫時存放的地方,只有修改過的文件才能放到暫存區,再由暫存區提交到倉庫
4.GIt倉庫,即本地倉庫. 存放著所有文件的歷史版本
5.在聯網的情況下把本地倉庫所有修改的文件回傳到服務器上 .斷網的情況下,本地倉庫就是你的服務器.

Git基本操作

問題
要求先快速搭建好一臺Git服務器,并測試該版本控制軟件,要求如下:

  • 安裝Git軟件
  • 創建版本庫
  • 客戶端克隆版本倉庫到本地
  • 本地工作目錄修改數據
  • 提交本地修改到服務器

方案
實驗拓撲如圖-1所示,Git工作流如圖-2所示。


步驟

  • 步驟一:部署Git服務器(192.168.2.100作為遠程git服務器)
    1)YUM安裝Git軟件。
[root@web1 ~]# yum -y install git

2)初始化一個空倉庫。

[root@web1 ~]# mkdir /var/git [root@web1 ~]# git init /var/git/project --bare 初始化空的 Git 版本庫于 /var/git/project/ [root@web1 ~]# ls /var/git/project config description HEAD hooks info objects refs
  • 步驟二:客戶端測試(192.168.2.200作為客戶端主機)
    使用git常用指令列表如表-1所示。

最常用的 git 命令有:
add 添加文件內容至索引
bisect 通過二分查找定位引入 bug 的變更
branch 列出、創建或刪除分支
checkout 檢出一個分支或路徑到工作區
clone 克隆一個版本庫到一個新目錄
commit 記錄變更到版本庫
diff 顯示提交之間、提交和工作區之間等的差異
fetch 從另外一個版本庫下載對象和引用
grep 輸出和模式匹配的行
init 創建一個空的 Git 版本庫或重新初始化一個已存在的版本庫
log 顯示提交日志
merge 合并兩個或更多開發歷史
mv 移動或重命名一個文件、目錄或符號鏈接
pull 獲取并合并另外的版本庫或一個本地分支
push 更新遠程引用和相關的對象
rebase 本地提交轉移至更新后的上游分支中
reset 重置當前HEAD到指定狀態
rm 從工作區和索引中刪除文件
show 顯示各種類型的對象
status 顯示工作區狀態
tag 創建、列出、刪除或校驗一個GPG簽名的 tag 對象

  • clone克隆服務器倉庫到本地。
  • [root@web2 ~]# yum -y install git #首先查看是否有git軟件 [root@web2 ~]# git clone root@192.168.2.100:/var/git/project 正克隆到 'project'... Warning: Permanently added '192.168.2.100' (ECDSA) to the list of known hosts. root@192.168.2.100's password: warning: 您似乎克隆了一個空版本庫。 [root@web2 ~]# ls #當前多了一個空的project目錄,project即為工作區 Desktop lnmp_soft lnmp_soft.tar.gz nginx-1.12.2 nginx-1.12.2.tar.gz project [root@web2 ~]# cd project/ [root@web2 project]# ls [root@web2 project]# ls -a #隱藏的倉庫,存放所有歷史版本 . .. .git

    !!!做git有關的任何操作一定要先cd進git的工作區
    2) 本地工作區對數據進行增刪改查(必須要先進入倉庫再操作數據)。

    [root@web2 project]# echo "init data" > init.txt [root@web2 project]# mkdir demo [root@web2 project]# cp /etc/hosts demo [root@web2 project]# ls demo init.txt

    3) 查看倉庫中數據的狀態。

    [root@web2 project]# git status # 位于分支 master # # 初始提交 # # 未跟蹤的文件: # (使用 "git add <file>..." 以包含要提交的內容) # # demo/ # init.txt 提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)

    4) 將工作區的修改提交到暫存區。

    [root@web2 project]# git add . #.代表當前,所有的文件都提交到暫存區

    5 ) 修改git配置。

    [root@web2 project]# git commit -m "注釋" #提交,報錯 [master(根提交) 3ef2e08] 注釋Committer: root <root@web2.example.com> 您的姓名和郵件地址基于登錄名和主機名進行了自動設置。請檢查它們正確 與否。您可以通過下面的命令對其進行明確地設置以免再出現本提示信息:git config --global user.name "Your Name"git config --global user.email you@example.com設置完畢后,您可以用下面的命令來修正本次提交所使用的用戶身份:git commit --amend --reset-author2 files changed, 3 insertions(+)create mode 100644 demo/hostscreate mode 100644 init.txt [root@web2 project]# git config --global user.name "Your Name" #config永久生效 [root@web2 project]# git config --global user.email you@example.com [root@web2 project]# cat ~/.gitconfig [user]name = Your Nameemail = you@example.com [root@web2 project]# git status #再次查看服務狀態 位于分支 master 無文件要提交,干凈的工作區

    6) 將本地倉庫中的數據推送到遠程服務器(web2將數據推送到web1)。

    [root@web2 project]# git config --global push.default simple [root@web2 project]# git push root@192.168.2.100's password: 輸入服務器root密碼 Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 358 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To root@192.168.2.100:/var/git/project* [new branch] master -> master [root@web2 project]# git status位于分支 master 無文件要提交,干凈的工作區可以在web1上面查看 [root@web1 ~]# cd /var/git/project/ [root@web1 project]# du -sh /var/git/project/ #沒有推送到服務器時的大小 56K /var/git/project/ [root@web1 project]# du -sh /var/git/project/ #已經推送到服務器時的大小變化 80K /var/git/project/

    7 ) 將服務器上的數據更新到本地(web1的數據更新到web2)。
    備注:可能其他人也在修改數據并提交服務器,就會導致自己的本地數據為舊數據,使用pull就可以將服務器上新的數據更新到本地。

    [root@web2 project]# git pull root@192.168.2.100's password: Already up-to-date.

    8 ) 查看版本日志。

    [root@web2 project]# git log #git會以UUID作為版本號,"注釋"為commit -m后面定義的名字 commit 3ef2e08e4cabc885025f397bbcf11910b67476f3 Author: root <root@web2.example.com> Date: Fri Jan 17 10:49:07 2020 +0800注釋 [root@web2 project]# git log --pretty=oneline 3ef2e08e4cabc885025f397bbcf11910b67476f3 注釋 [root@web2 project]# git log --oneline 3ef2e08 注釋 [root@web2 project]# git reflog 3ef2e08 HEAD@{0}: commit (initial): 注釋

    備注:客戶端也可以使用圖形程序訪問服務器。
    Windows需要安裝git和tortoiseGit。如圖-3、圖-4所示。

    HEAD指針概述

    • HEAD指針是一個可以在任何分支和版本移動的指針
    • 通過移動指針我們可以將數據還原至任何版本

    HEAD指針操作

    問題
    學習操作HEAD指針,具體要求如下:

    • 查看Git版本信息
    • 移動指針
    • 通過移動HEAD指針恢復數據

    方案
    HEAD指針是一個可以在任何分支和版本移動的指針,通過移動指針我們可以將數據還原至任何版本。每做一次提交操作都會導致git更新一個版本,HEAD指針也跟著自動移動。

    步驟
    步驟一:HEAD指針基本操作

    1)準備工作(多對數據倉庫進行修改、提交操作,以產生多個版本)。

    [root@web2 project]# echo "first" > new.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "new.txt:first" [master 2c87f61] add first1 file changed, 1 insertion(+)create mode 100644 first [root@web2 project]# echo "first" >> new.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "new.txt:first line" [master a0480de] new.txt:first line1 file changed, 2 insertions(+), 1 deletion(-) [root@web2 project]# echo "second" >> new.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "new.txt:second line" [master 5d777e6] new.txt:second line1 file changed, 1 insertion(+) [root@web2 project]# echo "thrid" >> new.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "new.txt:thrid" [master 9e6746d] new.txt:thrid1 file changed, 1 insertion(+) [root@web2 project]# git push root@192.168.2.100 password: [root@web2 project]# echo 123 > num.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "num.txt:123" [master e7db9a7] num.txt:1231 file changed, 1 insertion(+)create mode 100644 num.txt [root@web2 project]# echo 456 > num.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "num.txt:456" [master ead3f5d] num.txt:4561 file changed, 1 insertion(+), 1 deletion(-) [root@web2 project]# echo 789 > num.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "num.txt:789" [master 553a0eb] num.txt:7891 file changed, 1 insertion(+), 1 deletion(-) [root@web2 project]# git push root@192.168.2.100's password: Counting objects: 10, done. Delta compression using up to 2 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (9/9), 673 bytes | 0 bytes/s, done. Total 9 (delta 3), reused 0 (delta 0) To root@192.168.2.100:/var/git/project 9e6746d..553a0eb master -> master

    2 ) 查看Git版本信息。

    [root@web2 project]# git log --oneline 553a0eb num.txt:789 ead3f5d num.txt:456 e7db9a7 num.txt:123 9e6746d new.txt:thrid 5d777e6 new.txt:second line a0480de new.txt:first line 2c87f61 add new.txt 3ef2e08 注釋

    3)移動HEAD指針,將數據還原到任意版本。
    提示:當前HEAD指針為HEAD@{0}。

    [root@web2 project]# git reflog #查看當前的log 553a0eb HEAD@{0}: commit: num.txt:789 ead3f5d HEAD@{1}: commit: num.txt:456 e7db9a7 HEAD@{2}: commit: num.txt:123 9e6746d HEAD@{3}: commit: new.txt:thrid 5d777e6 HEAD@{4}: commit: new.txt:second line a0480de HEAD@{5}: commit: new.txt:first line 2c87f61 HEAD@{6}: commit: add new.txt 3ef2e08 HEAD@{7}: commit (initial): 注釋 [root@web2 project]# git reset --hard 5d77 #移動 HEAD 現在位于 5d777e6 new.txt:second line [root@web2 project]# ls demo init.txt new.txt [root@web2 project]# cat new.txt first first second [root@web2 project]# git reflog #查看指針移動歷史 5d777e6 HEAD@{0}: reset: moving to 5d77 553a0eb HEAD@{1}: commit: num.txt:789 ead3f5d HEAD@{2}: commit: num.txt:456 e7db9a7 HEAD@{3}: commit: num.txt:123 9e6746d HEAD@{4}: commit: new.txt:thrid 5d777e6 HEAD@{5}: commit: new.txt:second line a0480de HEAD@{6}: commit: new.txt:first line 2c87f61 HEAD@{7}: commit: add new.txt 3ef2e08 HEAD@{8}: commit (initial): 注釋 [root@web2 project]# git reset --hard e7db HEAD 現在位于 e7db9a7 num.txt:123 [root@web2 project]# ls demo init.txt new.txt num.txt [root@web2 project]# cat new.txt first first second thrid [root@web2 project]# cat num.txt 123 ----------------------------------------------------------------------------------------- 會出現報錯問題,因為當前的版本低于服務器中的版本 [root@web2 project]# cp new.txt /tmp [root@web2 project]# git push root@192.168.2.100s password: To root@192.168.2.100:/var/git/project! [rejected] master -> master (non-fast-forward) error: 無法推送一些引用到 'root@192.168.2.100:/var/git/project' 提示:更新被拒絕,因為您當前分支的最新提交落后于其對應的遠程分支。 提示:再次推送前,先與遠程變更合并(如 'git pull')。詳見 提示:'git push --help' 中的 'Note about fast-forwards' 小節。 ----------------------------------------------------------------------------------------- [root@web2 project]# git reset --hard 553a #回到最后一次修改的版本 HEAD 現在位于 553a0eb num.txt:789 [root@web2 project]# git reflog 553a0eb HEAD@{0}: reset: moving to 553a e7db9a7 HEAD@{1}: reset: moving to e7db 5d777e6 HEAD@{2}: reset: moving to 5d77 553a0eb HEAD@{3}: commit: num.txt:789 ead3f5d HEAD@{4}: commit: num.txt:456 e7db9a7 HEAD@{5}: commit: num.txt:123 9e6746d HEAD@{6}: commit: new.txt:thrid 5d777e6 HEAD@{7}: commit: new.txt:second line a0480de HEAD@{8}: commit: new.txt:first line 2c87f61 HEAD@{9}: commit: add new.txt 3ef2e08 HEAD@{10}: commit (initial): 注釋 [root@web2 project]# git log --oneline 553a0eb num.txt:789 ead3f5d num.txt:456 e7db9a7 num.txt:123 9e6746d new.txt:thrid 5d777e6 new.txt:second line a0480de new.txt:first line 2c87f61 add new.txt 3ef2e08 注釋

    同步更新:git pull
    下載: git clone URL
    提交到暫存區:git add .
    提交到本地倉庫: git commit -m “xxx”
    提交 :git push
    創建倉庫:在服務端創建文件,git init

    分支的基本概念

    分支可以讓開發分多條主線同時進行,每條主線互不影響

    • 按功能模塊分支,按版本分支
    • 分支也可以合并

    Git分支操作

    問題
    操作Git分支,具體要求如下:

    • 查看分支
    • 創建分支
    • 切換分支
    • 合并分支
    • 解決分支的沖突

    方案
    Git支持按功能模塊、時間、版本等標準創建分支,分支可以讓開發分多條主線同時進行,每條主線互不影響,分支效果如圖所示

    常見的分支規范如下:

    • MASTER分支(MASTER是主分支,是代碼的核心)。
    • DEVELOP分支(DEVELOP最新開發成果的分支)。
    • RELEASE分支(為發布新產品設置的分支)。
    • HOTFIX分支(為了修復軟件BUG缺陷的分支)。
    • FEATURE分支(為開發新功能設置的分支)。
    • 步驟一:查看并創建分支

    1)查看當前分支。

    [root@web2 project]# git status # 位于分支 master 無文件要提交,干凈的工作區 nothing to commit, working directory clean [root@web2 project]# git branch -v * master 553a0eb num.txt:789

    2)創建分支。

    [root@web2 project]# git branch hotfix [root@web2 project]# git branch feature [root@web2 project]# git branch -vfeature 553a0eb num.txt:789hotfix 553a0eb num.txt:789 * master 553a0eb num.txt:789
    • 步驟二:切換與合并分支

    1)切換分支。

    [root@web2 project]# git checkout hotfix 切換到分支 'hotfix' [root@web2 project]# ls #此時查看并沒有任何變化 demo init.txt new.txt num.txt [root@web2 project]# git branch -vfeature 553a0eb num.txt:789 * hotfix 553a0eb num.txt:789master 553a0eb num.txt:789

    2)在新的分支上可以繼續進行數據操作(增、刪、改、查)。

    [root@web2 project]# echo "fix a new txt" >> new.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "fix a new txt" [hotfix 4cab02f] fix a new txt1 file changed, 1 insertion(+) [root@web2 project]# cat new.txt first first second thrid fix a new txt [root@web2 project]# git checkout master 切換到分支 'master' [root@web2 project]# cat new.txt first first second thrid

    3)將hotfix修改的數據合并到master分支。
    注意,合并前必須要先切換到master分支,然后再執行merge命令。

    [root@web2 project]# git branch -v #首先查看當前處于哪個分支feature 553a0eb num.txt:789hotfix 4cab02f fix a new txt * master 553a0eb num.txt:789 [root@web2 project]# git merge hotfix #合并分支,有時會產生版本分支沖突 更新 553a0eb..4cab02f Fast-forwardnew.txt | 1 +1 file changed, 1 insertion(+) [root@web2 project]# cat new.txt #再次查看文件 first first second thrid fix a new txt [root@web2 project]# git branch -vfeature 553a0eb num.txt:789hotfix 4cab02f fix a new txt * master 4cab02f [領先 1] fix a new txt
    • 步驟二:解決版本分支的沖突問題

    1)在不同分支中修改相同文件的相同行數據,模擬數據沖突。

    [root@web2 project]# git checkout hotfix 切換到分支 'hotfix' [root@web2 project]# echo "AAAA" > a.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "a.txt by hot" [hotfix cfbfd1f] a.txt by hot1 file changed, 1 insertion(+)create mode 100644 a.txt [root@web2 project]# git checkout master 切換到分支 'master' [root@web2 project]# echo "BBBB" > a.txt [root@web2 project]# git add . [root@web2 project]# git commit -m "a.txt by mas" [master 108106c] a.txt by mas1 file changed, 1 insertion(+)create mode 100644 a.txt [root@web2 project]# git merge hotfix 自動合并 a.txt 沖突(添加/添加):合并沖突于 a.txt 自動合并失敗,修正沖突然后提交修正的結果。

    2)查看有沖突的文件內容,修改文件為最終版本的數據,解決沖突。

    [root@web2 project]# cat a.txt #該文件中包含有沖突的內容 <<<<<<< HEAD BBBB ======= AAAA >>>>>>> hotfix [root@web2 project]# vim a.txt #修改該文件,為最終需要的數據,解決沖突 AAAA [root@web2 project]# git add . [root@web2 project]# git commit -m "fin a.txt" #改為最終版本 [master 87e3f8e] fin a.txt

    總結:分支指針與HEAD指針的關系。
    創建分支的本質是在當前提交上創建一個可以移動的指針
    如何判斷當前分支呢?答案是根據HEAD這個特殊指針

    分支操作流程如圖1,圖2,圖3,圖4,圖5所示。

    HEAD指針指向master分支

    切換分支,HEAD指針指向testing分支

    在testing分支中修改并提交代碼

    將分支切換回master分支

    在master分支中修改數據,更新版本

    Git服務器

    • SSH協議
    • Git協議
    • HTTP協議

    問題
    Git不同的服務器形式,具體要求如下:

    • 創建SSH協議服務器
    • 創建Git協議服務器
    • 創建HTTP協議服務器

    方案
    Git支持很多服務器協議形式,不同協議的Git服務器,客戶端就可以使用不同的形式訪問服務器。創建的服務器協議有SSH協議、Git協議、HTTP協議。

    • 步驟一:SSH協議服務器(支持讀寫操作)

    1)創建基于密碼驗證的SSH協議服務器(web1主機操作)。

    [root@web1 ~]# git init --bare /var/git/base_ssh Initialized empty Git repository in /var/git/base_ssh/

    2)客戶端訪問的方式(web2主機操作)。

    [root@web2 ~]# git clone root@192.168.2.100:/var/git/base_ssh [root@web2 ~]# rm -rf base_ssh

    3)客戶端生成SSH密鑰,實現免密碼登陸git服務器(web2主機操作)。

    [root@web2 ~]# ssh-keygen -f /root/.ssh/id_rsa -N '' [root@web2 ~]# ssh-copy-id 192.168.2.100 [root@web2 ~]# git clone root@192.168.2.100:/var/git/base_ssh [root@web2 ~]# git push
    • 步驟二:Git協議服務器(只讀操作的服務器)

    1)安裝git-daemon軟件包(web1主機操作)。

    [root@web1 ~]# yum -y install git-daemon

    2)創建版本庫(web1主機操作)。

    [root@web1 ~]# git init --bare /var/git/haha 初始化空的 Git 版本庫于 /var/git/haha/

    3)修改配置文件,啟動git服務(web1主機操作)。

    [root@web1 ~]# vim /usr/lib/systemd/system/git@.service 修改前內容如下: ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd –verbose 修改后內容如下: ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/git --export-all --user-path=public_git --syslog --inetd –verbose [root@web1 ~]# systemctl start git.socket #起服務

    4)客戶端訪問方式(web2主機操作)

    [root@web2 project]# cd [root@web2 ~]# git clone git://192.168.2.100/haha [root@web2 ~]# ls Desktop haha lnmp_soft lnmp_soft.tar.gz nginx-1.12.2 nginx-1.12.2.tar.gz project

    步驟三:HTTP協議服務器(只讀操作的服務器)

    1)安裝gitweb、httpd軟件包(web1主機操作)。

    [root@web1 ~]# yum -y install httpd gitweb

    2)修改配置文件,設置倉庫根目錄(web1主機操作)。

    [root@web1 ~]# vim +11 /etc/gitweb.conf #+11可以直接跳轉到第11行10 #our $projectroot = "/var/lib/git";11 $projectroot = "/var/git"; #以第十行為模板書寫git倉庫的路徑12 # Set the list of git base URLs used for URL to where fetch project from, i.e.

    3)啟動httpd服務器

    [root@web1 ~]# systemctl restart httpd

    4)客戶端訪問方式(web2主機操作)
    注意:調用虛擬機中的firefox瀏覽器,需要在遠程時使用ssh -X 服務器IP,并且確保真實主機的firefox已經關閉。

    [root@web2 ~]# firefox http://192.168.2.100/git/



    RPM包打包

    基本概念

    PM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux 分發版(distribution)的常見的軟件包管理器。因為它允許分發已編譯的軟件,所以用戶只用一個命令就可以安裝軟件。

    應用場景

    • 官方未提供RPM包
    • 官方RPM無法定義
    • 大量源碼包,希望提供統一的軟件管理機制

    打包流程

    • 準備源碼軟件
    • 安裝rpm-build
    • 編寫編譯配置文件
    • 編譯RPM包
    制作nginx的RPM包

    問題
    使用nginx-1.12.2版本的源碼軟件,生成對應的RPM包軟件,具體要求如下:

    • 軟件名稱為nginx
    • 軟件版本為1.12.2
    • RPM軟件包可以查詢描述信息
    • RPM軟件包可以安裝及卸載

    方案
    安裝rpm-build軟件包,編寫SPEC配置文件,創建新的RPM軟件包。
    配置文件中的描述信息如表-2:

    步驟

    • 步驟一:安裝rpm-build軟件

    1)安裝rpm-build軟件包

    [root@web1 ~]# yum -y install rpm-build

    2)生成rpmbuild目錄結構

    [root@web1 ~]# rpmbuild -ba xiaotiantian 錯誤:stat /root/xiaotiantian 失敗:沒有那個文件或目錄 [root@web1 ~]# ls /root/rpmbuild/ //自動生成的目錄結構 BUILD BUILDROOT RPMS SOURCES SPECS SRPMS #SOURCES目錄下存放源碼 #RPMS目錄,生成的RPM包存放在這里 #SPECS目錄下寫將源碼變成RPM包的配置文件

    3)準備工作,將源碼軟件復制到SOURCES目錄

    [root@web1 ~]# cp /root/lnmp_soft/nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/

    4)創建并修改SPEC配置文件

    [root@web1 ~]# cd /root/rpmbuild/SPECS/ [root@web1 SPECS]# vim nginx.spec #擴展名必須要以spec結尾 Name:nginx #源碼包軟件名稱 Version:1.12.2 #源碼包軟件的版本號 Release: 1%{?dist} #制作的RPM包版本號 Summary:this is a web server. #RPM軟件的概述 #Group: #軟件包組 License:GPL #軟件的協議 URL:www.tiantian.com #網址 Source0:nginx-1.12.2.tar.gz #源碼包軟件的全稱 #BuildRequires: #制作RPM時的依賴關系 #Requires: #安裝RPM時的依賴關系 %description this is xiao tian tian ohouhouhouhohu #軟件的詳細描述%post #非必要操作:安裝后腳本(創建賬戶) useradd nginx echo nginx > /tmp/a.txt %prep %setup -q #自動解壓源碼包,并cd進入目錄 %build ./configure --with-http_ssl_module --user=nginx #./configure源碼安裝 make %{?_smp_mflags} %install make install DESTDIR=%{buildroot} %files %doc #對哪些文件與目錄打包 /usr/local/nginx/* %changelog
    • 步驟二:使用配置文件創建RPM包
    [root@web1 SPECS]# ls nginx.spec [root@web1 SPECS]# rpmbuild -ba nginx.spec [root@web1 SPECS]# ls /root/rpmbuild/RPMS/ x86_64 [root@web1 SPECS]# ls /root/rpmbuild/RPMS/x86_64/ nginx-1.12.2-1.el7.centos.x86_64.rpm nginx-debuginfo-1.12.2-1.el7.centos.x86_64.rpm
    • 步驟三:安裝軟件
    [root@web1 ~]# yum install /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-1.el7.centos.x86_64.rpmnginx.x86_64 0:1.12.2-1.el7.centos 完畢! [root@web1 ~]# rpm -qa | grep nginx nginx-1.12.2-1.el7.centos.x86_64 [root@web1 ~]# ls /usr/local/nginx/ conf html logs sbin [root@web1 ~]# yum info nginx.x86_64 已加載插件:fastestmirror Loading mirror speeds from cached hostfile 已安裝的軟件包 名稱 :nginx 架構 :x86_64 版本 :1.12.2 發布 :1.el7.centos 大小 :797 k 源 :installed 簡介 : this is a web server. 網址 :www.tiantian.com 協議 : GPL 描述 : this is xiao tian tian ohouhouhouhohu 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的版本控制 Git RPM打包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。