真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在CentOS/RedHat下實(shí)現(xiàn)根據(jù)源碼包創(chuàng)建rpm包

今天就跟大家聊聊有關(guān)如何在CentOS/RedHat下實(shí)現(xiàn)根據(jù)源碼包創(chuàng)建rpm包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)專注于長(zhǎng)嶺網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供長(zhǎng)嶺營(yíng)銷型網(wǎng)站建設(shè),長(zhǎng)嶺網(wǎng)站制作、長(zhǎng)嶺網(wǎng)頁(yè)設(shè)計(jì)、長(zhǎng)嶺網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造長(zhǎng)嶺網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供長(zhǎng)嶺網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

有時(shí)你可能需要獲取一個(gè)開(kāi)源應(yīng)用的源碼包,但是可能沒(méi)有無(wú)法通過(guò)該應(yīng)用的RPM文件來(lái)安裝到系統(tǒng)。

在這種情況下,你既可以編譯源碼安裝,也可以以源碼包來(lái)創(chuàng)建一個(gè)rpm包文件,實(shí)現(xiàn)安裝應(yīng)用的功能。

同樣存在一種情況即你想要?jiǎng)?chuàng)建一個(gè)你自己開(kāi)發(fā)的自定義的RPM包。

為了創(chuàng)建rpm包,你將需要源碼包(通常為一個(gè)壓縮文件,其內(nèi)也包含了SPEC文件)。

SPEC文件包含以下說(shuō)明:如何創(chuàng)建rpm包,包內(nèi)包含的文件,安裝的路徑。

RPM將展現(xiàn)創(chuàng)建過(guò)程中的測(cè)試過(guò)程。

執(zhí)行spec文件中的prep塊中定義的系統(tǒng)命令和宏命令。

檢測(cè)文件列表的內(nèi)容

執(zhí)行spec文件中的build塊中定義的系統(tǒng)命令和宏命令。在這一步中文件列表中的宏命令也被執(zhí)行。

創(chuàng)建二進(jìn)制包文件

創(chuàng)建源碼包文件

一旦RPM執(zhí)行了上述步驟,將創(chuàng)建二進(jìn)制的包文件和源碼包文件。

二進(jìn)制包文件包含所有安裝或卸載包的額外信息的源文件。

通常安裝包的所有選項(xiàng)都是有平臺(tái)差異的。二進(jìn)制包文件包含為一個(gè)特殊結(jié)構(gòu)而編譯的完整應(yīng)用或函數(shù)庫(kù)。源碼包通常包含原始?jí)嚎s的tar文件,spec文件和創(chuàng)建二進(jìn)制包時(shí)相關(guān)的補(bǔ)丁。

讓我們使用tar文件來(lái)看看如何創(chuàng)建一個(gè)簡(jiǎn)單的源和二進(jìn)制RPM包。

如果你對(duì)rpm包比較陌生,你應(yīng)該首先去理解在CentOS/Redhat上如何使用rpm命令安裝,升級(jí)和卸載包。

1. 安裝rpm-build包

為了創(chuàng)建基于spec文件的rpm文件,我們需要使用rpmbuild命令。

rpmbuild命令是rpm-build包的一部分。安裝過(guò)程如下。

# yum install rpm-build

rpm-build依賴下面的幾個(gè)包。如果你還未安裝,就趕緊自動(dòng)安裝這些包。

elfutils-libelf rpm rpm-libs rpm-python

2. RPM創(chuàng)建目錄

rpm-build命令會(huì)在build階段自動(dòng)創(chuàng)建下列目錄結(jié)構(gòu)。

# ls -lF /root/rpmbuild/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 BUILD/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 BUILDROOT/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 RPMS/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 SOURCES/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 SPECS/drwxr-xr-x. 2 root root 4096 Feb  4 12:21 SRPMS/

注意:上述的目錄結(jié)構(gòu)對(duì)CentOS和Redhat是都適用。你也可以使用/usr/local/redhat命令,但是你想要在build階段修改topdir參數(shù)。如果你使用的是SuSE企業(yè)版Linux,使用 /usr/src/packages目錄。

如果你想使用你自己的命令結(jié)構(gòu)來(lái)代替/root/rpmbuild,你可以使用下列選擇:

使用-buildroot選擇,并在rpmbuild階段定義自定義的目錄。

在rpmrc文件或rpmmacros文件中定義topdir參數(shù)

3. 下載源碼tar文件

接著,下載你想要?jiǎng)?chuàng)建的包的源碼tar文件,并保存在SOURCES目錄下。

在這個(gè)例子中,我使用的是icecase開(kāi)源軟件的源碼包,這時(shí)一個(gè)流多媒體服務(wù)器軟件。但是這些步驟在創(chuàng)建其他rpm包時(shí)都是相同。你只需要下載你想要的軟件的源碼包即可。

# cd /root/rpmbuild/SOURCES/# wget http://downloads.xiph.org/releases/icecast/icecast-2.3.3.tar.gz# ls -l-rw-r--r--. 1 root root 1161774 Jun 11  2012 icecast-2.3.3.tar.gz

