วิธีที่ไม่เจ็บปวดในการติดตั้ง R เวอร์ชันใหม่?


158

Andrew Gelman เพิ่งเสียใจที่ขาดกระบวนการอัพเกรดที่ง่ายสำหรับ R (อาจเกี่ยวข้องกับ Windows มากกว่า Linux) ใครบ้างมีเคล็ดลับที่ดีในการทำการอัปเกรดตั้งแต่ติดตั้งซอฟต์แวร์ไปจนถึงการคัดลอกการตั้งค่า / แพ็คเกจทั้งหมดไป?

ข้อเสนอแนะนี้มีอยู่ในความคิดเห็นและเป็นสิ่งที่ฉันได้ใช้เมื่อเร็ว ๆ นี้ ก่อนอื่นให้คุณติดตั้งเวอร์ชันใหม่จากนั้นรันในเวอร์ชันเก่า:

#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")

ตามมาด้วยสิ่งนี้ในเวอร์ชั่นใหม่:

#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)

1
วิธีการแก้ปัญหาที่ทันสมัยที่ใช้ที่นี่?
พฤษภาคม

ฉันใช้มันเมื่อเร็ว ๆ นี้และใช้งานได้ดี
Litwos

คำตอบ:


74

เพื่อความสมบูรณ์มีวิธีป้องกันคุณจากปัญหานี้ ดังที่ Dirk กล่าวให้บันทึกแพ็คเกจของคุณในไดเรกทอรีอื่นบนคอมพิวเตอร์ของคุณ

install.packages("thepackage",lib="/path/to/directory/with/libraries")

คุณสามารถเปลี่ยนค่าเริ่มต้น.Libraryโดยใช้ฟังก์ชั่นได้.libPathsเช่นกัน

.libPaths("/path/to/directory/with/libraries")

สิ่งนี้จะทำให้พา ธ นี้เป็นค่าแรกใน.Libraryตัวแปรและจะทำให้เป็นค่าเริ่มต้น

หากคุณต้องการทำสิ่งนี้โดยอัตโนมัติเพิ่มเติมคุณสามารถระบุสิ่งนี้ได้ในไฟล์ Rprofile.site ซึ่งคุณพบในไดเร็กทอรี / etc / ของการสร้าง R ของคุณ จากนั้นมันจะโหลดโดยอัตโนมัติทุกครั้งที่โหลด R และคุณไม่ต้องกังวลเกี่ยวกับเรื่องนั้นอีกต่อไป คุณสามารถติดตั้งและโหลดแพ็คเกจจากไดเรกทอรีที่ระบุ

ในที่สุดฉันมีรหัสขนาดเล็กบางส่วนที่รวมอยู่ใน Rprofile.site ของฉันซึ่งช่วยให้ฉันสามารถติดตั้งแพ็คเกจทั้งหมดเมื่อฉันติดตั้งรุ่น R ใหม่ คุณเพียงแค่ต้องทำรายการพวกเขาก่อนที่คุณจะอัพเดทเป็นเวอร์ชั่น R ใหม่ ฉันทำเช่นนั้นโดยใช้ไฟล์. RData ที่มีรายการที่อัปเดตพร้อมแพ็คเกจทั้งหมด

library(utils)

## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
  install.packages(pkgs[!installed])
}

ฉันสร้าง packagelist.RData โดยระบุ.Last()ใน Rprofile.site ของฉัน นี่เป็นการอัปเดตรายการแพ็คเกจหากฉันติดตั้งบางอย่าง:

.Last <- function(){
  pkgs <- installed.packages()[,1]
  if (length(pkgs) > length(installed)){
    save(pkgs,file="G:\Setinfo\R\packagelist.RData")
  }
}

เมื่อฉันติดตั้งเวอร์ชัน R ใหม่ฉันเพิ่งเพิ่มองค์ประกอบที่จำเป็นลงในไฟล์ Rprofile.site และแพ็คเกจทั้งหมดจะถูกติดตั้งใหม่ ฉันต้องปรับ Rprofile.site อยู่ดี (ใช้ผลต่างความขัดแย้งเพิ่มรหัสพิเศษสำหรับ Tinn-R สิ่งเหล่านี้) ดังนั้นมันจึงไม่ใช่งานพิเศษจริงๆ ใช้เวลาเพิ่มในการติดตั้งแพ็กเกจทั้งหมดใหม่อีกครั้ง

