jeroen/RAppArmor

SUSE 11 support

Closed this issue · 7 comments

gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -f pic -g -O2 -c kill_wrapper.c -o kill_wrapper.o
gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -f pic -g -O2 -c ncores.c -o ncores.o
gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -f pic -g -O2 -c rlimits.c -o rlimits.o
rlimits.c: In function ârlimit_rttimeâ:
rlimits.c:114: error: âRLIMIT_RTTIMEâ undeclared (first use in this function)
rlimits.c:114: error: (Each undeclared identifier is reported only once
rlimits.c:114: error: for each function it appears in.)
rlimits.c: In function ârlimit_wrapperâ:
rlimits.c:165: warning: implicit declaration of function âprlimitâ
make: *** [rlimits.o] Error 1
ERROR: compilation failed for package âRAppArmorâ

  • removing â/usr/local/lib64/R/library/RAppArmorâ

The downloaded source packages are in
â/tmp/RtmpHN4Jh7/downloaded_packagesâ
Updating HTML index of packages in '.Library'
Making packages.html ... done
Warning message:
In install.packages("RAppArmor") :
installation of package âRAppArmorâ had non-zero exit status

and I have check the /usr/local/lib64/R/include,and all the source in R and RAppArmor ,there is no place define the
RLIMIT_RTTIME.

I use the command grep -r "RLIMIT_RTTIME" * to search it.

and for I want to ignore the RLIMIT_RTTIME issue ,I commet out the function rlimit_rttime()in rlimits.c.

it has the install problem like below:
hadoop1821:/home/tester/Desktop # R CMD INSTALL RAppArmor

  • installing to library â/usr/local/lib64/R/libraryâ
  • installing source package âRAppArmorâ ...
    file âsrc/rlimits.câ has the wrong MD5 checksum
    ** libs
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c rlimits.c -o rlimits.o
    rlimits.c: In function ârlimit_wrapperâ:
    rlimits.c:167: warning: implicit declaration of function âprlimitâ
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c setaffinity_wrapper.c -o setaffinity_wrapper.o
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c setgid_wrapper.c -o setgid_wrapper.o
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c setpgid_wrapper.c -o setpgid_wrapper.o
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c setpriority_wrapper.c -o setpriority_wrapper.o
    gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O2 -c setuid_wrapper.c -o setuid_wrapper.o
    gcc -std=gnu99 -shared -L/usr/local/lib64 -o RAppArmor.so aa_change_hat_wrapper.o aa_change_profile_wrapper.o aa_find_mountpoint_wrapper.o aa_getcon_wrapper.o aa_is_enabled_wrapper.o aa_revert_hat_wrapper.o getaffinity_count.o getaffinity_wrapper.o getgid_wrapper.o getpgid_wrapper.o getpriority_wrapper.o getuid_wrapper.o interactivity.o kill_wrapper.o ncores.o rlimits.o setaffinity_wrapper.o setgid_wrapper.o setpgid_wrapper.o setpriority_wrapper.o setuid_wrapper.o /usr/lib64/libapparmor.so -L/usr/local/lib64/R/lib -lR
    installing to /usr/local/lib64/R/library/RAppArmor/libs
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded
    Error : .onLoad failed in loadNamespace() for 'RAppArmor', details:
    call: dyn.load(file, DLLpath = DLLpath, ...)
    error: unable to load shared object '/usr/local/lib64/R/library/RAppArmor/libs/RAppArmor.so':
    /usr/local/lib64/R/library/RAppArmor/libs/RAppArmor.so: undefined symbol: aa_getcon
    Error: loading failed
    Execution halted
    ERROR: loading failed
  • removing â/usr/local/lib64/R/library/RAppArmorâ
  • installing to library â/usr/local/lib64/R/libraryâ
  • installing source package âRAppArmorâ ...
    file âsrc/rlimits.câ has the wrong MD5 checksum
    ** libs
    make: Nothing to be done for `all'.
    installing to /usr/local/lib64/R/library/RAppArmor/libs
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded
    Error : .onLoad failed in loadNamespace() for 'RAppArmor', details:
    call: dyn.load(file, DLLpath = DLLpath, ...)
    error: unable to load shared object '/usr/local/lib64/R/library/RAppArmor/libs /RAppArmor.so':
    /usr/local/lib64/R/library/RAppArmor/libs/RAppArmor.so: undefined symbol: aa_g etcon
    Error: loading failed
    Execution halted
    ERROR: loading failed
  • removing â/usr/local/lib64/R/library/RAppArmorâ

ld -d RAppArmor.so
ld: warning: cannot find entry symbol _start; not setting start address
RAppArmor.so: undefined reference to aa_getcon' RAppArmor.so: undefined reference toaa_find_mountpoint'
RAppArmor.so: undefined reference to prlimit' RAppArmor.so: undefined reference toaa_is_enabled'

It looks like you use a linux kernel that is too old, and does not support some of the rlimit/apparmor functionality. The RAppArmor package requires a relatively recent Linux version. Things will work out of the box on OpenSuse 12, but on OpenSuse 11 is a bit old and some essential functionality is missing from the kernel. Can you print the output of:

uname -a

The easiest way to get things to work would be to upgrade to OpenSuse 12. If you really need Suse 11, we can try to create a special version of AppArmor. However, that would require quite some work. From my first impression, the following Linux functions are unavailable in suse 11:

  • aa_getcon
  • aa_findmountpoint
  • aa_is_enabled
  • prlimit
  • RLIMIT_RTTIME

Do you have a opportunity to test on Suse 12?

what is ever solved for suse version 11?

The kernel is too old. It works on opensuse 12. Suse enterprise 12 will be released later this year.