1. 程式人生 > >如何對程式進行rpm打包釋出

如何對程式進行rpm打包釋出

正如之前提到的,一般專案(程式)的目錄包含pkg資料夾這個中應該編寫與打包對應的例程,

例如我目錄下結構為

[[email protected] /home/clouduser/ZK_Serviced]$ ls 

AUTHORS  bin  data  include  libs  logs  Makefile  pkg  README  scripts  src

pkg目錄下包含兩個檔案:

ls pkg/
Makefile  ZK_Serviced.spec

這個Makefile其實就是遍歷目錄然後分別執行Makefile

cat Makefile
SUBDIRS := src

all:
    @for d in $(SUBDIRS); do \
                $(MAKE) -C $$d all; \
                done

clean:
    @for d in $(SUBDIRS); do \
                $(MAKE) -C $$d clean; \
                done

編寫rpm打包程式關鍵在於寫*.spec檔案(如ZK_Serviced.spec),這個結構其實比較固定,例如我自己使用的結構內容如下示:

紅色為描述性說明

綠色為生成目錄與檔案拷貝(打的包包含的內容)

藍色為安裝前,解除安裝前需要執行的指令碼

cat ZK_Serviced.spec
%define debug_package %{nil}
%define __os_install_post %{nil}
%define _prefix /home/package/rpm/ZK_Serviced
%define srcname ZK_Serviced

summary: ZK_Serviced-daemon
name: ZK_Serviced
version: 1.0.0.1
release: 1%{?dist}
url: hao.360.cn
license: GPL
vendor: CloudUser<http://clouduser.cn>
group: Application/Internet
source: %{srcname}.tar.gz
#provides:
#requires:
#buildrequires:
buildroot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)

%description
ZK_Serviced aim at supply a service which update sysinfo into zookeeper
if any question contact at

[email protected]

%prep
%setup -q -n %{srcname}

%build
# your package build steps
make

%install
rm -rf %{buildroot}
# your package install steps
# the compiled files dir: %{_builddir}/<package_source_dir> or $RPM_BUILD_DIR/<package_source_dir>
# the dest root dir: %{buildroot} or $RPM_BUILD_ROOT
mkdir -p %{buildroot}/%{_prefix}/
mkdir -p %{buildroot}/%{_prefix}/bin/
mkdir -p %{buildroot}/%{_prefix}/libs/
mkdir -p %{buildroot}/%{_prefix}/logs/
mkdir -p %{buildroot}/%{_sysconfdir}/
mkdir -p %{buildroot}/%{_sysconfdir}/cron.d/

pushd %{_builddir}/%{srcname}/
cp -rf bin %{buildroot}/%{_prefix}/
cp -rf libs %{buildroot}/%{_prefix}/
cp -rf scripts/ZK_Serviced_clean_crontab %{buildroot}/%{_sysconfdir}/cron.d/
popd

%files
#%defattr(-,search,search)
%defattr(-,root,root)
# list your package files here
# the list of the macros:
#   _prefix           /usr
#   _exec_prefix      %{_prefix}
#   _bindir           %{_exec_prefix}/bin
#   _libdir           %{_exec_prefix}/%{_lib}
#   _libexecdir       %{_exec_prefix}/libexec
#   _sbindir          %{_exec_prefix}/sbin
#   _includedir       %{_prefix}/include
#   _datadir          %{_prefix}/share
#   _sharedstatedir   %{_prefix}/com
#   _sysconfdir       /etc
#   _initrddir        %{_sysconfdir}/rc.d/init.d
#   _var              /var
%{_prefix}/bin
%{_prefix}/libs
%{_prefix}/logs

%defattr(-,root,root)
%{_sysconfdir}/cron.d/ZK_Serviced_clean_crontab

%pre
# pre-install scripts

%post
# post-install scripts

%preun
# pre-uninstall scripts
%{_prefix}/bin/stop.sh ZK_Serviced

%postun
# post-uninstall scripts


%clean
rm -rf %{buildroot}
# your package build clean up steps here

%changelog
# list your change log here

下面為百度百科對其的簡單介紹,想具體瞭解學習的可以上網查一下各個欄位是什麼含義,如果只是使用的話,上面粘出來的這段完全夠你小的應該測試使用

RPM 編輯 RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,這一檔案格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。

1管理器

RPM軟體包管理器 英文原義:Redhat Package Manager 中文釋義:RPM軟體包管理器 註解:一種用於網際網路下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM副檔名的檔案。與Dpkg類似。

簡介

RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,這一檔案格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。 RPM檔案在Linux系統中的安裝最為簡便。以著名的影象處理軟體XV為例,其RPM包xv-3.10a-13.i386.rpm可以在該程式的主頁中下載取得。

一些相關操作應用命令

