一个不安装rpm包就可以提取rpm包里文件的方法。
比如你要将test.rpm用test.rpm里的某个文件,但你又不想安装test.rpm,那你可以试试这个办法。随便建一个目录
mkdir aaa
把test.rpm放入目录aaa里并进入aaa目录
cp path/to/test.rpm aaa/
cd aaa
用rpm2cpio将rpm文件转换成cpio文件
rpm2cpio test.rpm >test.cpio
用cpio解压cpio文件
cpio -i--make-directories <test.cpio
(注意:用rpm2cpio和cpio命令时不要忘了输入那个">"和"<") 有时我需要看rpm包里的执行脚本,能有办法提取出来吗? 执行脚本??.spec文件里的内容? rpm包里可以加入脚本,simsun的rpm包就有自动在XF86config-4里自动加入字体路径的功能,这就是靠脚本来实现的,我想知道rpm包里的脚本(不是spec的)
简单地用 mc 就可以了!
rh 7.2 的 mc 不支持 打开 rpm 包 。rh 7.3 和 8.0 、md 的自带的 mc 都可以的了!
不过要注意哟:
rpm 包要没有可执行属性,若有,去掉可执行属性就可以啦。 呵呵,gugong兄弟,高!mc果然可以看脚本! 用mc我没看到脚本呀??其实rpm包安装时执行的脚本肯定是在.spec文件里做的。用vim打开rpm就能看到脚本。比如nautilus-2.0.6-6.i386.rpm,用vim打开它就能看到下面脚本。
/sbin/ldconfig
scrollkeeper-update
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
SCHEMAS="apps_nautilus_preferences.schemas"
for S in $SCHEMAS; do
gconftool-2 --makefile-install-rule /etc/gconf/schemas/$S > /dev/null
done
/sbin/ldconfig
scrollkeeper-update
对了,用mc怎样看到脚本???
用 mc 打开后。
在这个目录 /INFO/SCRIPTS 下。Re: 用 mc 打开后。
在这个目录 /INFO/SCRIPTS 下。原来是这里呀,我看里面的文件大小都是0,以为没有内容。呵呵,这mc不错。
rpm -qi mc
# rpm -qi mcName : mc Relocations: (not relocateable)
Version : 4.5.55 Vendor: Red Hat, Inc.
Release : 5 Build Date: 2002年04月13日 星期六 05时27分48秒
Install date: 2002年10月24日 星期四 09时34分24秒 Build Host: stripples.devel.redhat.com
Group : 系统环境 / shells Source RPM: mc-4.5.55-5.src.rpm
Size : 3805405 License: GPL
Signature : DSA/SHA1, 2002年04月17日 星期三 12时41分16秒, Key ID 219180cddb42a60e
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.gnome.org/mc/
Summary : 一个用户友好的文件管理器和视觉 shell。
Description :
Midnight Commander 是一个视觉化 shell,很像一个文件
管理器,但是具有更多功能。它是一个文本模式程序,
但是如果您在运行 GPM,它还包括鼠标支持。
Midnight Commander 的最佳功能是它的 FTP,查看 tar 和
zip 文件,以及到 RPM 中查看指定文件的能力。
不过 rh 8.0的 mc 有一点问题。不可以 F3 查看 文件的中文内容。改回 rh 7.3 的 mc 就可以了。不过 rh 73 的 mc 的 /usr/share/locale/zh_CN.GB2312/LC_MESSAGES/mc.mo 稍稍有点问题,这个文件mc.mo 还是用 rh 8.0 的。 http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/binaries/RedHat-8.x/i386/
mc-4.6.0pre2-1.i386.rpm支持滚轮鼠标了 !
About: GNU Midnight Commander is a text-mode full-screen file manager. It uses a two panel interface and a subshell for command execution. It includes an internal editor with syntax highlighting and an internal viewer with support for binary files. Also included is Virtual Filesystem (VFS), that allows files on remote systems (e.g. FTP servers) and files inside archives to be manipulated like real files.
Changes: This version features FHS compliance, support for glib 2.0, support for mouse wheel, more useful keyboard shortcuts, safer extfs scripts, and lots of bugfixes. Gentoo 里有一个不错的 rpm2targz 的 shell 脚本,我自己用着感觉不错,大家也试一试吧
把代码粘贴到一个文本编辑器里,然后保存为 /usr/bin/rpm2targz 并且 chmod +x rpm2targz,以后要转换哪个 rpm,用 rpm2targz name.rpm,然后便会在当前目录里生成一个 name.tar.gz。
#!/bin/sh
# Copyright 1997, 1998 Patrick Volkerding, Moorhead, Minnesota USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
#THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO
#EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
if [ "$TMPDIR" = "" ]; then
TMPDIR=/tmp
fi
if [ "$1" = "" ]; then
echo "$0:Converts RPM format to standard GNU tar + GNU zip format."
echo " (view converted packages with \"less\", install and remove"
echo " with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
echo " with \"tar\")"
echo
echo "Usage: $0 <file.rpm>"
if [ "`basename $0`" = "rpm2tgz" ]; then
echo " (Outputs \"file.tgz\")"
else
echo " (Outputs \"file.tar.gz\")"
fi
exit 1;
fi
for i in $* ; do
if [ ! "$1" = "$*" ]; then
echo "Processing file: $i"
fi
rm -rf $TMPDIR/rpm2targz$$ # clear the way, just in case of mischief
mkdir $TMPDIR/rpm2targz$$
ofn=`basename $i .rpm`.cpio
dd ibs=`rpmoffset < $i` skip=1 if=$i 2> /dev/null | gzip -dc > $TMPDIR/rpm2targz$$/$ofn
( cd $TMPDIR/rpm2targz$$
cpio --extract --preserve-modification-time --make-directories < $ofn 1> /dev/null 2> /dev/null
rm -f $ofn
find . -type d -perm 700 -exec chmod 755 {} \;
tar cf - . ) > `basename $i .rpm`.tar
gzip -9 `basename $i .rpm`.tar
if [ "`basename $0`" = "rpm2tgz" ]; then
mv `basename $i .rpm`.tar.gz `basename $i .rpm`.tgz
fi
( cd $TMPDIR ; rm -rf rpm2targz$$ )
done
Re: 一个不安装rpm包就可以提取rpm包里文件的方法。
比如你要将test.rpm用test.rpm里的某个文件,但你又不想安装test.rpm,那你可以试试这个办法。随便建一个目录
mkdir aaa
把test.rpm放入目录aaa里并进入aaa目录
cp path/to/test.rpm aaa/
cd aaa
用rpm2cpio将rpm文件转换成cpio文件
rpm2cpio test.rpm >test.cpio
用cpio解压cpio文件
cpio -i--make-directories <test.cpio
(注意:用rpm2cpio和cpio命令时不要忘了输入那个">"和"<")
其实一步可以实现:rpm2cpio rpmfile.rpm | cpio -div 建意:
大家去看看如何做rpm包的文章吧,那样就知道rpm包说白了,就是
对源码包安装过程的自动化!(当然不止是这样,好东西多着呢)
页:
[1]
2