打造自己小小的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.speconesb.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 10:12
下一篇 2016-08-24 10:12

相關推薦

  • DNS從入門到管理(一)

    DNS從入門到管理(一) DNS概念 DNS三步法 反向解析 主從DNS服務器的實現 子域授權 智能DNS 壓力測試與DNS排錯 DNS概述 DNS(Domain NameSystem,域名系統),域名和IP地址相互映射的一個分布式數據庫,通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。而DNS的主要作用,就是域名解析,將主機名解析成IP地址。…

    Linux干貨 2016-10-06
  • 干貨 | 20 行 Python 代碼創建可視化地圖

    當我開始建造Vincent時, 我的一個目的就是使得地圖的建造盡可能合理化. 有一些很棒的python地圖庫-參見Basemap?和?Kartograph能讓地圖更有意思. 我強烈推薦這兩個工具, 因為他們都很好用而且很強大. 我想有更簡單一些的工具,能依靠Vega的力量并且允許簡單的語法點到geoJSON文件,詳細描述一個投影和大小/比列,最后輸出地圖. …

    2017-09-08
  • grep及正則表達式相關練習

    grep及正則表達式相關練習 1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]# ls -ld /home/tuser1 drwx&#821…

    Linux干貨 2016-10-11
  • Linux磁盤管理詳解

    linux磁盤管理 添加磁盤步驟: fdisk 管理磁盤分區 格式化文件系統。 設備掛載 開機自動掛載 UUID掛載 取消掛載點 Parted(gpt大于2G分區) 查看文件系統的使用情況。 df 查看掛載信息與磁盤使用量 du 查看使用量 查看分區狀況lsblk 查看設備信息blkid linux磁盤管理 當全新安裝了一塊新的硬盤設備后,為了更充分、安全的…

    Linux干貨 2016-09-07
  • 初探VIM_第六周練習(02)

    引言—什么是Vim? 接觸Linux這么久,想必對于一切皆文件的哲學思想已經不陌生了。因此,學習并掌握用一款Linux文本編輯器,對于玩轉LInux來說,是很有必要的。 vi編輯器是Unix系統最初的編輯器,它使用控制臺圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文件中移動、插入、編輯和替換文本。 在GNU項目將vi編輯器移植到開源世界時,…

    Linux干貨 2016-12-18
  • yum源設置

      yum是我們經常用到的一個程序,我們主要用它來安裝或刪除安裝包,下面我來介紹一下怎樣配置yum安裝源?    配置yum安裝源主要有兩種方法:一種是用本地鏡像做安裝源,二是用提供鏡像下載的網站做安裝源。    一 配置本地安裝源    本地安裝源需要有系統鏡像,操作步驟如下:…

    Linux干貨 2016-01-16
欧美性久久久久