You are not logged in.
Hi,
I have some small projects in development which installs in the "make install" way. But I wish pacman can manage the all the files, so I can use "pacman -Ql" or "pacman -R" later. I don't need any dependency tracking. I know I can create a PKGBUILD, but this seems overkill for such simple usage. I also need to update the source code as well as the configure option on local disk frequently, and I need incremental compilation. So it is clumsy to fit in the makepkg's download->script compile->package->install model.
Is there any adhoc way to "make DESTDIR=./pkg install", then ask pacman to process the whole thing and output a installable package?
Thanks
Offline
Er ... have you ever actually made a PKGBUILD? If make install works, it should take all of 1 minute to make a functional PKGBUILD. And there is no need to "download->compile->package->install", just use `makepkg -efi` in the same working directory, and it will use the updated files to rebuild/install.
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
Moving to Creating and Modifying packages...
Offline
So it is clumsy to fit in the makepkg's download->script compile->package->install model.
You've never tried making an rpm package have you?
Is there any adhoc way to "make DESTDIR=./pkg install", then ask pacman to process the whole thing and output a installable package?
No.
Are you familiar with our Forum Rules, and How To Ask Questions The Smart Way?
BlueHackers // fscanary // resticctl
Offline
Thanks for the hints. I just noticed there is a "makepkg --repackage" that do the job.
Offline
Take a look at porg/paco in AUR/ It's a package organizer (no dependancy resolving) made by a user of LFS. With it you can issue
porg -<some flag I don't remember> "make install"
This will run make install while porg tracks all newly reated files. Porg then stores the summary of newly created files (somewhere) in /var. Porg can be used for uninstalling.
Note:
Be careful. Pacman doesn't know about Porg tracked files (and vice versa), so there could be file conflicts. Porg doesn't check if file is owned by another package (it has no such a concept) so it will let "make install" overwrite anything, pacman is the one that could complain about conflicts.
Offline
Thanks for the hints. I just noticed there is a "makepkg --repackage" that do the job.
Did you try it out? Did it work w/o a PKGBUILD?
Offline
I also need to update the source code as well as the configure option on local disk frequently
Then the repackage option will not work. Just rebuild with the "-e" flag and only modified files will be recompiled just like using make (install).
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
tr071 wrote:Thanks for the hints. I just noticed there is a "makepkg --repackage" that do the job.
Did you try it out? Did it work w/o a PKGBUILD?
Yes, it works. I just need "mkdir pkg" and copy the PKGBUILD.proto into my project, change the first 3 lines, and change
package() {
# cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}
Now running "makepkg --repackage" will package my already-compiled stuff into a installable.
tr071 wrote:I also need to update the source code as well as the configure option on local disk frequently
Then the repackage option will not work. Just rebuild with the "-e" flag and only modified files will be recompiled just like using make (install).
I don't need makepkg to run "make" for me, as I need use some manual compiling, linking tweaks.
Offline
Anything you need to run to build whatever it is you're building can be put in the PKGBUILD, that's the point.
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
...I need use some manual compiling, linking tweaks.
That's what PKGBUILD's are for... So you only have to write the commands to handle those changes once instead of having to manually do them.
Are you familiar with our Forum Rules, and How To Ask Questions The Smart Way?
BlueHackers // fscanary // resticctl
Offline