diff options
Diffstat (limited to 'src/libs/7zip/unix/README')
-rw-r--r-- | src/libs/7zip/unix/README | 358 |
1 files changed, 358 insertions, 0 deletions
diff --git a/src/libs/7zip/unix/README b/src/libs/7zip/unix/README new file mode 100644 index 000000000..f5cb312f4 --- /dev/null +++ b/src/libs/7zip/unix/README @@ -0,0 +1,358 @@ + p7zip 9.20 + ========== + +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 or amd64 linux. + + If you have downloaded the "source" package, + + According to your OS, copy makefile.linux, + makefile.freebsd, makefile.cygwin, ... + over makefile.machine + + Example : building 7za, 7z (with its plugins), 7zr and Client7z and passing the internal tests + cp makefile.linux_x86_asm_gcc_4 makefile.linux + make all_test + + + If you want to make a parallel build on a 4 cpu machine : make -j 4 TARGET + + If you have trouble, try : make -f makefile.oldmake TARGET + + make depend : to rebuild the makefile.depend + 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 : + Linux - Debian 3.0 Stable + Linux - Ubuntu 10.10 + MacOS 10.6.6 + + - AMD64 CPU : + Linux - Ubuntu 10.10 + MacOS 10.6.6 + + - sparc CPU : + Solaris 8 (sparc) with gcc 2.95.2 + + - powerpc CPU : + MacOS X 10.4 (ppc) + + Some older versions of p7zip were tested : + - 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 - 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 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. + + +hugetlbfs (large pages) +------------ + + Using huges pages in Linux requires some preparations. + First, make sure your running kernel has support for hugetlbfs compiled in: + + ~$ grep hugetlbfs /proc/filesystems + nodev hugetlbfs + + You can view your current huge page configuration like this: + + ~$ grep Huge /proc/meminfo + HugePages_Total: 0 + HugePages_Free: 0 + HugePages_Rsvd: 0 + HugePages_Surp: 0 + Hugepagesize: 2048 kB + + In this case the size of a huge page is 2 MiB. + So, if you have 2 GiB of RAM and want to reserve 512 MiB for huge pages, + you would need 256 pages. + + Do the following as root: + + ~# echo 296 >/proc/sys/vm/nr_hugepages + ~# grep Huge /proc/meminfo + HugePages_Total: 296 + HugePages_Free: 296 + HugePages_Rsvd: 0 + HugePages_Surp: 0 + Hugepagesize: 2048 kB + + Finally, make access from user space possible: + + ~# mkdir /hugepages + ~# mount -t hugetlbfs -o rw,nosuid,nodev,noexec,noatime none /hugepages + ~# chmod 1777 /hugepages + + Option 1 : Now huge pages are configured. + In your shell, set the environment variable HUGETLB_PATH to the mount point: + ~$ export HUGETLB_PATH=/hugepages + or + + Option 2 : Let p7zip find out the first directory with the type "hugetlbfs" + + + To enable huge page use in p7zip, pass the '-slp' switch to it. + Ex: 7za -slp a t.7z dir + + + + If you want this to be a permanent setup : + - mkdir /hugepages + + - add an entry to your /etc/fstab so that when you reboot your computer, + your hugetlbfs will mount automatically : + hugetlbfs /hugepages hugetlbfs rw,nosuid,nodev,noexec,noatime 0 0 + + - add this in your /etc/rc.local : + chmod 1777 /hugepages + echo 296 > /proc/sys/vm/nr_hugepages + + optional : export HUGETLB_PATH=/hugepages + + To enable huge page use in p7zip, pass the '-slp' switch to it : 7za -slp b + + + Remark : with current CPU : "7za -slp b" is not faster than "7za b". + If you want to see some speedup, compress at least 300MB + Ex : 7za -slp -mx=9 -a big_file.tar.7z big_file.tar + + +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. |