-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
263 lines (190 loc) · 8.47 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
p7zip 9.04
==========
Homepage : http://p7zip.sourceforge.net/
p7zip is a port of the Windows programs 7z.exe and 7za.exe provided by 7-zip.
7-zip is a file archiver with the highest compression ratio.
Homepage : www.7-zip.org
7z uses plugins (7z.so and Codecs/Rar29.so) to handle archives.
7za is a stand-alone executable.
7za handles less archive formats than 7z.exe.
7zr is a light stand-alone executable that supports only 7z/LZMA/BCJ/BCJ2.
NEW:
7zG : see GUI/readme.txt
CAUTION :
---------
- FIRST : DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
- 7-zip does not store the owner/group of the file
On Linux/Unix, in order to backup directories you must use tar !
to backup a directory : tar cf - directory | 7za a -si directory.tar.7z
to restore your backup : 7za x -so directory.tar.7z | tar xf -
- if you want to send files and directories (not the owner of file)
to others Unix/MacOS/Windows users, you can use the 7-zip format.
example : 7za a directory.7z directory
do not use "-r" because this flag does not do what you think
do not use directory/* because of ".*" files
(example : "directory/*" does not match "directory/.profile")
BUILD :
-------
If you have downloaded the "bin" package,
use directly the program bin/7za.
(tested on Redhat 9.0, Fedora 2, Mandrake 10.0, Debian 3.0)
As the program is statically linked, its should run on many x86 linux.
If you have downloaded the "source" package,
According to your OS, copy makefile.linux,
makefile.freebsd, makefile.cygwin, ...
over makefile.machine
If you want to make a parallel build : make -j4 -f makefile.parallel_jobs TARGET
make clean : to clean all directories
make : to build bin/7za
make sfx : to build bin/7zCon.sfx (7za can now create SFX archive)
make 7z : to build bin/7z and its plugins :
- "bin/7z.so" (GNU LGPL + AES code license)
- "bin/Codecs/Rar29.so" (GNU LGPL + unRAR restriction)
make 7zr : to build bin/7zr
make all : to build bin/7za and bin/7zCon.sfx
make all2 : to build bin/7za, bin/7z (with its plugins) and bin/7zCon.sfx
make all3 : to build bin/7za, bin/7z (with its plugins), bin/7zr and bin/7zCon.sfx
make test : to test bin/7za (extracting, archiving, password ...)
make test_7z : to test bin/7z (extracting, archiving, password ...)
make test_7zr : to test bin/7zr (extracting, archiving, ...)
make 7zG : to build bin/7zG and its plugins :
- "bin/7z.so" (GNU LGPL + AES code license)
- "bin/Codecs/Rar29.so" (GNU LGPL + unRAR restriction)
make test_7zG : to test bin/7zG (extracting, archiving, ...)
this procedure has been tested on :
- x86 CPU :
DOS - (built with DJGPP, see http://blairdude.googlepages.com/p7zip )
Linux - Redhat 9.0 Standart
Linux - Fedora 2 (Redhat) (gcc 3.3.3 and gcc-3.4.1 with
stack-smashing protector from www.trl.ibm.com/projects/security/ssp/)
Linux - Mandrake 10.0 Official
Linux - Debian 3.0 Stable
Linux - Ubuntu 8.04
FreeBSD 5.2.1 (gcc 3.3.3)
MacOS 10.4.8
NetBSD
CYGWIN_NT-5.1 1.5.9(0.112/4/2) 2004-03-18 23:05 i686 Cygwin
Solaris 9 (x86) with gcc 3.3.2
Solaris 10 (x86)
- alpha CPU :
Linux - Debian 3.0 (alpha) with gcc 2.95.4
- AMD64 CPU :
Linux - SuSE 8 ES (AMD64 Opteron) with gcc 3.2.2
Linux - Fedora 4 (AMD64 Turion) with gcc 4.0.1
Linux - Ubuntu 8.10
- Itanium CPU :
HP-UX B.11.31 U ia64 with aCC (HP C/aC++ B3910B A.06.14 [Feb 22 2007])
- s390x CPU :
Linux - SUSE Enterprise Linux 10 - with gcc 4.1.2
( only the 32bits built works, the 64bits built does not pass the tests )
- sparc CPU :
Solaris 8 (sparc) with gcc 2.95.2
Solaris 9 (sparc) with gcc 3.3.2
- powerpc CPU :
MacOS X 10.1/darwin 5.5 with gcc 932.1 (gcc 2.95.2)
MacOS X 10.3 with XCode 1.5
- openpower CPU :
Linux openpower-linux1 2.6.5-7.97-pseries64 (ppc64) with gcc 3.3.3
- IBM :
AIX 5.3 with gcc 4.1.0
- Tru64 :
OSF 5.1 with gcc 3.4.2
- PA-RISC :
HP-UX 11.11 with aCC (HP ANSI C++ B3910B A.03.73)
HP-UX 11.11 with gcc 3.4.2 (7za and 7zr : OK, 7z : failed because of a buggy gcc for HP-UX,
plugins don't work because C++ constructors are not called !)
BUILD with cmake
----------------
You can only build 7za.
cd CPP/7zip/CMAKE
edit generate.sh to choose your target
./generate.sh
the cmake project for the target is in "CPP/7zip/CMAKE/Alone".
For the target "Unix Makefiles", use "make" to compile
For others target, use the IDE (CodeBlocks, KDevelop3, Eclipse CDT4)
INSTALL :
---------
method 1
--------
- edit install.sh to change DEST_HOME
- ./install.sh : to install
Remark : you must be "root" to install 7za in the directory "/usr/local"
method 2
--------
- 7za is a stand-alone program, you can put this program where you want.
example : cp bin/7za /usr/local/bin/7za
- 7z needs its plugins. You must copy the file 7z, 7z.so
and the directory Codecs in the same destination directory.
- if you want to be able to create SFX archive, copy bin/7zCon.sfx
to the directory where 7za or 7z can be found.
USAGE:
------
Remark : you can replace 7za with 7z.
7za t archive.7z : tests files in the archive archive.7z
7za l archive.7z : lists all files from archive archive.7z
7za x archive.7z : extracts all files from archive archive.7z
to the current directory
7za a archive.7z file1 fileN : add files to the archive archive.7z
7za a archive.7z dir1 : add all files and subdirectories from directory "dir1" to archive archive.7z
CAUTION : do not use the flag "-r" unless you know what you are doing ...
7za a -sfx archive.exe dir1 : add all files from directory "dir1" to SFX archive archive.exe
(Remark : SFX archive MUST end with ".exe")
You can also add or extract files to/from .zip or .tar archives.
You can also compress/uncompress .gz or .bz2 files.
7za a -tzip archive.zip file file2 file3
7za a -ttar archive.tar file
7za a -tgzip file.gz file
7za a -tbzip2 archive.bz2 file
You can use password for archives:
7za a -pmy_password archive.7z dir1
For .7z archive only, you can enable archive header encryption with "-mhe"
7za a -mhe=on -pmy_password archive.7z dir1
For more, see the documentation of 7za.exe in DOCS/MANUAL directory
7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1
adds all files from directory "dir1" to archive archive.7z
using "ultra settings".
-t7z : 7z archive
-m0=lzma : lzma method
-mx=9 : level of compression = 9 (Ultra)
-mfb=64 : number of fast bytes for LZMA = 64
-md=32m : dictionary size = 32 megabytes
-ms=on : solid archive = on
To use the new codec "lzma2"
7za a -m0=lzma2 archive.7z directory
BENCHMARKS :
------------
7za b : bench LZMA codec
7z b -mm=crc : make internal crc check.
LICENSE :
---------
please read DOCS/License.txt.
LIMITATIONS from 7-zip :
------------------------
- does not support uid/gid for the .tar format (so, use tar on Unix)
LIMITATIONS for Unix version only :
-----------------------------------
- can handle properly UNICODE filenames only if the environment is UTF-8.
Example : export LANG=en_US.UTF-8 ; unset LC_CTYPE
Remark : see the possible values for LANG in the directory
- /usr/lib/locale : Fedora 2 / Solaris 8
- /usr/share/locale : OpenBSD / Debian / FreeBSD / MacOS X / Mandrake 10.1 / NetBSD
On Linux, to display the available locales : locale -a
p7zip relies on LC_CTYPE and then on LANG to convert name to/from UNICODE.
the command "locale" should display these environment variables.
you can also do "echo $LC_CTYPE" and "echo $LANG".
If you do not plan to export your archive, you can use the flag "-no-utf16".
Usage :
7za a -no-utf16 archive.7z dirOrFile1 ... dirOrFileN
7za t -no-utf16 archive.7z
7za l -no-utf16 archive.7z
7za x -no-utf16 archive.7z
- ignores Windows file access permissions (files are created with default permissions)
see also TODO file.
DEVELOPPER CORNER:
------------------
- WaitForMultipleObject has no equivalence on Unix.
- Events don't exist.
- sizeof(wchar_t) = 4 with GCC (2 with MS VC++)
- "FIXME" in source code indicates that you should add codes to better handle all cases.
- "FIXED" in source code indicates that the original code has been changed to work in Unix environment.
see also TODO file.