4. 創(chuàng)建spec文件

在這一步中,我們通過(guò)創(chuàng)建一個(gè)spec文件來(lái)定義創(chuàng)建過(guò)程。這個(gè)spec文件通常包含下列8個(gè)不同的塊:

  • Preamble – preamable塊包含了被創(chuàng)建包的信息和定義相關(guān)依賴。通常它是一些行,以標(biāo)簽信息開(kāi)頭,后接冒號(hào),而后是一些說(shuō)明信息。

  • %prep – 在這一個(gè)塊中,我們將為創(chuàng)建過(guò)程準(zhǔn)備軟件。在此過(guò)程中,任何先前的創(chuàng)建都被刪除,而源文件(. tar)文件被擴(kuò)展,等等。 一個(gè)更關(guān)鍵的事情是要了解可用的有預(yù)定義宏命令,可以執(zhí)行各種快捷選項(xiàng)來(lái)構(gòu)建rpm包。當(dāng)您嘗試創(chuàng)建一個(gè)復(fù)雜的包時(shí),您可能正在使用這個(gè)宏命令。在下面的示例中,我使用了一個(gè)名為% setup的宏,它刪除了先前的創(chuàng)建,解壓源文件并更改文件的權(quán)限。您還可以在% prep部分中使用sh腳本執(zhí)行此操作,但是% setup宏使用預(yù)定義的sh腳本簡(jiǎn)化了流程。

  • %description – 描述塊通常包含對(duì)包的描述信息

  • %build – 這個(gè)是真正執(zhí)行build指令的塊。通常是一個(gè)sh腳本。

  • %install – %install塊也是作為sh腳本來(lái)執(zhí)行的,就像%prep和%build塊。這時(shí)安裝階段的步驟

  • %files –這個(gè)塊包含了這個(gè)包的一系列文件。不在此塊中的文件將不可用。要求是完整的路徑,并且在此塊中你可以設(shè)置文件的屬性和權(quán)限。

  • %clean – 這個(gè)塊是為了清理那些不是應(yīng)用正常創(chuàng)建區(qū)域的其他文件。舉個(gè)例子來(lái)說(shuō):如果應(yīng)用在創(chuàng)建過(guò)程中在/tmp目錄下創(chuàng)建了一個(gè)臨時(shí)目錄結(jié)構(gòu),它將不會(huì)被移除;但是如果在該塊中定義了,那么在正確安裝后臨時(shí)目錄將被移除。

下面是icecast.spec文件

# cat /root/rpmbuild/SPECS/icecast.specName:           icecast Version:        2.3.3Release:        0Summary:        Xiph Streaming media server that supports multiple formats. Group:          Applications/Multimedia License:        GPL URL:            http://www.icecast.org/ Vendor:         Xiph.org Foundation team@icecast.org Source:         http://downloads.us.xiph.org/releases/icecast/%{name}-%{version}.tar.gz Prefix:         %{_prefix} Packager:   Karthik BuildRoot:      %{_tmppath}/%{name}-root  %description Icecast is a streaming media server which currently supports Ogg Vorbisand MP3 audio streams. It can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for commuincation and interaction.  %prep %setup -q -n %{name}-%{version}  %build CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} --mandir=%{_mandir} --sysconfdir=/etc  make  %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT  make DESTDIR=$RPM_BUILD_ROOT install rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}  %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT  %files %defattr(-,root,root) %doc README AUTHORS COPYING NEWS TODO ChangeLog %doc doc/*.html %doc doc/*.jpg %doc doc/*.css %config(noreplace) /etc/%{name}.xml %{_bindir}/icecast %{_prefix}/share/icecast/*  %changelog  In this file, under % prep section you may noticed the macro “%setup -q -n %{name}-%{version}”. This macro executes the following command in the background.  cd /usr/src/redhat/BUILD rm -rf icecast gzip -dc /usr/src/redhat/SOURCES/icecast-2.3.3.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then   exit $? fi cd icecast cd /usr/src/redhat/BUILD/icecast chown -R root.root . chmod -R a+rX,g-w,o-w .

在% build部分中,您將看到帶有配置選項(xiàng)的CFLAGS,它定義了在RPM安裝期間可以使用的選項(xiàng)和前綴選項(xiàng),強(qiáng)制目錄用于安裝和sysconfig目錄,系統(tǒng)文件需要在該目錄下復(fù)制。

在這一行中,您將看到make實(shí)用程序,它決定需要編譯的文件列表,并適當(dāng)?shù)鼐幾g它們。

在%安裝部分中,“make install”的%安裝下面的行用于從前面的步驟中編譯的二進(jìn)制文件,并安裝或?qū)⑺鼈儚?fù)制到適當(dāng)?shù)奈恢茫@樣它們就可以被訪問(wèn)。

5. 使用rpmbuild命令創(chuàng)建rpm文件

