You are not logged in.
I'm attempting creating my first AUR package. I followed a similar package on the AUR and was able to get about 98% of the way there.
After `makepkg` and `sudo pacman -U my-package.pkg.tar.xz`, everything is installed to the correct locations.
I have a sh script in /usr/bin to `exec /opt/my-package/my-package`. Problem is, when I try to run it, I get permission issues. `my-package` fails, but `sudo my-package` works fine. I dno't want to run this as root.
Everything in /opt/my-package is root:root -rwxr-xr-x.
I think the issue is that my user account needs write access to /opt/my-package, since when running as root it generates a .cfg file when it starts up.
How can my PKGBUILD script set the permissions for /opt/my-package? I am copying files in to this by way of `install -Dm755 srcfile "$pkgdir"/opt/my-package/destfile`.
Offline
From what you're explaining, the permissions are actually correct. In this case it seems you're hitting a problem with how the application handles its configuration.
The application you're trying to package is attempting to write to the location it is installed to instead of the user's home directory (be it ${XDG_CONFIG_HOME} or loose dot-files in ${HOME}).
Since the install location is owned by root and writeable only by root (as it should be!!!), this fails. Depending on the program, there are usually a few solutions available you can use:
1) The program has a flag you can provide to point it to where it should write its configuration; in this case, add the flag to your wrapper script. E.g. `... --config-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/TheApplicationName`
2) The program uses the working directory for operations; in your wrapper script, change to a desired file location first. E.g. something like `mkdir ${XDG_CONFIG_HOME:-${HOME}/.config}/TheApplicationName && cd ${XDG_CONFIG_HOME:-${HOME}/.config}/TheApplicationName && ...`. If the program attempts to locate required libraries it includes as relative paths, this might now fail. In that case you might also need to set and export the LD_LIBRARY_PATH env var in your wrapper script to include the aplication's install location.
3) The application hard-codes to always write relative to the executable location and this can't be changed; in this case the 'best' approach would probably be to make the wrapper script copy the application over to a location owned by the user (be it a temporary location or somewhere in his home) and run it from there (akin to what the tor-browser package does).
Last edited by Omar007 (2019-06-02 13:34:10)
Offline
Problem is, when I try to run it, I get permission issues.
That is not an error message.
The reply above is excellent - and quite generous. Omar007 is trying to give reasonable answers to every possible problem that could have because you've not given nearly enough information for us to know exactly what problem you're actually having.
What is this package? What software is packaged? What PKGBUILD are you using? Don't make use play 20-questions; present this information at the start of a help request.
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
That is not an error message.
Fair, but I didn't include the error message since that was specific to the application itself, and my question was meant to be more of whether or not I was packaging it correctly. Also, I was 99% sure the only issue was with permissions, not the application.
For what it's worth, the application is NetRunner - http://www.mysticbbs.com/downloads.html, and the error is
An unhandled exception occurred at $000000000042CE39:
EInOutError: Access denied
$000000000042CE39
Omar007's post answered everything quite thoroughly for me though.
Since the application only comes pre-compiled and there seem to be no flags it accepts, option #1 is off the table.
I tried option #2 as well, no dice.
I will take a look at the tor-browser package and see if I can't use that. Thank you!!
Offline
I didn't include the error message since that was specific to the application itself, and my question was meant to be more of whether or not I was packaging it correctly.
And there's no way for us to address this as you've still told us absolutely nothing about how you are packaging it.
Also, I was 99% sure the only issue was with permissions, not the application.
These are not mutually exclusive, and the issuing being "with permissions" could still mean many different things. Is the binary properly executable? Now we know it is given the little bit of output in the last post, but we didn't at first.
For what it's worth, the application is NetRunner - http://www.mysticbbs.com/downloads.html
It's not worth much as that's only the upstream source, not your PKGBUILD or anything about the package you're seeking feedback on. A search of the AUR for 'netrunner' doesn't return any results, so I still have no idea how this is packaged.
You can, and probably should, change the permissions on the /opt/my-package directory.
But as you are not providing any relevant info, nothing more can really be said.
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline