打造自己小小的RPM包

關于源碼RPM包的安裝于制作

什么是RPMSRPM? 1

    RPM: 1

    SRPM: 2

    SRPM的安裝 2

.利用rpmbuild默認安裝SRPM檔案 2

二.配置路徑與需要的軟件功能模塊 3

    1.安裝RPM源碼包 3

    2.查看主配置文件: 3

    3.修改主配置文件部分內容后,我們就需要把文件重新打包成rpm包了。 7

    4 執行 rpmbuild  -barpmbuild -bb命令后,系統會做一下的事情: 7

§·打造屬于自己的小的RPM 8

    準備兩個小程序和makefile文件,簡單的C語言寫的,內容如下: 8

    準備了源代碼 makefile文件后,我們制作屬于自己的RPM程序包。 8

    以上文件都準備好了以后,我們就使用rpmbuild軟件可以生成我們自己的軟件了。 10

   安裝制作好的RPM軟件,我們在沒有安裝之前可以查看下我們的自己RPM包的信息。 11

    測試制作好的軟件包。 12

小結: 12

 

什么是RPMSRPM?

RPM:

RPM是以一種數據庫記錄的方式將你所需要的軟件安裝到你的Linux系統的一套管理機制

Rpm包的最大特點就是將你要安裝的軟件先編譯過,并且打包成為rpm機制的文件包,透過打包好的軟件里面默認的數據記錄,記錄這個軟件要安裝的時候必須具備的相依賴的軟件,當安裝在Linux主機上時,RPM會先依照軟件里頭的數據查詢Linux主機的相依賴軟件是否滿足,滿足則安裝,不滿足則不安裝。

安裝的時候就將該軟件的信息整個的寫入RPM的數據庫中,以便未來的查詢,驗證和反安裝,RPM包就有以下優點:

1.由于已經編譯完成并且打包好,所以軟件在傳輸與安裝上就很方便(不需要重新編譯);

2.由于軟件的信息都記錄在Linux主機的RPM數據庫中,方便查詢,升級,卸載等。

由于RPM已經打包好,并且只能在固定主機環境中才能安裝,所以有就有以下的缺點:

1.軟件程序安裝的環境必須與打包時的環境需求一致或相當;

2.需要滿足軟件的依賴性需求;

3.反安裝時要特別注意,底層軟件不可移除,否則可能造成整個系統的崩潰。(比如移除 bash)

 

SRPM:

我們想要安裝其他發布版提供好用的RPM軟件怎么辦,就有一個叫SRPM的軟件包,它就是 source RPM的意思,這個RPM中含有源代碼,并且沒有編譯過。

通常情況下 srpm的擴展名為: ****.src.rpm 的格式命令,它還提供了參數配置文件(configuremakefile),所以我們下載的是SRPM,我們就需要安裝該軟件時,必須要經過一下的步驟:

1.先將該軟件以RPM管理的方式編譯,此時SRPM會被編譯為RPM文件包;

2.然后將編譯完成的RPM文件包安裝到linux系統當中即可。

SRPM的安裝

我們在網上下載了一個包含soure codeSRPM的軟件包,我們如何安裝呢?

.利用rpmbuild默認安裝SRPM檔案

選項主要有兩個:

–rebuild  : 這個選項會將后面的SRPM進行 編譯 與 打包 ,最后生成RPM程序包,這個就是編譯完成的RPM文件,我們使用RPM正常安裝即可。

–recompile :這個選項有前面 –rebuild的全部操作,并且會安裝編譯打包好的 RPM包。

舉例:

[root@centos68 srpm_dir]# rpmbuild --rebuild bzip2-1.0.5-6.1.el6.src.rpm 
Installing bzip2-1.0.5-6.1.el6.src.rpm
warning: InstallSourcePackage at: psm.c:244: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.tFvvbs
+ umask 022
+ cd /root/rpmbuild/BUILD
............................................................
Wrote: /root/rpmbuild/RPMS/x86_64/bzip2-debuginfo-1.0.5-6.1.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.k79SmE
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd bzip2-1.0.5
+ rm -rf /root/rpmbuild/BUILDROOT/bzip2-1.0.5-6.1.el6.x86_64
+ exit 0
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.yeIhO9
+ umask 022
+ cd /root/rpmbuild/BUILD
+ rm -rf bzip2-1.0.5
+ exit 0
[root@centos68 srpm_dir]# 
[root@centos68 x86_64]# ls
bzip2-1.0.5-6.1.el6.x86_64.rpm            bzip2-devel-1.0.5-6.1.el6.x86_64.rpm
bzip2-debuginfo-1.0.5-6.1.el6.x86_64.rpm  bzip2-libs-1.0.5-6.1.el6.x86_64.rpm
[root@centos68 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64  #系統編譯自動生成的目錄
[root@centos68 x86_64]#

二.配置路徑與需要的軟件功能模塊

SRPM使用的路徑與需要的軟件,SRPM在進行編譯的時候會使用到哪些目錄,我們就知道如何修改的,無論是哪系統版本通常情況下:在 /usr/src/redhat/為工作目錄,或者其他的工作目錄,一般都在/usr/src/下面的目錄,我們看看有哪些需要使用到的目錄吧!

6.8上生成的地方為: /root/rpmbuild 可能是與其他的版本的不同吧,我的是 centos6.8的系統使用root賬號登錄的。

1.安裝RPM源碼包

[root@centos68 srpm_dir]# rpm -i bzip2-1.0.5-6.1.el6.src.rpm  --nosignature #安裝源碼RPM包
[root@centos68 rpmbuild]# ls
SOURCES  SPECS
[root@centos68 rpmbuild]# tree
.
├── SOURCES
│   ├── bzip2-1.0.4-bzip2recover.patch   #補丁文件
│   ├── bzip2-1.0.4-cflags.patch #補丁文件
│   ├── bzip2-1.0.4-saneso.patch  #補丁文件
│   └── bzip2-1.0.5.tar.gz   #源代碼
└── SPECS
    └── bzip2.spec  #主配置文件
 
2 directories, 5 files
[root@centos68 rpmbuild]#

2.查看主配置文件:

 

[root@centos68 SPECS]# cat bzip2.spec 
%define library_version 1.0.4   
Summary: A file compression utility   #軟件基本信息
Name: bzip2
Version: 1.0.5
Release: 6.1%{?dist}
License: BSD
Group: Applications/File
URL: http://www.bzip.org/
Source: http://www.bzip.org/%{version}/bzip2-%{version}.tar.gz
Patch0: bzip2-1.0.4-saneso.patch
Patch5: bzip2-1.0.4-cflags.patch
Patch6: bzip2-1.0.4-bzip2recover.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
%description  #軟件的描述信息
Bzip2 is a freely available, patent-free, high quality data compressor.
Bzip2 compresses files to within 10 to 15 percent of the capabilities 
of the best techniques available.  However, bzip2 has the added benefit 
of being approximately two times faster at compression and six times 
faster at decompression than those techniques.  Bzip2 is not the 
fastest compression utility, but it does strike a balance between speed 
and compression capability.
 
Install bzip2 if you need a compression utility.
 
%package devel
Summary: Header files developing apps which will use bzip2
Group: Development/Libraries
Requires: bzip2-libs = %{version}-%{release}
 
%description devel
 
Header files and a library of bzip2 functions, for developing apps
which will use the library.
 
%package libs
Summary: Libraries for applications using bzip2
Group: System Environment/Libraries
 
%description libs
 
Libraries for applications using the bzip2 compression format.
#編譯前的預處理,以及編譯過程中需要用到的指令。
#尤其%build底下的數據,幾乎就是makefile里面的信息
%prep
%setup -q 
%patch0 -p1 -b .saneso
%patch5 -p1 -b .cflags
%patch6 -p1 -b .bz2recover
 
%build  #編譯開始
 
make -f Makefile-libbz2_so CC="%{__cc}" AR="%{__ar}" RANLIB="%{__ranlib}" \
CFLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64 -fpic -fPIC" \
%{?_smp_mflags} all
 
rm -f *.o
make CC="%{__cc}" AR="%{__ar}" RANLIB="%{__ranlib}" \
CFLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" \
%{?_smp_mflags} all
 
%install  #安裝的過程
rm -rf ${RPM_BUILD_ROOT}
 
chmod 644 bzlib.h 
mkdir -p $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1,/%{_lib},%{_libdir},%{_includedir}}
cp -p bzlib.h $RPM_BUILD_ROOT%{_includedir}
install -m 755 libbz2.so.%{library_version} $RPM_BUILD_ROOT/%{_lib}
install -m 755 bzip2-shared  $RPM_BUILD_ROOT%{_bindir}/bzip2
install -m 755 bzip2recover bzgrep bzdiff bzmore  $RPM_BUILD_ROOT%{_bindir}/
cp -p bzip2.1 bzdiff.1 bzgrep.1 bzmore.1  $RPM_BUILD_ROOT%{_mandir}/man1/
ln -s bzip2 $RPM_BUILD_ROOT%{_bindir}/bunzip2
ln -s bzip2 $RPM_BUILD_ROOT%{_bindir}/bzcat
ln -s bzdiff $RPM_BUILD_ROOT%{_bindir}/bzcmp
ln -s bzmore $RPM_BUILD_ROOT%{_bindir}/bzless
ln -s libbz2.so.%{library_version} $RPM_BUILD_ROOT/%{_lib}/libbz2.so.1
ln -s ../../%{_lib}/libbz2.so.1 $RPM_BUILD_ROOT/%{_libdir}/libbz2.so
ln -s bzip2.1 $RPM_BUILD_ROOT%{_mandir}/man1/bzip2recover.1
ln -s bzip2.1 $RPM_BUILD_ROOT%{_mandir}/man1/bunzip2.1
ln -s bzip2.1 $RPM_BUILD_ROOT%{_mandir}/man1/bzcat.1
ln -s bzdiff.1 $RPM_BUILD_ROOT%{_mandir}/man1/bzcmp.1
ln -s bzmore.1 $RPM_BUILD_ROOT%{_mandir}/man1/bzless.1
 
 
%post libs -p /sbin/ldconfig
 