一旦SPEC文件準(zhǔn)備好,您就可以開(kāi)始使用rpm - b命令來(lái)構(gòu)建rpm了。b選項(xiàng)用于執(zhí)行構(gòu)建過(guò)程的所有階段。如果您在這個(gè)階段看到任何錯(cuò)誤,那么您需要在再次嘗試之前解決它。錯(cuò)誤通常是庫(kù)依賴項(xiàng),您可以在需要時(shí)下載并安裝它。

# cd /root/rpmbuild/SPECS# rpmbuild -ba icecast.specExecuting(%prep): /bin/sh -e /var/tmp/rpm-tmp.Kohe4t + umask 022 + cd /root/rpmbuild/BUILD + cd /root/rpmbuild/BUILD + rm -rf icecast-2.3.3 + /usr/bin/gzip -dc /root/rpmbuild/SOURCES/icecast-2.3.3.tar.gz + /bin/tar -xf - + STATUS=0 + '[' 0 -ne 0 ']'+ cd icecast-2.3.3 + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.ynm7H7 + umask 022 + cd /root/rpmbuild/BUILD + cd icecast-2.3.3 + CFLAGS='-O2 -g'+ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for gcc... gcc .. .. .. Wrote: /root/rpmbuild/SRPMS/icecast-2.3.3-0.src.rpm Wrote: /root/rpmbuild/RPMS/x86_64/icecast-2.3.3-0.x86_64.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.dzahrv + umask 022 + cd /root/rpmbuild/BUILD + cd icecast-2.3.3 + '[' /root/rpmbuild/BUILDROOT/icecast-2.3.3-0.x86_64 '!=' / ']'+ rm -rf /root/rpmbuild/BUILDROOT/icecast-2.3.3-0.x86_64 + exit 0

注意:如果你使用的是SuSE linux,如果rpmbuild工具不可用,試試使用“rpm -ba” 去創(chuàng)建rpm包。

在安裝過(guò)程中,你可能會(huì)注意到如下錯(cuò)誤信息:

錯(cuò)誤1: XSLT配置文件未被找到

checking for xslt-config... noconfigure: error: XSLT configuration could not be founderror: Bad exit status from /var/tmp/rpm-tmp.8J0ynG (%build) RPM build errors:     Bad exit status from /var/tmp/rpm-tmp.8J0ynG (%build)

解決方法1: 安裝libxstl-devel

yum install libxstl-devel

將同時(shí)安裝如下依賴包:

  • libgcrypt

  • libgcrypt-devel

  • libgpg-error-devel

錯(cuò)誤2: libvorbis錯(cuò)誤

checking for libvorbis... configure: error: must have Ogg Vorbis v1.0 or above installederror: Bad exit status from /var/tmp/rpm-tmp.m4Gk3f (%build)

解決方法2: 安裝libvorbis-devel

yum install libvorbis-devel

將同時(shí)安裝如下依賴包:

  • libogg

  • libogg-devel

  • libvorbis

6. 驗(yàn)證源和二進(jìn)制RPM包

一旦rpmbuild命令成功運(yùn)行結(jié)束,你可以在下列命令下驗(yàn)證源碼rpm包和二進(jìn)制rpm包文件。

# ls -l /root/rpmbuild/SRPMS/-rw-r--r-- 1 root root 1162483 Aug 25 15:46 icecast-2.3.3-0.src.rpm# ls -l /root/rpmbuild/RPMS/x86_64/-rw-r--r--. 1 root root 349181 Feb  4 12:54 icecast-2.3.3-0.x86_64.rpm7. Install the RPM File to Verify

作為***的步驟,你可以安裝二進(jìn)制包來(lái)驗(yàn)證是否成功安裝,以及所有的依賴都被滿足。

# rpm -ivvh /root/rpmbuild/RPMS/x86_64/icecast-2.3.3-0.x86_64.rpmD: ============== /root/rpmbuild/RPMS/x86_64/icecast-2.3.3-0.x86_64.rpmD: loading keyring from pubkeys in /var/lib/rpm/pubkeys/*.keyD: couldn't find any keys in /var/lib/rpm/pubkeys/*.keyD: loading keyring from rpmdbD: opening  db environment /var/lib/rpm cdb:mpool:joinenvD: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0D:  read h#     210 Header sanity check: OKD: added key gpg-pubkey-c105b9de-4e0fd3a3 to keyringD: Using legacy gpg-pubkey(s) from rpmdbD: Expected size:       349181 = lead(96)+sigs(180)+pad(4)+data(348901)D:   Actual size:       349181D: ========== relocationsD:      added binary package [0]D: found 0 source and 1 binary packagesD: ========== +++ icecast-2.3.3-0 x86_64/linux 0x2.. ..

安裝完成后可以驗(yàn)證是否成功。

# rpm -qa icecasticecast-2.3.3-0.x86_64

看完上述內(nèi)容,你們對(duì)如何在CentOS/RedHat下實(shí)現(xiàn)根據(jù)源碼包創(chuàng)建rpm包有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


文章名稱:如何在CentOS/RedHat下實(shí)現(xiàn)根據(jù)源碼包創(chuàng)建rpm包
文章網(wǎng)址:http://weahome.cn/article/ihihji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部