在Terminal中,基本的安裝指令如下: rpm -i xv-3.10a-13.i386.rpm 如果你的連網速度足夠快,也可以直接從網路上安裝應用軟體,只需要在軟體的檔名前加上適當的URL路徑。 作為一個軟體包管理工具,RPM管理著系統已安裝的所有RPM程式元件的資料。我們也可以使用RPM來解除安裝相關的應用程式。 rpm -e xv RPM的常用引數還包括: -vh:顯示安裝進度; -U:升級軟體包; -qpl:列出RPM軟體包內的檔案資訊; -qpi:列出RPM軟體包的描述資訊; -qf:查詢指定檔案屬於哪個RPM軟體包; -Va:校驗所有的RPM軟體包,查詢丟失的檔案; -qa: 查詢相應檔案,如 rpm -qa mysql

RPM主要功能(linux作業系統)

安裝、解除安裝、升級和管理軟體 元件查詢功能 驗證功能 軟體包GPG和MD5數字簽名的匯入、驗證和釋出 軟體包依賴處理 選擇安裝 網路遠端安裝功能 資源電源管理(Resource Power Manager) RPM是高通專用的硬體引擎,用於管理共享的SoC(系統級晶片)相關資源,其中包括匯流排,時鐘,電源軌等。RPM的目標是滿足SoC的操作和效能要求的同時實現最大的功率節省。RPM接受多個RPM主控的資源請求。仲裁和聚合請求,並配置共享資源。RPM的主控方有應用處理器,調製解調處理器,以及一些硬體加速器。 RPM驅動提供了一個同RPM互動的API。核心程式碼呼叫RPM驅動來請求RPM管理和共享資源。核心程式碼也可以為RPM通知註冊驅動,RPM通知在共享資源狀態發生變化時傳送。

硬體描述

RPM給每個RPM的主控方提供了一個單獨的暫存器區域。一般情況下,每個暫存器代表了一些共享資源。通常情況下,主控方通過寫暫存器來請求資源,然後產生一箇中斷給RPM。RPM處理請求,向暫存器中寫確認資訊,然後產生中斷給主控方。 除了主控方特定區域,RPM也提供了一個共享區域,其中包含了共享資源的狀態。只有RPM可以寫狀態區域,主控方只能夠讀取狀態。 RPM包含內部邏輯,用來聚合和仲裁不同RPM主控方的請求。它同PMIC,匯流排仲裁模組,以及始終控制模組都有介面,以便配置共享資源。

軟體描述

RPM驅動封裝了低階RPM互動,就是依賴於讀/寫暫存器和產生/處理中斷的互動;同時也提供了高階同步的set/clear/get介面。 大部分功能使用一個“ID值匹配佇列”,ID表明了對應於某些RPM資源的RPM暫存器,這些值表明了新的資源值。 RPM驅動同步訪問RPM,主要是為了保護多個任務,SMP核心,任務上下文和原子上下文同時訪問。

相關推薦

如何程式進行rpm打包釋出

正如之前提到的,一般專案(程式)的目錄包含pkg資料夾這個中應該編寫與打包對應的例程, 例如我目錄下結構為 [[email protected] /home/clouduser/ZK_Serviced]$ ls  AUTHORS  bin  data  inc

Qt程式各個平臺打包釋出及安裝程式大全

Linux:需要解決依賴庫的問題, 我們使用linuxdeployqt GitHub地址: linuxdeployqt 下載原始碼 並解壓使用Qt Creator編譯Release版本即可, 生成的應用程式拷貝到bin目錄下 sudo mv linuxdeployqt /usr/local/bi

QT5程式完成後打包釋出流程

軟體版本:QT5.9.1 qtcreator-4.3.1 編譯器:mingw530_32 打包工具:Advanced Installer 11.0 qt自帶工具:windeployqt ----------------------先把QT程式編譯成release輸出---------

使用rpmbuild 進行rpm 打包

1.安裝打包工具 Redhat 架構的 Linux 系統是通過 rpmbuild 命令來製作 RPM 安裝包,而 Fedora14 預設情況下 是沒有安裝 rpmbuild 命令,只好手動安裝。 進入 Fedora 14 中,開啟終端,輸入以下命令: $ su -#

Python3.6.3 程式.exe格式打包釋出

主機: win10 Pro Python: Python3.6.3 64位 1, 聯網使用pip 安裝pyinstaller: pip install pyinstaller, pip 會安裝pyinstaller 及其依賴包 2, 命令列模式下切換到原始碼所在目錄執行:p

如何在Unity中程式進行 Android 真機斷點除錯?

在百度上搜索了很久都沒有找到如何在Android上面真機斷點除錯的方法,沒辦法只能科學上網到谷歌上去找,終於在Unity官網上找到了Android真機斷點除錯的辦法。1.首先在手機上開啟USB除錯功能,並安裝驅動(這一步很多手機助手都可以完成)。2.用USB電纜連線手機和電腦。3.確保手機和電腦在一個區域