%postun libs  -p /sbin/ldconfig
 
%clean
rm -rf ${RPM_BUILD_ROOT}
 
%files
%defattr(-,root,root,-)
%doc LICENSE CHANGES README 
%{_bindir}/*
%{_mandir}/*/*
 
%files libs
%defattr(-,root,root,-)
/%{_lib}/*so.*
 
%files devel
%defattr(-,root,root,-)
%doc manual.html manual.pdf
%{_includedir}/*
/%{_libdir}/*so
 
%changelog  #chagelog日志
* Mon Nov 30 2009 Dennis Gregorovic <dgregor@redhat.com> - 1.0.5-6.1
- Rebuilt for RHEL 6
 
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 
* Tue Mar 17 2009 Ivana Varekova <varekova@redhat.com> 1.0.5-5
- remove static library
 
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
 
* Mon Sep  1 2008 Ivana Varekova <varekova@redhat.com> 1.0.5-3
- minor spec file changew
 
* Thu Apr 10 2008 Ivana Varekova <varekova@redhat.com> 1.0.5-2
- Resolves: #441775
  fix libs link
 
* Tue Mar 25 2008 Ivana Varekova <varekova@redhat.com> 1.0.5-1
- update to 1.0.5
 
* Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.0.4-14
- Autorebuild for GCC 4.3
 
* Wed Jan 23 2008 Ivana Varekova <varekova@redhat.com> 1.0.4-13
- rebuild
 
* Mon May 21 2007 Ivana Varekova <varekova@redhat.com> 1.0.4-12
- fix *.so,*.a directory
 
* Mon May 21 2007 Ivana Varekova <varekova@redhat.com> 1.0.4-11
- remove libbz2.* from /usr/lib* to /lib*
 
* Wed Apr  4 2007 Ivana Varekova <varekova@redhat.com> 1.0.4-10
- change libz.a permissions
 
* Wed Apr  4 2007 Ivana Varekova <varekova@redhat.com> 1.0.4-9
- remove useless -p 
 
* Thu Mar 15 2007 Ivana Varekova <varekova@redhat.com> 1.0.4-8
- remove unnecessary "/" after RPM_BUILD_ROOT macro
 
* Mon Feb 19 2007 Jesse Keating <jkeating@redhat.com> 1.0.4-7
- Temporarily add static lib back in for rpm

通過以上的配置文件的了解主要有一下的這些東西:

Summary : 軟件的基本介紹和說明!

Name :軟件的名稱

Version :軟件的版本

Release :軟件打包的次數

License :授權機構

Group :軟件團體的名稱

Url :原始代碼的官方鏈接

Source :軟件來源

Patch 作為補丁的文件

BuildRoot  編譯過程中,設定那個目錄為臨時編譯目錄。

Requires  相關依賴的問題

Packager  這個軟件是經由誰來打包的

 

3.修改主配置文件部分內容后,我們就需要把文件重新打包成rpm包了。

在配置文件的目錄下:

 

[root@centos68 SPECS]# rpmbuild  -ba bzip2.spec 
#編譯并同時產生RPM與SRPM文件
 
[root@centos68 SPECS]# rpmbuild -bb bzip2.spec 
#僅編譯成RPM文件
 
[root@centos68 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@centos68 x86_64]# ls
bzip2-1.0.5-6.1.el6.x86_64.rpm            bzip2-devel-1.0.5-6.1.el6.x86_64.rpm
bzip2-debuginfo-1.0.5-6.1.el6.x86_64.rpm  bzip2-libs-1.0.5-6.1.el6.x86_64.rpm

4 執行 rpmbuild  -barpmbuild -bb命令后,系統會做一下的事情:

1. 先進入 BUILD 這個目錄中,也是: /root/rpmbuild/BUILD 這個目錄;

2. 依照 *.spec 文字中的 Name Version 定義出工作的目錄名稱,以我們上面的例子為例,那舉系統就會在 BUILD 目錄中先刪除 bzip2-1.0.5 的目錄,再重新建立一個 bzip2-1.0.5 的目錄,再進入該目錄;

3. 在新建的目錄里面,針對 SOURCES 目錄下的來源檔案,也就是 *.spec 里面的 Source 設定的那個檔案,以 tar 進行解壓縮,以我們這個例子來說,則會在  /root/rpmbuild/BUILD/bzip2-1.0.5 當中,將/root/rpmbuild/SOURCES/bzip2-1.0.5.tar.gz 進行解壓縮

4. 再來開始 %build %install 的設定與編譯!

5. 最后將完成打包的檔案給他放置到該放置的地方去,如果你的規定的硬件是在 i386 的系統,那舉最后編譯成功的 *.i386.rpm檔案就會被放置在 /root/rpmbuildRPMS/i386 里面啰!如果是 i686 那舉自然就是 /root/rpmbuildRPMS/i686 目錄下!

 

 

§·打造屬于自己的小的RPM

準備兩個小程序和makefile文件,簡單的C語言寫的,內容如下:

[root@centos68 bin]# ls
1.c  echo_2.c  makefile
[root@centos68 bin]# cat  1.c   #程序1  1.c
#include<stdio.h>  #簡單的顯示程序,在屏幕上顯示幾行字。
int main(void){
printf("大家好 xxx;\n");
printf("我叫xxx;\n");
printf("很高興認識大家;\n");
printf("今天就搞懂一個問題\n");
printf("關于程序方面的問題\n");
printf("希望大家有所收獲!\n");
echo_2();  #調用子程序 echo_2.c
}
 
 
[root@centos68 bin]# cat echo_2.c  #程序2    echo_.c
#include<stdio.h>   #也是簡單的顯示幾行字
void echo_2(void)
{
printf("--------------------------\n");
printf("1 make makefile\n");
printf("2 configure\n");
printf("3 簡單的程序基礎知識\n");
printf("4 制作自己的小RPM軟件\n");
printf("--------------------------\n");
}
[root@centos68 onesb-0.1]# cat makefile    makefile文件
onesb: 1.o echo_2.o
       gcc -o onesb 1.o echo_2.o
install:
       Install  -m  755  onesb  $(RPM_INSTALL_ROOT)  /usr/local/bin/onesb

 

準備了源代碼 makefile文件后,我們制作屬于自己的RPM程序包。

把源代碼 makefile文件打包成一個文件夾

[root@centos68 SOURCES]# tar -ztvf onesb-0.1.tar.gz 
drwxr-xr-x root/root         0 2016-08-23 18:37 onesb-0.1/
-rw-r--r-- root/root       303 2016-08-23 17:30 onesb-0.1/1.c
-rw-r--r-- root/root       266 2016-08-23 17:32 onesb-0.1/echo_2.c
-rw-r--r-- root/root       120 2016-08-23 18:10 onesb-0.1/makefile
[root@centos68 SOURCES]# 
注意:需要建立一個軟件名稱+版本號同名的文件夾,把所有的文件放在文件夾里面再打成一個軟件名+版本號+tar.gz的文件

 

1.建立編譯工作目錄;把相應的文件放在相應的目錄下

  centos 6.8上 管理員登陸系統,在自己家目錄下建立以下幾個文件:

[root@centos68 rpmbuild]# pwd
/root/rpmbuild
[root@centos68 rpmbuild]# 
 
[root@centos68 rpmbuild]# tree
.
├── SOURCES
│   └── onesb-0.1.tar.gz
└── SPECS
    └── onesb.spec
 
2 directories, 2 files

注意:建立目錄為: /root/rpmbuild   ,  /root/rpmbuild/SOURCES   ,  /root/rpmbuild/SPECS  

將打包好的文件  onesb-0.1.tar.gz 放在 /root/rpmbuild/SOURCES 下,在/root/rpmbuild/SPECS 新建一個文件onesb.spec, onesb.spec的內容如下

[root@centos68 SPECS]# cat onesb.spec 
Summary: onesb-317005239@qq.com #軟件的說明信息
Name: onesb #軟件名稱與tar.gz文件要相同
Version: 0.1 #軟件版本與tar.gz文件要相同
Release: 1 #編譯的次數
License: megeedu  #可以隨意填寫
Group: ChenHome   #隨意填寫
URL: http://www.megeedu.org/    #隨意填寫
Source: onesb-0.1.tar.gz  #一定要與自己tar.gz文件一樣
Packager:Chen
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root #只知道大概,不知道具體的含義
%description    #描述信息
317005239@qq.com 
 
%prep   #軟件預處理階段
%setup -q
 
%build  #開始編譯階段
make
%install  #生成RPM階段
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/local/bin
make install RPM_INSTALL_ROOT=%{buildroot}
 
%files
/usr/local/bin/onesb
 
%changelog  #軟件更新日志
*Wed Jul 08 2016 <317005239@qq.com> -0.1
-mageedu.com
[root@centos68 SPECS]#

以上文件都準備好了以后,我們就使用rpmbuild軟件可以生成我們自己的軟件了。

[root@centos68 SPECS]# rpmbuild  --ba  onesb.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.yaBjpy
+ umask 022
+ cd /root/rpmbuild/BUILD #進入到目錄
+
+ export LANG
+ unset DISPLAY  #準備一些環境
+ cd /root/rpmbuild/BUILD
+ rm -rf onesb-0.1
+ /bin/tar -xf -
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/onesb-0.1.tar.gz   #貌似是解壓文件
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd onesb-0.1   #進入到解壓文件目錄
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.CMQQNb
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd onesb-0.1
+
+ export LANG
+ unset DISPLAY
+ make    #安裝makefile文件進行編譯的操作
cc    -c -o 1.o 1.c
cc    -c -o echo_2.o echo_2.c
gcc -o onesb 1.o echo_2.o
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.g8IxpP
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
++ dirname /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
+ cd onesb-0.1
+
+ export LANG
+ unset DISPLAY
+ rm -rf /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64/usr/local/bin
+ make install RPM_INSTALL_ROOT=/root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
install -m 755 onesb /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64/usr/local/bin/onesb
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /root/rpmbuild/BUILD/onesb-0.1
extracting debug info from /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64/usr/local/bin/onesb
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: onesb-0.1-1.x86_64
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) rtld(GNU_HASH)
Processing files: onesb-debuginfo-0.1-1.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64
warning: Could not canonicalize hostname: centos68.qq.com
Wrote: /root/rpmbuild/SRPMS/onesb-0.1-1.src.rpm      #生成我們需要的rpm源碼文件
Wrote: /root/rpmbuild/RPMS/x86_64/onesb-0.1-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/onesb-debuginfo-0.1-1.x86_64.rpm #生成我們需要的rpm軟件
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.1unwdr
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd onesb-0.1
+ /bin/rm -rf /root/rpmbuild/BUILDROOT/onesb-0.1-1.x86_64 
+ exit 0
[root@centos68 SPECS]#

安裝制作好的RPM軟件,我們在沒有安裝之前可以查看下我們的自己RPM包的信息。

[root@centos68 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
#我們制作好的軟件包生成路徑在  /root/rpmbuild/RPMS/x86_64 
[root@centos68 x86_64]# rpm -qpi onesb-0.1-1.x86_64.rpm 
#查詢我們生成的軟件包的信息
Name        : onesb                        Relocations: (not relocatable)
Version     : 0.1                               Vendor: (none)
Release     : 1                             Build Date: Tue 23 Aug 2016 07:28:11 PM CST
Install Date: (not installed)                Build Host: centos68.qq.com
Group       : ChenHome                      Source RPM: onesb-0.1-1.src.rpm
Size        : 4656                             License: megeedu
Signature   : (none)
Packager    : Chen
URL         : http://www.megeedu.org/
Summary     : onesb-317005239@qq.com
Description :
317005239@qq.com
[root@centos68 x86_64]# rpm -qpl onesb-0.1-1.x86_64.rpm 
#查詢軟件包安裝會產生的文件
/usr/local/bin/onesb
[root@centos68 x86_64]#

測試制作好的軟件包。

[root@centos68 x86_64]# rpm -ivh onesb-0.1-1.x86_64.rpm 
Preparing...                ########################################### [100%]
package onesb-0.1-1.x86_64 is already installed
[root@centos68 RPMS]# onesb 
大家好 xxxxxx;
我叫xxxxx;
很高興認識大家;
今天就搞懂一個問題
關于程序方面的問題
希望大家有所收獲!
--------------------------
1 make makefile
2 configure
3 簡單的程序基礎知識
4 制作自己的小RPM軟件
--------------------------
[root@centos68 RPMS]#

小結:

通過制作自己的小的RPM軟件包,大概了解在Centos中關于RPM包,SRPM包的相關管理概念,對于linux中的源代碼編譯有大概的了解。

對于為什么需要使用yum ,為什么需要源碼編譯,關于gcc 編程有簡單的認識,對于make命令的執行過程有部分的認識,為什么需要使用./configure生成makefile文件有簡單的了解,對以后學習還有所幫助。

原創文章,作者:linux_root,如若轉載,請注明出處:http://www.www58058.com/39323

(0)
linux_rootlinux_root
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • LVM創建實例及相關注釋

    LVM創建    pv—>vg—->lv—->快照 創建前準備了四塊1g硬盤分別為:sdb  sdc sdd  sde,并分別給四塊盤劃分了1G的空間,并指定了分區系統類型為8e(即Linux LVM) [root@localhost ~]# fdisk /dev/…

    Linux干貨 2015-06-08
  • dd命令詳解

    dd命令: convert and copy a file用法:  dd if=/PATH/FROM/SRC of=/PATH/TO/DEST   bs=#: block size, 復制單元大小   count=#:復制多少個bs   of=fil…

    Linux干貨 2017-03-19
  • man使用手冊

    Linux下man的各章節使用介紹        1 – commands     2 – system calls     3 – library calls  &nbsp…

    Linux干貨 2016-10-18
  • 解決線上服務器httpd無法反向代理resin的解決方法

    一、簡述   前兩天有后端的小伙伴跟我反映說使用httpd反向代理resin時遇到的問題,在做網站管理后臺的時候,發起的http的put,delete的請求無法經由resin傳遞到后面的dbserver。當時的第一反應就是httpd的反向代理設置出現的問題,但是關于httpd反代resin的內容在網上機會搜索不到。于是,查看httpd反代tomca…

    Linux干貨 2017-01-11
  • 第一周作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echou、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及共用規定。

    Linux干貨 2017-12-03
  • 第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 1.POST 開機加電自檢,對計算機的cpu,硬盤,內存等進行檢測。 2.BIOS 對引導程序進行探測,并把控制權交給引導程序。 3.MBR Master bootloader record主引導程序.通常位于硬盤第一扇區/dev/hda(0,0)或/dev/sda(0,0). 此階…

    Linux干貨 2017-03-30
欧美性久久久久