簡體   English   中英

使用 C 代碼安裝軟件包時 R 中的段錯誤

[英]Segfault in R while installing packages with C code

安裝依賴於 C 和 R 的軟件包需要解決什么問題? package ps 是一個例子,它發生在更多的例子中,例如 sys、diffobj、xfun 等。

> install.packages("ps")
Installing package into ‘/home/roland/R/x86_64-pc-linux-gnu-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/ps_1.4.0.tar.gz'
Content type 'application/x-gzip' length 110708 bytes (108 KB)
==================================================
downloaded 108 KB

* installing *source* package ‘ps’ ...
** package ‘ps’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
gcc -std=gnu99 -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -Wall px.c -o px
make: *** [Makevars:11: px] Segmentation fault (core dumped)
ERROR: compilation failed for package ‘ps’
* removing ‘/home/roland/R/x86_64-pc-linux-gnu-library/3.6/ps’

The downloaded source packages are in
    ‘/tmp/RtmpuD2CLF/downloaded_packages’
Warning message:
In install.packages("ps") :
  installation of package ‘ps’ had non-zero exit status

我在 ubuntu 20.04 上,通過 apt-get 安裝了 r-base 和 r-base-core。

提取包的.tar.gz 並單獨運行 gcc 命令不會導致段錯誤。

和版本output:

> version
               _                           
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          6.3                         
year           2020                        
month          02                          
day            29                          
svn rev        77875                       
language       R                           
version.string R version 3.6.3 (2020-02-29)
nickname       Holding the Windsock   

那真的不應該發生。 我在 Ubuntu 20.04 上(但通過 CRAN 和 Launchpad 運行 R 4.0.3 deb)。 我們應該能夠解決這個問題。

(順便說一句,您也可以簡單地依賴預先構建的軟件包,因為其中有 4500 多個。但如果您甚至沒有獲得基本的 R 二進制文件,那么這可能是一個過分的步驟。)

(另外,我們有一個友好且低容量的郵件列表 r-sig-debian,用於基於 Debian 的發行版,包括 Ubuntu,在通常的 ZE1E1D3D40573127E9EE0480CAF'2

在香草 Ubuntu 20.04 系統上(通過 Docker 容器ubuntu:20.04運行,然后安裝了ps沒有問題: r-base-dev

root@e1c8cac32650:/# Rscript -e 'install.packages("ps")'
Installing package into '/usr/local/lib/R/site-library'
(as 'lib' is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/ps_1.4.0.tar.gz'
Content type 'application/x-gzip' length 110708 bytes (108 KB)
==================================================
downloaded 108 KB

* installing *source* package 'ps' ...
** package 'ps' successfully unpacked and MD5 sums checked
** using staged installation
** libs
gcc -std=gnu99 -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -Wall px.c -o px
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c init.c -o init.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c api-common.c -o api-common.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c common.c -o common.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c extra.c -o extra.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c dummy.c -o dummy.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c error-codes.c -o error-codes.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c posix.c -o posix.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c api-posix.c -o api-posix.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c linux.c -o linux.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c api-linux.c -o api-linux.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o ps.so init.o api-common.o common.o extra.o dummy.o error-codes.o posix.o api-posix.o linux.o api-linux.o -L/usr/lib/R/lib -lR
installing via 'install.libs.R' to /usr/local/lib/R/site-library/00LOCK-ps/00new/ps
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** checking absolute paths in shared objects and dynamic libraries
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (ps)

The downloaded source packages are in
        '/tmp/RtmpRhmQqd/downloaded_packages'
root@e1c8cac32650:/# 

編輯:由於它不太為人所知,這是我目前首選的替代方案。 使用 Ubuntu 20.04 和bspm設置以及上述 PPA,我們只需執行install.packages("ps")並獲取相應的二進制文件 這是一個非常方便的替代方案,只需大約一分鍾即可完成設置。

edd@rob:~/git/r-ci/docs(master)$ docker run --rm -ti rocker/r-bspm:20.04
root@0456aca56464:/# Rscript -e 'install.packages("ps")'
Loading required package: utils
Tracing function "install.packages" in package "utils"
Install system packages as root...
Reading package lists... Done
Building dependency tree        
Reading state information... Done
Get:1 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal InRelease [18.1 kB]                                                                                                                              
Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]                                                                                                                                         
Hit http://ppa.launchpad.net/edd/r-4.0/ubuntu focal InRelease                                                                                                                                                     
Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [643 kB]                                                                                                                           
Hit http://ppa.launchpad.net/marutter/rrutter4.0/ubuntu focal InRelease                                                                                                                                           
Get:4 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [466 kB]                                                                                                                               
Get:5 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal/main Sources [1745 kB]                                                                                                                           
Hit http://archive.ubuntu.com/ubuntu focal InRelease                                                                                                                                                              
Get:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]                                                                                                                                           
Get:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]                                                                                                                                         
Get:8 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [126 kB]                                                                                                                           
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [30.4 kB]                                                                                                                          
Get:10 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [850 kB]                                                                                                                                
Get:11 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [871 kB]                                                                                                                            
Get:12 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [4248 B]                                                                                                                          
Get:13 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal/main amd64 Packages [837 kB]                                                                                                                    
Fetched 5913 kB in 0s (0 B/s)                                                                                                                                                                                     
Reading package lists... Done    
Building dependency tree          
Reading state information... Done
Get:1 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal/main amd64 r-cran-ps amd64 1.4.0-1cran1.2004.0 [239 kB]                                                                                          
Fetched 239 kB in 0s (0 B/s)                                                                                                                                                                                      
Selecting previously unselected package r-cran-ps.
(Reading database ... 20576 files and directories currently installed.)
Preparing to unpack .../r-cran-ps_1.4.0-1cran1.2004.0_amd64.deb ...
Unpacking r-cran-ps (1.4.0-1cran1.2004.0) ...
Setting up r-cran-ps (1.4.0-1cran1.2004.0) ...
root@0456aca56464:/# 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM