打造自己小小的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.178linux.com/39323

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

相关推荐

  • HAProxy基于KeepAlived实现Web高可用及动静分离

    前言 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。HAProxy相比LVS的使用要简单很多,但跟LVS一样,HAProxy自己并不能实现高可用,一旦HAProxy节点故障,将会影响整个站点。本文带来的是HAProxy基…

    Linux干货 2015-06-25
  • 软件包管理 — rpm & yum

    软件包管理 包管理器     二进制应用程序的组成部分:         二进制文件、库文件、配置文件、帮助文件     程序包管理器:      &…

    Linux干货 2016-08-24
  • 小白易患错误之绝对路径和相对路径的操作错误

    小白易患错误之绝对路径和相对路径的操作错误 作为一个不安稳的小白,一天都在那路乱折腾,恰巧,老师课程题目中有一题将/etc/skel 这个目录的文件除了..和. 复制到/home/USRNAEM 的家目录下。然后自以为是不按照老师的方法,自己折腾用了这样一条命令 [root@local skel]# ls -A .bash_lo…

    Linux干货 2016-08-05
  • 马哥教育网络班21期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash     #     nolog=`awk -F: '$…

    Linux干货 2016-09-19
  • 2016/08/07:文本处理工具及正则表达式

      在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的…

    Linux干货 2016-08-07