找回密码
 注册

QQ登录

只需一步,快速开始

楼主: xl6663792

[工具] 华为光猫重打包工具

[复制链接]
发表于 2018-1-21 22:02:09 | 显示全部楼层
谢谢,楼主分享,顺便来赚个猫粮5 Q* ?6 k. y$ x0 @  s& x
发表于 2018-1-23 16:31:53 | 显示全部楼层
赚取猫粮啊啊啊
发表于 2018-1-25 17:16:59 | 显示全部楼层
很好                                                
发表于 2018-2-14 06:12:24 | 显示全部楼层
不会使用啊
发表于 2018-2-14 06:24:59 | 显示全部楼层
制作Linux下程序安装包——使用脚本打包bin、run等安装包
4 \/ w% @& N9 }' F) [' e- D4 m8 E制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。下面来看看两个简单的例子:7 d/ h0 X" J5 r/ E& k  K
——————————华丽的分割线——————————) @1 A0 E- {+ p# |. V
run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:9 T3 z' Q3 ^+ q. _
|—————–|# s4 _" c) ~) G! h5 ~  Y
|                       |5 C3 I% ^5 r- c& z- G
|     安装脚本      |
& N0 o, }5 s( c  w! [|                       |: C0 p$ r; ?+ y% U( n1 T
|—————–|
: v6 I( k5 x9 }3 u# [7 {" ]|                       |
. X5 n9 g0 d" Y|      程序            |) m* ?) }4 y; B
|                       |
: }  r  X+ F& ?! W& I) c4 w" c|—————–|: u7 u+ F; A) b' o* R
图: run安装包的结构% h6 g6 e( Y# D  X
这样整个run安装包结构就一目了然了,实际上因为实际需要结构多少有点变动但这个无关紧要,只需要明白原理就行了。- z7 {/ {7 {; _$ S, @
制作run安装包以下举个实际的例子:( N/ n  ~9 R+ j* Z4 i' ]
为了简单起见,要安装的程序就是helloworld程序,安装它的过程就是把它拷贝到/bin目录下。) ^. [# V8 D  L2 u% d% E
$ ls
; D* n* e, k6 j6 Y  l6 D3 w5 finstall.sh helloworld& s- u/ E6 l! ~5 G
$ cat install.sh
; H, X1 @8 X$ r2 t7 f$ F7 `#!/bin/bash
& V5 r& c  }; {- O" p+ ~cp helloworld /bin
0 J; ~1 _  f/ Q- I4 l8 V$ K$* I+ g0 _9 H* N! [7 Z
现在有一个安装脚本了,名为install.sh,有一个要安装的程序helloworld.因为要安装的程序一般都是用.tar.bz2来做的。我们这儿也做一下:9 H3 N: z; Z: l3 e. @0 J6 Y
$ tar jcvf helloworld.tar.bz2 helloworld
+ t% j2 Y5 A' K现在修改一个安装脚本install.sh
0 g, V8 ]9 K# D# n% [1 n改为:0 J; `) R+ m% B5 Y( U! w' ?
#!/bin/bash+ C1 t; `  V) o1 e
lines=7      #这个值是指这个脚本的行数加1,这个脚本共有6行; Y  r+ y6 ^) W& b4 S5 `: c
tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示脚本本身,这个命令用来把从$lines开始的内容写入一个/tmp目录的helloworld.tar.gz文件里。
# \; B) ^- U; r1 otar jxvf /tmp/hellowrold.tar.gz( |1 L7 k3 r) L; [
cp helloworld /bin
8 P. @- l. g* G) J' `1 F! a. c7 {exit 08 u; T7 @2 N: ~' U9 Z
然后使用cat命令连接安装脚本install.sh和helloworld.tar.bz2。$ r7 k- F: b% _5 q1 R5 L$ G
$ cat install.sh helloworld.tar.bz2 > myinstall.run( c) f' i; x4 T0 ~7 Y) X
这样就得到了myinstall.run文件,它的结构如下:* X; c- S$ F' W
|——————| 第1行$ ~4 P! f- d& N2 K" t
|                         |
* Z" t; Z" \- a) x& ]|    install.sh       |9 P& v( v6 t+ D9 X
|                         | 第6行
, M/ @- ]) ^( D' m8 X7 |" O, v|——————|
' A" n# m" T9 G+ m. Z" B  }% k|                         | 第7行
9 x* J, |' c& @6 j( i; Z3 F|helloworld.tar.bz2 |0 D% T; n2 q' |* g8 n! R% p- d" O
|                         |: z" [6 T+ B/ S6 E5 G; C6 a
|——————| 结尾
% ~5 q9 v" Q' }" a图: myinstall.run安装包的结构
2 \: u2 d6 {+ C4 {. O  T5 N* B运行myinstall.run时,运行到第6行的exit 0脚本就退出了,所以不会去运行第7行以下的二进制数据(即helloworld.tar.bz2文件),而我们用了tail巧妙地把第7行以下的数据重 新生成了一个helloworld.tar.gz文件。再执行安装。
' R: \) ~! l" g+ D# [8 t6 P9 Q5 ^run安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦。因此此时还是用其他的安装包更好。; `7 _; m* w& e- ?  R  _
——————————华丽的分割线——————————: Q  f7 T6 k& E* V# k
linux 下制作二进制 .bin  的文件
! |' }. Y7 _6 Z* t9 L7 h& o制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里
" \' m5 _6 n  u8 Z$ W' s这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。( N8 B& J, u* A2 |  W
例:制作安装apache、mysql的安装脚本包
, v; [7 b) a2 p+ G/ ^) ?, E+ v& C. {1.将源码包先打包4 W& z1 A; ^5 q6 L
#tar zcvf packages.tar.gz httpd-2.0.63.tar.bz2 mysql-5.0.33.tar.gz
  P4 k" K/ W3 ?9 m- F$ C2.编写脚本如下:, ^  h* b* m& Z
# cat install.sh' M6 J5 T2 @$ B2 n- u
#!/bin/bash3 U5 T: j- ?5 u
dir_tmp=/root/installapache, f' y* Z; h" h2 i+ ?
mkdir $dir_tmp4 f, x; q7 W* I2 s& [0 |
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
1 b- |3 C- K* ^, scd $dir_tmp
& C% ^( t) ~9 a2 T5 H7 Wtar zxf packages.tar.gz; q) {9 O, `0 E0 g- b  w* x$ N
tar jxf httpd-2.0.63.tar.bz2
: I# o! C) X2 \( ?cd  httpd-2.0.630 Q: K& N( o# C+ F4 n& C! y
./configure –prefix=/tmp/apache2
' L' B! z$ K$ _1 S$ m3 Vmake
! ]5 o) _. S. I2 n0 A+ ymake install
0 v' j" R. R( W$ ?" Rcd $dir_tmp
* I7 T7 t1 ^& j  ]tar zxf mysql-5.0.33.tar.gz
( {- I/ Y# Y" I. W: R, g1 Wcd mysql-5.0.333 w& D+ o# z0 U. Z, h/ M
./configure –with-charset=gbk –with-extra-charsets=binary,latin1,gb2312 –localstatedir=/home/db –with-mysqld-ldflags=-all-static -enable-assembler –with-innodb –prefix=/tmp/mysql5
( L' ^! W3 I& E) x+ mmake
! c; m3 Q1 m( v5 Smake install4 j+ o9 ]' v2 b9 @; X
exit 01 l' q' z4 t0 {. f. Y! }
#cat install.sh packages.tar.gz >install.bin
# U  O+ {, n# s! v这样就生成install.bin的安装文件,改文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到$ Z# o( J1 a- q, U9 T: l' P
最主要的是下面这句,是将二进制文件从.bin文件里分离出来. ~( E( n: Y1 \+ m$ C' U$ ~& f; t5 F
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
2 d& J' o' C' Y/ n8 @安装的时候直接执行7 ?9 r& i% m" V
sh install.bin' g  Q2 i( r+ N+ q6 |: A" ]1 ^
安装这个方法可以将我们平时常使用的安装脚本化,然后打包。以后使用就方便了。
+ {, v  N$ x1 g' b( C. Z' a, }8 @——————————华丽的分割线——————————
- P& p. V7 @: @+ }$ `5 \上面两个例子,其实不管是bin也好run也好,其实Linux下一切皆文件,而且是不管什么文件,都是一样的看法。所以这些后缀没有什么意义。上面两个 不同的地方是分离,一个是用了tail命令,一个是用了sed来实现。总之,这只是一种思路,不管用什么办法,只要能合起来然后又分开就行。
% y( }( ~% R) K( N" M另外,有人写出了一个脚本来实现这样的功能,感兴趣的可以自己看一下:
" s) F' l& ]3 B0 E# B9 ihttp://megastep.org/makeself/! j9 A% g$ P5 ?1 x( D) L' T
?0 ?0
发表于 2018-2-14 06:26:23 | 显示全部楼层
制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。下面来看看两个简单的例子:
, ~3 y% @- y$ U# d9 L——————————华丽的分割线——————————
. y. J5 _3 k: D run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:0 Y* X" h$ s6 X9 E; G( n; P' P
|—————–|
6 o* O5 h5 m, d( h|                       |
7 ~: I) y- V6 O|     安装脚本      |
- a; ~2 D" p) g0 w|                       |' T% Y0 a9 M1 n- [7 C! H+ f
|—————–|
" Y7 H7 \$ T! B* v% }8 G|                       |, a: m: |6 J# E, s
|      程序            |
- u( F& w3 l' K+ @|                       |) V* z$ p. @1 N( @4 ^
|—————–|
# `8 X* O% d$ L1 e) M  q图: run安装包的结构
4 D1 g! c5 Y3 C# u# [& W这样整个run安装包结构就一目了然了,实际上因为实际需要结构多少有点变动但这个无关紧要,只需要明白原理就行了。
) Z7 Z3 g5 k% M# ^# ^: N* x制作run安装包以下举个实际的例子:
/ B# S2 ~  B3 U2 s, P  y0 Y为了简单起见,要安装的程序就是helloworld程序,安装它的过程就是把它拷贝到/bin目录下。% C: K8 p6 y! [8 [. t$ z# Z4 h1 |
$ ls
0 H5 x* I9 r( [; ]& U4 O6 ainstall.sh helloworld" N2 t& p0 h1 f0 l/ ~
$ cat install.sh
- `/ B- e2 g0 q' v#!/bin/bash/ X; j( a5 n: S  Z) O& _  i8 Y3 j
cp helloworld /bin
8 ?% \; L/ H2 @! J2 L2 H$
8 _9 z& B8 I, e' }现在有一个安装脚本了,名为install.sh,有一个要安装的程序helloworld.因为要安装的程序一般都是用.tar.bz2来做的。我们这儿也做一下:
3 i1 r" ~% q, Y& k3 P% [$ tar jcvf helloworld.tar.bz2 helloworld# \. e' G9 C# T( E
现在修改一个安装脚本install.sh- m( d! ~8 V# D2 q
改为:
1 {6 \3 ]5 ?& P( x. M0 o#!/bin/bash. Z/ Q5 g, B4 j! b) b+ U) j' y! z
lines=7      #这个值是指这个脚本的行数加1,这个脚本共有6行& f6 A* a; a7 s) v% \1 x7 |7 i( t
tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示脚本本身,这个命令用来把从$lines开始的内容写入一个/tmp目录的helloworld.tar.gz文件里。
5 [/ n; X! {5 U4 n, ?+ ~tar jxvf /tmp/hellowrold.tar.gz: G7 c! E; L" z0 P0 j; l
cp helloworld /bin- t" h* x" Z: Y, L8 V3 ?/ Y9 _) R8 v
exit 0( P& i1 e9 |$ r% k- o8 ?
然后使用cat命令连接安装脚本install.sh和helloworld.tar.bz2。
3 q: J  T) J' S; y& c& j/ Z1 J$ cat install.sh helloworld.tar.bz2 > myinstall.run
. s3 Y, A5 _6 X3 B9 ^: x1 _这样就得到了myinstall.run文件,它的结构如下:6 z1 [+ E3 j1 O6 L) A; ?
|——————| 第1行
3 P) I9 s. V+ h: y3 N8 f4 ~|                         |
& g$ o2 x& [/ [: {|    install.sh       |
5 ^. x% R. z0 T7 I: J. P0 k|                         | 第6行
* h+ z9 m& u  V" ?4 p- w$ f& U|——————|% f0 }) J, l$ r: S' Z
|                         | 第7行. J% J+ u( e7 G! P, s- M
|helloworld.tar.bz2 |
' w1 z5 m& Y8 e|                         |) y9 q& h6 Y9 l2 `
|——————| 结尾7 I# B5 I4 T) n
图: myinstall.run安装包的结构
; y) f$ l4 t9 d* w: R4 z' V运行myinstall.run时,运行到第6行的exit 0脚本就退出了,所以不会去运行第7行以下的二进制数据(即helloworld.tar.bz2文件),而我们用了tail巧妙地把第7行以下的数据重 新生成了一个helloworld.tar.gz文件。再执行安装。
3 ?# k/ v. K5 Yrun安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦。因此此时还是用其他的安装包更好。$ H; ^" Q+ T6 R4 ?0 Q9 T
——————————华丽的分割线——————————
/ ]1 `; {& {7 H) xlinux 下制作二进制 .bin  的文件4 C% {+ K  z7 y- o2 S
制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里
" Q# A; _5 y1 I" k/ P1 P这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。5 |; f  V2 \3 X) v
例:制作安装apache、mysql的安装脚本包
$ w1 Z+ m: m7 l/ q8 c6 M1.将源码包先打包
8 n- j' u+ Y5 u' y7 U#tar zcvf packages.tar.gz httpd-2.0.63.tar.bz2 mysql-5.0.33.tar.gz
7 }" O) t. f% }' T) |2 f& V2.编写脚本如下:
2 j7 a( v! I5 a! Z# cat install.sh  X) Q# I7 i: w- d# a
#!/bin/bash5 E7 Q( r/ d; i3 a, m7 l* A! o4 ]( a
dir_tmp=/root/installapache8 {. T- h3 O! M  o8 [
mkdir $dir_tmp% M! j% l3 m6 c2 X6 S+ k" b% V. ^4 E. b
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
1 I2 {& E# g1 s9 r( ycd $dir_tmp
4 L- o$ W- _/ y* `/ |% r/ [- ttar zxf packages.tar.gz
0 _# `  P9 ~9 Otar jxf httpd-2.0.63.tar.bz2
& s( G( E1 W8 K5 bcd  httpd-2.0.63$ x  O& D3 i! P* \  D; c) k
./configure –prefix=/tmp/apache2$ `' a" z8 G- h# f
make
. H* M3 {+ q4 g- H0 N$ i/ fmake install. f  @  b' K, m+ S3 w3 y4 `
cd $dir_tmp$ ?* o! b* J7 T/ b* ^7 \, O0 m
tar zxf mysql-5.0.33.tar.gz6 {% S$ H5 V# e) Q$ J  S. Z/ W
cd mysql-5.0.33% f) a0 ?' `8 v
./configure –with-charset=gbk –with-extra-charsets=binary,latin1,gb2312 –localstatedir=/home/db –with-mysqld-ldflags=-all-static -enable-assembler –with-innodb –prefix=/tmp/mysql53 |) b: N) u' i' ?6 \( r
make
* [6 L4 X: A" e' M/ l# O) Qmake install- k6 {$ h- X5 a( L5 R( M7 L* @
exit 0/ T# d9 x& y; e# {! C& A9 {3 R
#cat install.sh packages.tar.gz >install.bin1 T0 l& {3 ?6 t
这样就生成install.bin的安装文件,改文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到
& _5 J* k6 d3 x+ L" D1 B$ S$ P) j最主要的是下面这句,是将二进制文件从.bin文件里分离出来6 _0 E& V3 \- M7 P5 r
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null6 t9 ^0 g3 c' _& W
安装的时候直接执行2 w0 A' j9 Z2 N8 J3 ?
sh install.bin
$ M7 p% ~3 Z& L/ k安装这个方法可以将我们平时常使用的安装脚本化,然后打包。以后使用就方便了。. O; R3 p9 |& i0 q3 u$ e6 a
——————————华丽的分割线——————————; M" J8 @, N, E
上面两个例子,其实不管是bin也好run也好,其实Linux下一切皆文件,而且是不管什么文件,都是一样的看法。所以这些后缀没有什么意义。上面两个 不同的地方是分离,一个是用了tail命令,一个是用了sed来实现。总之,这只是一种思路,不管用什么办法,只要能合起来然后又分开就行。
$ ]5 e+ |$ H+ w另外,有人写出了一个脚本来实现这样的功能,感兴趣的可以自己看一下:! Z  n/ q. X2 I. m2 q8 a
http://megastep.org/makeself/! Q, q" E& Q! A8 t% j) B
?0 ?0
发表于 2018-2-19 22:23:36 | 显示全部楼层
谢谢楼主分享,顺便来赚个猫粮
发表于 2018-3-18 17:34:54 | 显示全部楼层
谢谢! 虽然我没有下载
发表于 2018-3-24 17:35:08 | 显示全部楼层
就是贵呀
* O( Q; Q3 n8 t0 d就是贵呀就是贵呀就是贵呀就是贵呀就是贵呀就是贵呀
发表于 2018-4-22 07:35:43 | 显示全部楼层
可以用吗,,问下大家,,
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-6-18 02:10 , Processed in 0.028001 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表