บิตสุดท้ายนี้เทียบเท่ากับสิ่งที่ให้ไว้ในคำถามเดิมว่าเป็นคำตอบ ฉันไม่จำเป็นต้องกังวลเกี่ยวกับการรับรายการ "ติดตั้ง" ก่อน

อีกครั้งสิ่งนี้จะไม่ทำงานไร้ที่ติหากคุณมีแพ็คเกจที่ไม่ได้ติดตั้งจาก CRAN แต่รหัสนี้สามารถขยายได้อย่างง่ายดายเพื่อรวมสิ่งเหล่านั้นด้วย


2
@Prasad: ขอบคุณ คำตอบนั้นล้าสมัยไปเล็กน้อย R 2.12 และเพิ่มเติมโดยอัตโนมัติบันทึกแพ็คเกจที่คุณติดตั้งด้วยตัวเองที่ไหนสักแห่งในห้องสมุดมาตรฐานนอกต้นไม้ R หลัก ดังนั้นสิ่งที่คุณต้องทำตอนนี้คือให้แน่ใจว่าคุณพบห้องสมุดนั้นและเชื่อมโยงกับมันถ้ามันไม่เกิดขึ้น
Joris Meys

@ 428790: ฉันจะหาห้องสมุดที่คุณพูดถึงได้ที่ไหน
Daniel Krizian

@DanielKrizian .Libraryดูเริ่มต้นในวัตถุภายใน ในกรณีของฉันมันชี้กลับไปที่โฟลเดอร์การติดตั้ง R หากไม่มีการเปลี่ยนแปลง (ซึ่งฉันไม่ชอบโดยเฉพาะ แต่ดี)
Joris Meys

42

นี่เป็นคำถามเก่าของหลักสูตร แต่อาจมีคำตอบง่ายๆใหม่ (ใช้งานได้กับ Windows เท่านั้น) ซึ่งฉันเพิ่งพบ

install.packages("installr")
require(installr)
updateR()

วิธีที่ดีที่สุดในการทำเช่นนี้คือจากระบบ RGui แพ็คเกจทั้งหมดของคุณจะถูกถ่ายโอนไปยังโฟลเดอร์ใหม่และแพคเกจเก่าจะถูกลบหรือบันทึก (คุณสามารถเลือกอย่างใดอย่างหนึ่ง) จากนั้นเมื่อคุณเปิด RStudio อีกครั้งมันจะรับรู้ทันทีว่าคุณกำลังใช้เวอร์ชันที่อัปเดต สำหรับฉันมันใช้งานได้เหมือนมีเสน่ห์

ข้อมูลเพิ่มเติมเกี่ยวกับ {installr} ที่นี่

ไซมอน


2
สิ่งที่เกี่ยวกับแพคเกจติดตั้งผ่าน GitHub?
skan

8
มันควรจะกล่าวว่านี่สำหรับ Windows
beroe

27

คำแนะนำด่วนสองประการ:

  1. ใช้แบทช์ไฟล์ของ Gabor ซึ่งได้รับการกล่าวกันว่าประกอบด้วยเครื่องมือช่วยเหลือเช่นการย้ายห้องสมุดจำนวนมาก Caveat: ฉันไม่ได้ใช้พวกเขา

  2. อย่าติดตั้งไลบรารีภายใน 'filetree' ของเวอร์ชั่น R ที่ติดตั้ง ใน Windows ฉันอาจใส่ R เป็น C: / opt / R / R- $ $ แต่วางไลบรารี่ทั้งหมดไว้ใน C: / opt / R / library / โดยใช้ตัวอย่างต่อไปนี้เนื่องจากมันช่วยลดปัญหาในตอนแรก:

$ cat .Renviron         # this is using MSys/MinGW which looks like Cygwin  
## Example .Renviron on Windows    
R_LIBS="C:/opt/R/library"

ฉันสงสัยว่าการถ่ายโอนแพคเกจจากพูดว่า R 2.8 ถึง R.9 ทำให้เกิดปัญหาหรือไม่ หรือทุกอย่างจะดีตราบใดที่คุณทำการอัพเดทแพ็คเกจในเวอร์ชั่นใหม่
Eduardo Leoni

