rpm rebuild
how do i rebuild a program in linux from a source rpm.
i am tring to use the command: rpm --rebuild iptables-1.2.6a-2.src.rpm it gives me the error iptables-1.2.6a-2.src.rpm: no such file or directory the file exists, and even when i specify the location of the file, it still will not work. what am i doing wrong? |
rpmbuild --rebuild is the correct command
|
that command is not for red hat. and i must be doing something wrong, because it won't rebuild. something must be missing.
|
i'm probably sure you did all this, but i'll ask anyway.
1. you've "su"ed into root? 2. did you "cd" to where the *.src.rpm is at? 3. when you did specify the directory path, is the directory path using long filenames and did you put quotes around the directory path if it is using long filenames? 4. you've typed the filename correctly? |
perhaps i am not understanding how the command works. give me an example of what i am supposed to do... maby that will shed some light on the situation.:)
|
well if you've changed to the directory where the *.src.rpm file is, you've "su"ed into root mode, and you didn't make any typos on the filename then that command you posted should work.
basically let's pretend you downloaded that source rpm file to a directory called "downloads" in your home directory. then the basic commands to use in order would be: 1. cd downloads 2. su *enter root password* 3. rpm --rebuild iptables-1.2.6a-2.src.rpm then look in /usr/src/redhat/RPMS for the built *.rpm file and install it. |
this is an exact copy of what i am putting in, and what comes out:
[root@localhost rpm]# pwd /home/cdw/temp/rpm [root@localhost rpm]# ls -l -rw------- 1 root root 307788 Sep 27 04:56 iptables-1.2.6a-2.src.rpm [root@localhost rpm]# rpm --rebuild ./iptables-1.2.6a-2.src.rpm ./iptables-1.2.6a-2.src.rpm: No such file or directory i have a 12 gauge shotgun... you think that would work on it?:D |
it's not set as executable would be my guess. try this command:
chmod 755 *.rpm and then try the rpm --rebuild command again. |
no go. same problem...
|
what's the output of ls -l and rpm --rebuild
|
[root@localhost rpm]# pwd
/home/cdw/temp/rpm [root@localhost rpm]# ls -l -rwxr-xr-x 1 root root 307788 Sep 27 04:56 iptables-1.2.6a-2.src.rpm [root@localhost rpm]# rpm --rebuild iptables-1.2.6a-2.src.rpm iptables-1.2.6a-2.src.rpm: No such file or directory [root@localhost rpm]# |
dunno. try the command with a wildcard since the chmod command worked.
rpm --rebuild *.rpm |
i built a directory just for this... note the change.
when i issue the command: [root@localhost wild]# rpm --rebuild ./*.rpm i still get: ./iptables-1.2.6a-2.src.rpm: No such file or directory all together: [root@localhost wild]# ls iptables-1.2.6a-2.src.rpm [root@localhost wild]# rpm --rebuild ./*.rpm ./iptables-1.2.6a-2.src.rpm: No such file or directory and it's the only file in the directory. the problem has to be something else that we are overlooking... is there supposed to be a directory somewhere that doesn't exist? |
Here's the easiest way. Install the .src.rpm. If you're using the root account, then it will default to placing the source tarball and any patches in /usr/src/redhat/SOURCES, and the spec file in /usr/src/redhat/SPECS. Now rpm -ba /usr/src/redhat/SPECS/<specfilename>.
--- Please note you don't need to be root to build rpm's: http://www-106.ibm.com/developerworks/library/l-rpm2/ That's how I do it (I build a lot of custom rpm's), and it works well. For an unprivileged user account make a subdir structure similar to /usr/src/redhat, copy over the rpmmacros and rpmrc, grant readonly access to the rpm database and you're set. Also note marking rpm's executable is unnecessary as they're not executables. |
i issued the command rpm -U iptables-1.2.6a-2.src.rpm. it created the files:
[root@localhost SOURCES]# ls -l ip* -rwxr-xr-x 1 root root 5640 Aug 7 2002 ip6tables.init -rw-r--r-- 1 root root 723 Aug 27 2001 iptables-1.2.2-bug50990.patch -rw-rw-r-- 1 root root 294968 Jul 29 2002 iptables-1.2.6a.tar.bz2 -rwxr-xr-x 1 root root 5636 Aug 7 2002 iptables.init and [root@localhost SPECS]# ls -l ip* -rw-rw-r-- 1 root root 6624 Aug 7 2002 iptables.spec with the command rpm -ba /usr/src/redhat/SPECS/iptables-1.2.6a-2.src.rpm i still get: iptables-1.2.6a-2.src.rpm: No such file or directory |
All times are GMT -5. The time now is 10:09 AM. |