[英]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.