可是我們又不想要安裝這個rpm
這個時候就可以用rpm2cpio + cpio
來抽取檔案
可參考http://hi.baidu.com/yanyulou/blog/item/dc57233f60b5b2ef55e72372.html
以glibc-xxx.rpm來作例子
假設我們要抽取libm.so.6這個檔案
先將下載下來的rpm放到一個站存目錄
然後執行下面指令
rpm2cpio glibc-2.7-2.x86_64.rpm | cpio -idv
就會出現
./etc/ld.so.conf
./etc/ld.so.conf.d
./etc/localtime
./etc/nsswitch.conf
./etc/rpc
./lib64/ld-2.7.so
./lib64/ld-linux-x86-64.so.2
./lib64/libBrokenLocale-2.7.so
./lib64/libBrokenLocale.so.1
...
./lib64/libdl.so.2
./lib64/libm-2.7.so
./lib64/libm.so.6
./lib64/libnsl-2.7.so
./lib64/libnsl.so.1
...
./lib64/rtkaio/librtkaio-2.7.so
./sbin/ldconfig
./sbin/sln
./usr/lib64/gconv
./usr/lib64/gconv/ANSI_X3.110.so
./usr/lib64/gconv/ARMSCII-8.so
...
./usr/lib64/gconv/EBCDIC-US.so
./usr/lib64/gconv/ECMA-CYRILLIC.so
./usr/lib64/gconv/EUC-CN.so
./usr/lib64/gconv/EUC-JISX0213.so
...
./usr/lib64/gconv/IBM918.so
./usr/lib64/gconv/IBM921.so
./usr/lib64/gconv/IBM922.so
./usr/lib64/gconv/IBM930.so
./usr/lib64/gconv/IBM932.so
./usr/lib64/gconv/IBM933.so
./usr/lib64/gconv/IBM935.so
./usr/lib64/gconv/IBM937.so
./usr/lib64/gconv/IBM939.so
./usr/lib64/gconv/IBM943.so
./usr/lib64/gconv/IBM9448.so
./usr/lib64/gconv/IEC_P27-1.so
./usr/lib64/gconv/INIS-8.so
...
./usr/lib64/gconv/KOI8-U.so
./usr/lib64/gconv/LATIN-GREEK-1.so
./usr/lib64/gconv/LATIN-GREEK.so
./usr/lib64/gconv/MAC-CENTRALEUROPE.so
...
./usr/lib64/gconv/libKSC.so
./usr/libexec/getconf
./usr/sbin/glibc_post_upgrade.x86_64
./usr/share/doc/glibc-2.7
./usr/share/doc/glibc-2.7/BUGS
...
./usr/share/doc/glibc-2.7/README.hesiod
./usr/share/doc/glibc-2.7/README.libm
./var/cache/ldconfig
./usr/sbin/iconvconfig
cpio: ./usr/sbin/iconvconfig.x86_64 linked to ./usr/sbin/iconvconfig
./usr/sbin/iconvconfig.x86_64
./usr/libexec/getconf/POSIX_V6_LP64_OFF64
然後在執行rpm2cpio的目錄中就會有下面5的目錄
drwx------ 6 4096 Nov 9 22:51 usr
drwx------ 3 4096 Nov 9 22:51 var
drwx------ 3 4096 Nov 9 22:51 etc
drwx------ 3 4096 Nov 9 22:51 lib64
drwx------ 2 4096 Nov 9 22:51 sbin
然後到lib64的目錄中就會發現libm.so.6 這個檔案
將它複製到/usr/lib64的目錄
就完成了這個so檔的升級了
但是如果可以的話還是用rpm -ivh之類來安裝升級比較好
除非你已經對linux的library非常了解
否則會有dependence的問題出現
及對映的路徑匹配
附註:cpio的用法
參考http://www.cyberciti.biz/faq/how-do-i-use-cpio-command-under-linux/
- -o: Create archive
- -F: Archive filename to use instead of standard input or output. To use a tape drive on another machine as the archive.
- -H format: Specify file format to use.
- -i: Restore archive
# cpio -i -F perl-files.tarYou can list file inside archive i.e. list contents of the cpio file with following command:
# cpio -it -F perl-files.tarYou can write archive of /home to tape (drive /dev/nst0), type the following command:
# find /home | cpio -o -H tar -F /dev/nst0Restore backup using following command:
# cpio -i -F /dev/nst0Backup /home dir, to remote system tape drive:
# find /home | cpio -o -H tar -F user@backup.nixcraft.in:/dev/nst0 --rsh-command=/usr/bin/ssh
沒有留言:
張貼留言