LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   rpm rebuild (https://www.linuxquestions.org/questions/linux-software-2/rpm-rebuild-97414/)

talkinggoat 09-27-2003 02:45 AM

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?

salparadise 09-27-2003 03:55 AM

rpmbuild --rebuild is the correct command

talkinggoat 09-27-2003 04:25 AM

that command is not for red hat. and i must be doing something wrong, because it won't rebuild. something must be missing.

megaspaz 09-27-2003 04:38 AM

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?

talkinggoat 09-27-2003 04:42 AM

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.:)

megaspaz 09-27-2003 04:48 AM

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.

talkinggoat 09-27-2003 05:08 AM

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

megaspaz 09-27-2003 05:13 AM

it's not set as executable would be my guess. try this command:

chmod 755 *.rpm

and then try the rpm --rebuild command again.

talkinggoat 09-27-2003 05:16 AM

no go. same problem...

megaspaz 09-27-2003 05:18 AM

what's the output of ls -l and rpm --rebuild

talkinggoat 09-27-2003 05:22 AM

[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]#

megaspaz 09-27-2003 05:28 AM

dunno. try the command with a wildcard since the chmod command worked.

rpm --rebuild *.rpm

talkinggoat 09-27-2003 05:43 AM

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?

unSpawn 09-27-2003 06:49 AM

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.

talkinggoat 09-27-2003 02:59 PM

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.