基於 Istio 與 Kubernetes 應用進行灰度釋出與 Tracing

灰度釋出,是指在黑與白之間,能夠平滑過渡的一種釋出方式。通俗來說,即讓產品的迭代能夠按照不同的灰度策略對新版本進行線上環境的測試,灰度釋出可以保證整體系統的穩定,在初始灰度的時候就可以對新版本進行測試、發現和調整問題,以保證其影響度。KubeSphere 基於 Istio 提供了藍綠部署、金絲雀釋出、流量映象

1、試程式,程序,執行緒的慨念和功能進行比較?

答:程式 是計算機指令的集合它,以檔案的形式儲存在磁碟上。 程序是一個程式在其 自身的地址空間中的一次執行活動。 程序是資源申請、排程和獨立執行的單位,因此,它使用系統中的執行資源,而程式不能申請系統資源,不能被系統排程,也不能作為獨立執行的單位,因此,它不佔系統的執行資源。 執行緒:程序中的一個單一的連續控

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) 最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。我使用的QT版本是。我的電

JMeter學習(十七)JMeter測試Java 目的:Java程式進行測試

目的:對Java程式進行測試   目錄 一、核心步驟 二、例項 三、JMeter Java Sampler介紹 四、自帶Java Request Sampler   一、核心步驟 1.建立一個Java工程; 2.將JMeter的lib目錄下

Linux下打包釋出Qt應用程式

Linux下打包釋出Qt應用程式 Linux下打包釋出Qt應用程式 1. 編譯檔案 2.巧用指令碼檔案 新建檔案 新增指令碼 執行指令碼 打包釋出 Linux

在小程式圖片進行縮放時發生的問題記錄

在做一個小程式時,需要實現不規則的熱點,分別用於實現各自的點選事件。 1、第一種做法:在圖片載入完成後,計算實際縮放比例,然後重新計算每個熱區的尺寸和位置。 <view class="rmq_bg"> <image src="../../asset/img/main_bg.j

Qt 下程式打包釋出

環境 QT 5.4.0   VS2015 1 QT在release版本下執行,生成exe檔案 2 新建一個資料夾,將生成的exe檔案拷貝到其中 3 在開始程式中開啟 QT5.4.0 for Desktop 4 開啟之後是一個命令列工具 5 進入新建的資料夾目錄

QT5的程式打包釋出打包成exe可執行程式

  QT打包的兩種方式: 一個是QT5自帶的windeployqt(不需要下載安裝),它可以找到程式(exe)用到的所有庫檔案,並且都拷貝到exe程式的當前檔案。此時打包的exe較小,需要和拷貝進來的檔案放一起執行,也可以將這些檔案再次打包成一個大的exe檔案,此時用的第二種

通過qt在linux系統下c++進行封裝獲得so庫並在在其他程式中呼叫共享庫

在qt下封裝.so 開啟qt新建專案,選擇這個 2、生成了兩個.h檔案和一個main.c檔案,這裡參照.h檔案構建標頭檔案,宣告函式變數等,也就是展現給客戶使用的部分。 之後在.c檔案中對自己的函式進行定義 點編譯,就可以了,可以看到在專案資料夾中生成了.s

4-QT的程式打包釋出(將QT5的工程專案打包成一個exe程式

https://blog.csdn.net/windsnow1/article/details/78004265  最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。

QT 打包釋出Release應用程式

一、用windepolyqt.exe提取應用程式依賴.dll檔案 QT Creator release的.exe應用程式的執行需要依賴一些動態連結庫,如果在一臺沒有安裝QT的計算機上執行就需要打包動態庫拷貝過去才能執行。QT自帶有windeployqt.exe可執行程式可以

React中專案進行打包後,無法進用serve-s build進行修改路徑

前提:已經安裝進去了create-react-app。 今天早上就關於用命令: npm install -g serve 安裝了serve的包之後,用指令進行修改命令,就發現瞭如下的報錯: 看樣子那個serve的包已經安裝上去了,但是就是出現上面的報錯,在網上

【java小程式】利用ffmpeg視訊進行截圖操作

ffmpeg程式對視訊進行的截圖的命令如下語法如下: ffmpeg.exe -ss 00:00:01 -i spring.mp4 -vframes 1 bb.jpg 00:00:01 擷取視訊圖片的時間。 spring.map4 需要擷取的視訊名稱。 1

使用Python進行Android自動化打包釋出

Python剛入門,都是一些基礎用法。 實現的功能包括,從git更新程式碼->修改apk名稱->上傳到蒲公英->獲取蒲公英返回的二維碼地址 # coding:utf