ฉันทำสิ่งนี้มาระยะหนึ่งแล้วและไม่มีปัญหา โดยทั่วไปแล้วจะเป็น "ไปข้างหน้ากันได้" โดยทั่วไปแล้ว และ IIRC เพียงหนึ่งการอัพเกรด (อาจเป็น R 1.9 -> R 2.0) จำเป็นต้องสร้างไลบรารีใหม่ทั้งหมด
Dirk Eddelbuettel

5
ฉันมักจะคัดลอกโฟลเดอร์ Library ของฉันไปยังการติดตั้งใหม่และเรียกใช้ update.packages ดูเหมือนว่าจะทำงานได้ดี โฟลเดอร์การติดตั้งที่เป็นตัวเลือก แต่สวยงามกว่านั้นมาก
kpierce8

เพิ่งจะชี้ให้เห็น - ฉันได้เพิ่มคำตอบกับรหัส R ปฏิบัติตามคำแนะนำของเดิร์ค (สำหรับผู้ใช้ Windows R)
Tal Galili

26

วิธีที่แนะนำข้างต้นจะไม่สมบูรณ์หากคุณมีแพ็คเกจที่ไม่ได้มาจาก CRAN ตัวอย่างเช่นแพ็คเกจส่วนบุคคลหรือแพ็คเกจที่ดาวน์โหลดจากไซต์ที่ไม่ใช่ CRAN

