找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: xl6663792

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

[复制链接]
发表于 2018-1-21 22:02:09 | 显示全部楼层
谢谢,楼主分享,顺便来赚个猫粮9 z. \9 e! \9 Y# \8 M
发表于 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等安装包
  p8 v7 a$ e0 e8 y7 D: U$ \+ X制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。下面来看看两个简单的例子:
  p1 D0 E! `0 b& n8 C——————————华丽的分割线——————————
9 b+ q0 C8 N  O3 A) N run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:
8 }  S/ A  Z1 f4 ~! B8 X, H6 B8 G' _|—————–|( ?9 C% r- h( Z1 X0 @, G7 |
|                       |
4 h8 s1 n( ~5 }' E6 `. ?, X|     安装脚本      |1 H/ S: h2 e7 a9 F) Z( T8 ?
|                       |, J0 y9 g' c- G4 w
|—————–|  H0 d' {* J, e/ A+ @
|                       |
6 L7 D2 T9 F( z4 n% u" M5 V|      程序            |) D2 ]& w' k  x
|                       |7 B5 ^: R0 t* J
|—————–|# g! w: e7 D5 N
图: run安装包的结构! R: R0 M8 ~: f5 a3 T
这样整个run安装包结构就一目了然了,实际上因为实际需要结构多少有点变动但这个无关紧要,只需要明白原理就行了。6 [1 h$ N& G( ~6 ~/ R! D1 A( V
制作run安装包以下举个实际的例子:/ a/ m+ K% F, U. W( j
为了简单起见,要安装的程序就是helloworld程序,安装它的过程就是把它拷贝到/bin目录下。
2 ~6 w) [5 V" j- m9 X# d: R$ ls9 f* V! w' x( [- k$ h& _
install.sh helloworld
2 g9 u3 R7 M0 T" F' e$ cat install.sh: L" B# V7 V* W3 C
#!/bin/bash
! t$ `  Q% K3 k! _- F2 d* Z1 X8 scp helloworld /bin
: x, K4 x: i4 L* @' g3 }. l" q$9 T& F  ], Y6 f* ~- r: R+ I& |
现在有一个安装脚本了,名为install.sh,有一个要安装的程序helloworld.因为要安装的程序一般都是用.tar.bz2来做的。我们这儿也做一下:
8 M" Z& E  Q# k9 p* t$ tar jcvf helloworld.tar.bz2 helloworld
+ G5 ^2 R) y3 b; L现在修改一个安装脚本install.sh- M3 t* P7 w5 l- B: _# B# p  v  p
改为:
% X* b1 G5 C/ j* ?#!/bin/bash
) ]5 C: z3 M6 K' D+ M  u3 J: u) E8 glines=7      #这个值是指这个脚本的行数加1,这个脚本共有6行8 l  N3 ~' B" f7 e  V# J' O
tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示脚本本身,这个命令用来把从$lines开始的内容写入一个/tmp目录的helloworld.tar.gz文件里。4 V9 H3 h- x( X$ U% z5 }
tar jxvf /tmp/hellowrold.tar.gz' `# `; S6 a3 W# T9 i+ t7 m
cp helloworld /bin
- J- W! V( {: Y# @exit 0
, U, J+ [) O% r( P然后使用cat命令连接安装脚本install.sh和helloworld.tar.bz2。
4 {* h0 Y% r4 W' `1 ~/ U' n$ i$ cat install.sh helloworld.tar.bz2 > myinstall.run
0 c5 F7 C0 h% y$ S& M$ m% A这样就得到了myinstall.run文件,它的结构如下:
+ }2 S; p$ o( l, G|——————| 第1行8 o; Y" E+ X: P" K0 s$ [
|                         |
, S& p" o  k' F2 d) b|    install.sh       |
& \* R8 t5 w4 |, o7 b  \% N1 m|                         | 第6行$ r- P& r  S7 W
|——————|6 r- n0 r" g( ]$ {" z4 x
|                         | 第7行+ H7 L, N! R2 Z
|helloworld.tar.bz2 |# A7 V+ B7 c) G$ }- c
|                         |; a  Z9 l* {1 H2 P& G9 V& S$ H8 I
|——————| 结尾
7 W# I# w3 T. S: {: _6 h! O- K图: myinstall.run安装包的结构3 u3 G$ o0 A: U; C  y' E
运行myinstall.run时,运行到第6行的exit 0脚本就退出了,所以不会去运行第7行以下的二进制数据(即helloworld.tar.bz2文件),而我们用了tail巧妙地把第7行以下的数据重 新生成了一个helloworld.tar.gz文件。再执行安装。
# V, y- K% {# h$ _/ ?7 j/ f1 zrun安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦。因此此时还是用其他的安装包更好。# i' a  E: ]4 V' O% p. s
——————————华丽的分割线——————————7 q+ m$ ]' x" g  {( Q
linux 下制作二进制 .bin  的文件; ~3 e: Z9 `% b8 D  \  l
制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里
! O" `7 \1 z7 d$ {$ x5 ]这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。; Q, Y& a0 n0 w7 _
例:制作安装apache、mysql的安装脚本包
/ H$ Q/ N1 w" z4 \- H1 ^1.将源码包先打包) x( }. v6 T% a# ]$ F6 u
#tar zcvf packages.tar.gz httpd-2.0.63.tar.bz2 mysql-5.0.33.tar.gz
3 }: B( C5 R" q4 K# W2.编写脚本如下:2 m3 c" [9 c" C- P9 `
# cat install.sh
; L! E; Z% n1 |7 ?1 ~#!/bin/bash( s2 n! u5 i: L" a+ x
dir_tmp=/root/installapache0 D2 O8 D# d/ o4 R# ~: f2 r
mkdir $dir_tmp
  ^9 l3 ^! E. T7 R- {sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
) }4 t& P9 u) D* X( Gcd $dir_tmp  m1 Z( T2 U2 B0 |
tar zxf packages.tar.gz
( z5 l. o$ P1 O# Q; ]5 V: atar jxf httpd-2.0.63.tar.bz2
  }1 R) z! f7 l6 z! M5 H& J) V1 {cd  httpd-2.0.632 Z( K$ j" Z# d$ {/ i- E3 v- }
./configure –prefix=/tmp/apache2& j+ @: t/ v9 q% C) O7 R. \
make
  u. g5 @" m( w1 ^. a& M' N  Imake install
. `4 y0 ^- N  C* M( j8 k# O+ A  ucd $dir_tmp/ |/ e8 M& g) x9 U" @$ Y
tar zxf mysql-5.0.33.tar.gz2 b9 k  y# x+ ^) D* Q
cd mysql-5.0.33* p$ `& {5 r- M3 i
./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
: a3 R& a% M0 c+ G$ b) j. H( E5 b' Fmake
& f- S- E9 P7 I& J+ Wmake install
! A8 @1 Q# a" kexit 0
7 u, m0 e0 l0 ]7 }1 ?% K#cat install.sh packages.tar.gz >install.bin
- S5 B6 p( J$ Z: [" }这样就生成install.bin的安装文件,改文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到
3 |1 E# U! i2 [: J最主要的是下面这句,是将二进制文件从.bin文件里分离出来4 U# a. d0 f$ Q. _* h
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
+ V% [" j/ D, m& {' M# a% }; U安装的时候直接执行1 i* J% M6 b5 L! r3 S) L
sh install.bin
" w- H/ P# K0 I: z5 O- B安装这个方法可以将我们平时常使用的安装脚本化,然后打包。以后使用就方便了。( G( {' ^3 b' Y% q# ]: Z, Z  z8 U
——————————华丽的分割线——————————
3 r- J# ?7 j5 V. V1 E- s上面两个例子,其实不管是bin也好run也好,其实Linux下一切皆文件,而且是不管什么文件,都是一样的看法。所以这些后缀没有什么意义。上面两个 不同的地方是分离,一个是用了tail命令,一个是用了sed来实现。总之,这只是一种思路,不管用什么办法,只要能合起来然后又分开就行。
* Z: \& T5 t; @$ A- L9 `$ b/ ]另外,有人写出了一个脚本来实现这样的功能,感兴趣的可以自己看一下:7 K5 M# r0 p" [& y7 F( A
http://megastep.org/makeself/* G5 E& v$ Y# |1 {) o
?0 ?0
发表于 2018-2-14 06:26:23 | 显示全部楼层
制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。下面来看看两个简单的例子:
5 ]! o& W( l3 q0 v) ~——————————华丽的分割线——————————. A( v  d& Z6 }- I! q' {6 A* k
run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:- }+ l5 X0 r9 K4 d$ O
|—————–|
+ @( a/ e+ N( N" F|                       |- X2 @/ [: @! p# D
|     安装脚本      |
" o- r. [0 s% C; h" W2 N0 {|                       |1 J! Y8 Z7 q* \' w8 b. U/ M
|—————–|
0 t6 X$ b, H7 a|                       |
: [$ K2 I6 X# }% z) Y|      程序            |$ M, q0 k# x' ^  r( N1 K
|                       |# Z" k5 w" d9 e: J# M" m* G" F3 U3 l% m
|—————–|$ _+ C" h0 h% h
图: run安装包的结构
+ B/ |( m. h6 i- C+ }+ V这样整个run安装包结构就一目了然了,实际上因为实际需要结构多少有点变动但这个无关紧要,只需要明白原理就行了。
2 G: z, Z- R& E$ `% S* L1 m制作run安装包以下举个实际的例子:
: {+ ~7 H1 h/ y+ z0 |为了简单起见,要安装的程序就是helloworld程序,安装它的过程就是把它拷贝到/bin目录下。
7 t) i% L( n9 a$ m$ ls% D! N4 s. p7 ~1 m6 `3 Z4 x8 [
install.sh helloworld
  c7 N: l4 e3 Y9 P. q$ cat install.sh
3 h/ z2 o3 E7 e#!/bin/bash; g4 ?* H1 O( r  |
cp helloworld /bin
" N1 u2 o2 J9 O/ ]) H* e5 I- n' [/ Y$
8 U5 r% a  Y+ s现在有一个安装脚本了,名为install.sh,有一个要安装的程序helloworld.因为要安装的程序一般都是用.tar.bz2来做的。我们这儿也做一下:
- W+ r" v* V, r7 B& ]* @$ r$ tar jcvf helloworld.tar.bz2 helloworld
# B6 U& @& Y* f+ R3 a, h& u现在修改一个安装脚本install.sh
! x* V( R! `1 c! |改为:' [$ w% w8 j0 U. N
#!/bin/bash
" ?0 }- P. Z  t" {lines=7      #这个值是指这个脚本的行数加1,这个脚本共有6行
2 I3 [9 J$ s( p: B$ h* r$ Ttail +$lines $0 >/tmp/helloworld.tar.gz # $0表示脚本本身,这个命令用来把从$lines开始的内容写入一个/tmp目录的helloworld.tar.gz文件里。3 p4 S# S1 |' l& p/ }3 X4 s
tar jxvf /tmp/hellowrold.tar.gz- z% h$ m: B, G
cp helloworld /bin
, ?6 m# a! R" r9 p/ v6 xexit 0
- }8 n0 ~/ w$ [  o) \然后使用cat命令连接安装脚本install.sh和helloworld.tar.bz2。
$ [& ~: `7 E& J2 t% x  x, _$ cat install.sh helloworld.tar.bz2 > myinstall.run( \' e1 j& D' u& S! H$ I, Z" R
这样就得到了myinstall.run文件,它的结构如下:5 `: |( B+ J" O! S/ q4 V# X
|——————| 第1行: {6 z+ C$ Y; l$ z
|                         |' [! ^) Q  N6 w: B* e' `
|    install.sh       |
6 I# O: n7 d& k" z|                         | 第6行
2 y7 L2 Y8 A6 M" W, k4 K" s|——————|" p5 {  Y% Q0 H3 N
|                         | 第7行$ e, w/ Q; Z5 ^8 K. |5 p
|helloworld.tar.bz2 |7 Z5 D4 f- H- x5 H; [8 X
|                         |5 K( z- v! A% [% t
|——————| 结尾
' v: Y! V: X% U* }5 a图: myinstall.run安装包的结构) f, I9 K- J' p* ?9 c) y
运行myinstall.run时,运行到第6行的exit 0脚本就退出了,所以不会去运行第7行以下的二进制数据(即helloworld.tar.bz2文件),而我们用了tail巧妙地把第7行以下的数据重 新生成了一个helloworld.tar.gz文件。再执行安装。' \# k" J5 F7 q# {! O9 A
run安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦。因此此时还是用其他的安装包更好。6 m. [: g) T$ Z" n1 Z  _( M
——————————华丽的分割线——————————, s- m% Y+ ]' i8 [2 p) }7 G/ C0 G
linux 下制作二进制 .bin  的文件
" D. S# ?1 w4 f+ T. @7 H制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里" D# `7 f- W; E8 P4 d& W8 R# ^: C
这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。1 j3 w& o% H/ `3 _1 e
例:制作安装apache、mysql的安装脚本包
9 ?5 u' L! C" \6 B0 p: f1.将源码包先打包
& `6 U( v* s  ?% I. T$ C0 e/ k  Q# I#tar zcvf packages.tar.gz httpd-2.0.63.tar.bz2 mysql-5.0.33.tar.gz
9 k! p# s- ^( I/ f0 |2.编写脚本如下:
- y9 ?7 |. I5 T- c& O% @# cat install.sh
4 h- y3 T+ ?- s; X0 z$ H& v5 ^#!/bin/bash# w! }" P2 B# I" g: D- n0 [
dir_tmp=/root/installapache0 ?/ N. C5 ^4 G( c# {4 F7 a
mkdir $dir_tmp
3 S& c: t' g/ t1 ~sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null; `8 T3 e; K2 w( N$ P
cd $dir_tmp
% A8 J! H. \4 v& m' w' ~tar zxf packages.tar.gz
/ b9 C- l- ?: O! v- Q. q9 b/ Y7 Itar jxf httpd-2.0.63.tar.bz2" ?* d' `3 S: h: [" o9 b
cd  httpd-2.0.63
0 l& j4 _) l' u' Z! z0 {2 }# J./configure –prefix=/tmp/apache2" T& o% J' ?. a
make
3 u$ d$ f1 i4 V: N0 i3 fmake install
5 H1 ]0 o' i; W) M3 r2 W2 jcd $dir_tmp! f6 N6 V7 J/ d; t
tar zxf mysql-5.0.33.tar.gz
' }) J4 J7 L, f. }/ x& X" f( fcd mysql-5.0.33; X; g' D  g3 a: G4 u
./configure –with-charset=gbk –with-extra-charsets=binary,latin1,gb2312 –localstatedir=/home/db –with-mysqld-ldflags=-all-static -enable-assembler –with-innodb –prefix=/tmp/mysql54 a4 I$ @2 q) }1 C0 X+ W9 S% y) d
make
- b5 `% [! C" T2 }make install" v# w5 l0 L/ }4 `/ H4 n. Q! g
exit 0
. t3 G1 e  x4 c' u#cat install.sh packages.tar.gz >install.bin, B$ F+ T/ C/ V9 T
这样就生成install.bin的安装文件,改文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到
" K2 t/ d+ ~3 e; z最主要的是下面这句,是将二进制文件从.bin文件里分离出来7 U. \& p  H- E; i. _+ ~
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null: U6 E8 J9 |7 ]9 P, x
安装的时候直接执行
. K9 E" u9 b8 J  N5 {: [sh install.bin& z, r+ `$ G* }! z" K
安装这个方法可以将我们平时常使用的安装脚本化,然后打包。以后使用就方便了。
' P$ ~& }$ G) J3 J2 A——————————华丽的分割线——————————
: n, Q+ W7 l0 D% o上面两个例子,其实不管是bin也好run也好,其实Linux下一切皆文件,而且是不管什么文件,都是一样的看法。所以这些后缀没有什么意义。上面两个 不同的地方是分离,一个是用了tail命令,一个是用了sed来实现。总之,这只是一种思路,不管用什么办法,只要能合起来然后又分开就行。1 I) y4 @! k) l8 c4 b4 X  o( o, W. C
另外,有人写出了一个脚本来实现这样的功能,感兴趣的可以自己看一下:
  |# k' {* ]3 \: J' l9 o* |http://megastep.org/makeself/
9 @" ?! U4 ?9 @6 u?0 ?0
发表于 2018-2-19 22:23:36 | 显示全部楼层
谢谢楼主分享,顺便来赚个猫粮
发表于 2018-3-18 17:34:54 | 显示全部楼层
谢谢! 虽然我没有下载
发表于 2018-3-24 17:35:08 | 显示全部楼层
就是贵呀
4 X7 F3 k3 _! a3 W- i- ], H" H就是贵呀就是贵呀就是贵呀就是贵呀就是贵呀就是贵呀
发表于 2018-4-22 07:35:43 | 显示全部楼层
可以用吗,,问下大家,,
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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

GMT+8, 2026-2-8 21:06 , Processed in 0.031117 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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