วิธีที่ฉันต้องการใน Windows (อัพเกรด 2.10.1 เป็น 2.11.0):

  1. ติดตั้ง R-2.11.0
  2. คัดลอกR-2.10.0/library/*ไปยังR-2.11.0/library/
  3. ตอบ "ไม่" เพื่อแจ้งให้คุณถามว่ามันจะถูกเขียนทับ
  4. เริ่ม R 2.11.0
  5. เรียกใช้คำสั่ง R update.packages()

7

สำหรับโซลูชันที่ให้ไว้ในคำถามอาจไม่สามารถรันเวอร์ชันเก่าของ R ได้ง่ายหากคุณติดตั้งเวอร์ชันใหม่แล้ว ในกรณีนี้คุณยังสามารถติดตั้งแพ็คเกจที่หายไปทั้งหมดจากเวอร์ชั่น R ก่อนหน้าได้ดังนี้

# Get names of packages in previous R version
old.packages <- list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library")

# Install packages in the previous version. 

# For each package p in previous version...
    for (p in old.packages) {
      # ... Only if p is not already installed
      if (!(p %in% installed.packages()[,"Package"])) {
        # Install p 
        install.packages(p) 
      }
    }

(โปรดทราบว่าอาร์กิวเมนต์list.files()ในบรรทัดแรกของรหัสควรเป็นเส้นทางไปยังไดเรกทอรีไลบรารีสำหรับรุ่น R ก่อนหน้าของคุณโดยที่โฟลเดอร์ทั้งหมดของแพ็คเกจในรุ่นก่อนหน้าเป็นในกรณีปัจจุบันของฉันนี่คือ"/Library/Frameworks/R.framework/Versions/3.2/Resources/library"กรณีนี้จะแตกต่างกันถ้า เวอร์ชั่น R ก่อนหน้านี้ไม่ใช่ 3.2 หรือถ้าคุณใช้ Windows)

ifคำสั่งทำให้แน่ใจว่าแพคเกจที่จะไม่ติดตั้งหาก

  • ติดตั้งแล้วในเวอร์ชัน R ใหม่หรือ
  • ได้รับการติดตั้งเป็นการอ้างอิงจากแพ็คเกจที่ติดตั้งในการวนซ้ำก่อนหน้าของforลูป

สิ่งนี้แก้ไขปัญหาของฉันได้แล้วขอบคุณ! คำถามนี้อาจฟังดูเล็กน้อย แต่ฉันสามารถลบไลบรารี่เก่าได้หรือไม่
m_c

4

ทำตามคำแนะนำของเดิร์คต่อไปนี้เป็นรหัส R ที่จะทำบน windows: วิธีอัปเกรด R บน windows XP ได้อย่างง่ายดาย

อัปเดต (15.04.11): ฉันเขียนโพสต์อื่นในหัวเรื่องอธิบายวิธีจัดการกับปัญหาทั่วไปของการอัพเกรด R บน windows 7


2
สำหรับเวอร์ชั่นล่าสุดของ R Tal มีแพ็คเกจที่เรียกใช้installrโดยอัตโนมัติซึ่งกระบวนการนี้ (ปัจจุบันเฉพาะบน Windows) r-statistics.com/tag/installrหรือgithub.com/talgalili/installr
Louis Maddox

1
เรียก Rgui.exe จาก C: \ Program Files \ r \ R-3.6.0 \ bin \ i386 install.packages(installr); library(installr); updateR(TRUE)และเขียนรหัสเพื่อคอนโซล: ในตอนท้าย[1] TRUEจะปรากฏขึ้น จากแพ็คเกจยอดเยี่ยมของ Galili ฉันผ่านจาก R 3.6.0 เป็น R 3.6.1 ได้อย่างง่ายดายมาก ขอบคุณทัล
Erdogan CEVHER

2

สองตัวเลือก:

  1. ใช้คำตอบของฉันที่นี่
  2. หากคุณใช้ R ภายใต้ Eclipse กับ StatET ให้เปิดเรียกใช้การกำหนดค่าคลิกที่แท็บคอนโซลและในกล่องที่เรียกว่าR ข้อมูลโค้ดเรียกใช้หลังจากเริ่มต้นเพิ่มบรรทัดนี้ด้วยไดเรกทอรีที่คุณเลือก:.libPaths("C:/R/library")

1

ฉันใช้ Windows 8 และด้วยเหตุผลแปลก ๆ ฉันไม่สามารถติดตั้งแพ็คเกจโดยใช้การเชื่อมต่ออินเทอร์เน็ต

ฉันมักจะติดตั้งโดยใช้ไฟล์. zip จาก CRAN

หลังจากฉันไปจาก R 3.2.5 ถึง R 3.3.1

ฉันคัดลอกแพ็กเกจจาก

C:\Path\to\packa\R\win-library\3.2C:\Path\to\packa\R\win-library\3.3ไปยัง

จากนั้นฉันรีสตาร์ทเซสชัน R ทำงานได้อย่างสมบูรณ์แบบ ฉันไม่ได้ตรวจสอบว่าแพ็คเกจทั้งหมดทำงานได้ดีหรือไม่ แต่สิ่งที่ฉันตรวจสอบนั้นทำงานได้อย่างสมบูรณ์แบบดี หวังว่าแฮ็คนี้ใช้ได้สำหรับทุกคน

ไชโย


1

คำตอบที่ได้รับการยอมรับอาจใช้ได้ถ้าคุณมีความสุขุม แต่ฉันได้กำจัดเวอร์ชั่นเก่าไปแล้วดังนั้นจึงไม่สามารถทำตามคำแนะนำเหล่านี้ได้ ขั้นตอนที่อธิบายด้านล่างใช้สำหรับการอัปเกรด OSX จาก 2.1 และ 3.1

อัปเดต: หากต้องการรับไดเรกทอรีสำหรับเวอร์ชันล่าสุดของคุณ (แทนที่จะพิมพ์ใน 3.1 หรือ 3.2) คุณสามารถใช้คำสั่งด้านล่าง ส่วนที่สองแปลงเป็นตัวแปร R โดยตรงโดยข้าม.และ..และ.DS_Storeใช้:

OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/
echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/" 

(เพิ่ม|pbcopyในตอนท้ายเพื่อคัดลอกโดยตรงไปยังคลิปบอร์ด Mac ของคุณ)

จากนั้นภายในRคุณสามารถวางตัวแปรที่สร้างขึ้นได้ เมื่อกำหนดไว้ใน R เวอร์ชั่นใหม่แล้วคุณสามารถวนซ้ำแพ็คเกจที่ติดตั้งจากคำแนะนำด้านบน ...

for (p in setdiff(packages, installed.packages()[,"Package"]))
   install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)

0

สำหรับฉันหน้านี้เป็นสิ่งที่ดี https://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ หรือตัวเลือกอื่นเพียงแค่ติดตั้งใหม่ ตัวเลือกและสุดท้ายคุณใส่ตัวอย่างเช่นใน windows ในพีซีของฉัน

.libPaths (c ("D: /Documents/R/win-library/3.2", "C: / ไฟล์โปรแกรม / R / R-3.2.3 / ไลบรารี่", "C: / ไฟล์โปรแกรม / R / R-3.2 .0 / ไลบรารี่ "," D: /Documents/R/win-library/2.15 ")

ทุกเส้นทางของรุ่นสุดท้ายในกรณีของฉันฉันใส่เส้นทางแรกเสมอ "D: /Documents/R/win-library/3.2" ที่ได้รับการแก้ไขแล้วฉันใส่อีกเพราะคุณไม่จำเป็นต้องคัดลอกหรือย้ายแพคเกจใด ๆ ใน sugest ของฉันเพียงแค่เรียกมันว่า


0

linux+ bash+ debian+ aptผู้ใช้:

  1. หากคุณกำลังติดตั้ง / อัปเกรดเป็นเวอร์ชั่นใหม่ล่าสุดRเราอาจถือว่าคุณได้rootรับอนุญาต (ไม่จำเป็นเพียงแค่ทำให้กระบวนการง่ายขึ้นมากเพื่อความสอดคล้องสคริปต์ด้านล่างใช้sudoสำหรับการติดตั้งทั้งหมด ) เนื่องจากRแพ็คเกจยังได้รับการติดตั้งด้วยrootจึงอนุญาตให้วางสิ่งเหล่านี้/usr/local/ได้

  2. เรียกร้องให้curlด้านล่างถือว่าคุณมีความสนใจอยู่แล้วในsidการเปิดตัวของRที่มากล่าสุดเสถียรรุ่น (ตามที่ต้องการเมื่อมีการสร้าง / การตรวจสอบที่Rแพคเกจ) คือ

    cat /etc/apt/sources.list | grep 'sid' || exit 1

    busterแม้ว่าเรื่องนี้ได้อย่างง่ายดายสามารถถูกแทนที่ด้วยรุ่นเสถียรเช่นที่ผ่านมา

  3. โปรดทราบว่าฉันไม่ได้ใช้รหัสตามที่แนะนำไว้โดยทั่วไป สิ่งนี้ไม่จำเป็นโดยเฉพาะถ้า (ในสคริปต์ที่ตามมา) เราติดตั้งแพคเกจภายใน Rตัวเอง ( Rscript -eด้านล่าง) นอกจากนี้คีย์ดังกล่าวมีแนวโน้มที่จะทำลาย / เปลี่ยนแปลงทุก ๆ สองสามปี ดังนั้นคุณยินดีต้อนรับเพื่อเพิ่มคำนำต่อไปนี้ไปยังไฟล์R.shซึ่งดังต่อไปนี้:

    sudo apt-key adv --keyserver keyserver.ubuntu.com \ --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

  4. arrayของRแพคเกจไม่ชัดเจนครบถ้วนสมบูรณ์ แต่ให้ตัวอย่างบางส่วนซึ่งผมเองพบว่ามีประโยชน์ การติดตั้ง / อัปเดตใหม่พร้อมdebianแพ็คเกจr-recommendedดังต่อไปนี้ควรให้แพคเกจ 'แนะนำ' เวอร์ชันล่าสุดทั้งหมด (เช่นsurvival) ฉันเชื่อว่าอาจมีความล่าช้าเล็กน้อยระหว่างการเปิดตัว CRAN และการอัปเดตสำหรับสิ่งที่เกี่ยวข้องdebianแพ็คเกจที่ดังนั้นคุณอาจต้องการเพิ่มสิ่งเหล่านี้ลงในรายการarrayด้านล่างหากจำเป็นต้องมีRแพ็คเกจ'แนะนำ' รุ่นล่าสุด

  5. debianแพคเกจติดตั้งในขั้นตอนดังต่อไปนี้ยังไม่จำเป็น (การใช้r-base) หรือหมดจด แต่ให้ไม่มี ของ 'ส่วนเสริม' ซึ่งมีความสำคัญสำหรับการไม่สมเหตุสมผล ของRแพคเกจ

อย่างไรก็ตาม ... วางสิ่งต่อไปนี้ในR.sh:

sudo apt update && sudo apt --yes full-upgrade
sudo apt install --yes libappstream4 curl
### ov1 = online version; lv1 = local version (i.e. currently installed)
ov1=$(curl --silent --url https://packages.debian.org/sid/r-base |
    grep 'meta name=\"Keywords\"' |
    grep --only-matching '[0-9].*[0-9]') ; echo $ov1
## command -v = print a description of COMMAND similar to the `type' builtin
## && = if prior command succeeds, then do; || = if prior fails, then do
command -v 'R --version' &&
    lv1=$(R --version |
              grep --only-matching '[0-9\.]*[0-9]' |
              ## || = otherwise
              head -1) ||
        lv1=0
## 'lt' = less than
if dpkg --compare-versions "$lv1" 'lt' "$ov1" 
then ## declare -a = indexed array
     declare -a deb1=('r-base' 'r-base-dev' 'r-recommended')
     for i in "${deb1[@]}"
     do sudo apt install --yes "$i"
     done
fi
### certain Debian packages are required by 'R' so best have these first
sudo apt install --yes ccache libcairo2-dev libxml2-dev libcurl4-openssl-dev \
     libssl-dev liblapack-dev libssl-dev
declare -a pkg1=('data.table' 'ggplot2' 'knitr' 'devtools' 'roxygen2')
## installing as 'root' so these are installed in
Rscript -e ".libPaths()[1]"
for i in "${pkg1[@]}"
do sudo Rscript -e "install.packages('$i', dependencies=TRUE)"
done
### other useful additions
sudo apt install --yes libblas-dev libboost-dev libarmadillo-dev \
     jags pandoc pandoc-citeproc 
sudo apt update && sudo apt full-upgrade

จากนั้นดำเนินการเช่นสมมติว่าอยู่ในไดเรกทอรีแล้ว: source R.shจากนั้นดำเนินการได้เช่นสมมติว่าในไดเรกทอรีแล้ว:

การติดตั้งแพ็กเกจ ( debianหรือR) ทีละตัวในการวนซ้ำจากเชลล์นั้นค่อนข้างไม่มีประสิทธิภาพ แต่ช่วยให้การติดตามข้อผิดพลาดง่ายขึ้น IMHO อาจใช้เวลาสักพักขึ้นอยู่กับว่าไม่มี ของRแพคเกจดังนั้นบางทีที่ง่ายที่สุดที่จะให้ทำงานในชั่วข้ามคืน ...


1
ไม่แน่ใจว่าทำไม 'การอยู่รอด' อยู่ในรายการแพ็คเกจเสริม (และอาจเป็นไปได้ว่าฉันทำให้เข้าใจผิดว่าทุบตีสคริปต์นี้) เป็นแพ็คเกจ "แนะนำ" ตั้งแต่ ... ตลอดไป หากคุณไม่ได้ติดตั้งแพ็กเกจที่แนะนำทั้งหมดด้วยสคริปต์นั้นควรทำการแก้ไขเพื่อทำเช่นนั้น ยังคิดว่าชุด r-base-devel จะเป็นที่ต้องการสำหรับทุกคนที่ใช้ linux และทำไมไม่เพิ่ม PPA ของ Michael Rutter ล่ะ?
IRTFM

ขอบคุณ! อัปเดตตามความคิดเห็นที่เป็นประโยชน์ของคุณ r-recommendedเห็นด้วยไม่จำเป็นต้องเป็นประจำในการติดตั้งแพคเกจที่มีอยู่แล้วใน 'r-base-devel' เป็นที่รู้จักกันในชื่อr-base-dev( debianแพ็คเกจ) - รวมอยู่แล้ว ฉันไม่รังเกียจที่จะใช้กุญแจเพื่อความปลอดภัย (ตอบปรับปรุง) คำตอบอยู่ห่างจากการใช้PPA= เก็บแพคเกจส่วนบุคคลเป็นสิ่งเหล่านี้โดยขึ้นอยู่กับความจำเป็นขึ้นอยู่กับคนคนหนึ่งและอาจทำให้ผิดพลาดได้ ดังที่ Michael Rutter กล่าวไว้ (2012): "ถ้าคุณใช้ CRAN แล้วไม่มีเหตุผลที่จะเปลี่ยนเป็น PPA เนื่องจากแพคเกจเดียวกันนี้มีให้ที่ทั้งสองแห่ง"
dardisco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.