R Academy · Ders

CRAN'e Gönderim ve Paket Bakımı

R CMD check komutunu çalıştırın, NOTE/WARNING sorunlarını çözün ve CRAN'e gönderin.

4. ders / 413 adım

CRAN'e Gönderim ve Paket Bakımı, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

CRAN'e Paket Gönderme Süreci

CRAN (Comprehensive R Archive Network), resmî R paket deposudur. Bir paket göndermek için katı politikalara uygun otomatik kontrollerden ve insan incelemesinden geçmek gerekir. Süreç şöyledir: hazırlama → kontrol etme → derleme → gönderme → geri bildirimlere göre düzeltme.

devtools::check() — Sıfır Hata ve Uyarı

Göndermeden önce devtools::check() 0 ERROR ve 0 WARNING üretmelidir. NOTE'lara izin verilir, ancak sayıları en aza indirilmelidir. Kontrol sırasında yakalanan yaygın sorunlar:

  • Belgelendirilmemiş işlevler veya bağımsız değişkenler
  • DESCRIPTION içinde eksik paket içe aktarmaları
  • Hata veren veya çok uzun süren örnekler
  • Global değişken kullanımı (utils::globalVariables() kullanın)
# devtools::check()  # or Ctrl+Shift+E
#
# Target output:
# -- R CMD check results -------------------------
# Duration: 45.3s
# 0 errors v | 0 warnings v | 1 note x
# NOTE: New submission.
#
# 'New submission' is an expected NOTE for first-time packages.
# All actual ERRORs and WARNINGs must be fixed before submitting.

CRAN Politikaları — Temel Kurallar

CRAN katı politikalar uygular. En sık ihlal edilen kurallar şunlardır:

  • Kullanılabilirliğe bağlı olmadığı sürece örneklerde, testlerde veya vinyetlerde internet erişimi kullanmayın
  • Örneklerin toplam çalışma süresi < 5 saniye olmalıdır — yavaş örnekler için \dontrun{} veya \donttest{} kullanın
  • Kullanıcının ana dizinine yazmayın — örneklerde tempdir() kullanın
  • Sabit kodlanmış yollar kullanmayın — tüm dosya işlemlerinde göreli yollar veya tempdir() kullanın
# Correct: examples that write to tempdir
# #' @examples
# #' tmp <- tempfile()
# #' write.csv(mtcars, tmp)
# #' read.csv(tmp)
# #' unlink(tmp)
#
# Correct: skip slow or network examples
# #' @examples
# #' \dontrun{
# #'   # slow operation
# #'   fit_big_model(huge_dataset)
# #' }

devtools::build() — Paket Paketinin Oluşturulması

devtools::build(), CRAN'e gönderilmeye uygun bir .tar.gz kaynak paketi oluşturur (örneğin, mypackage_0.1.0.tar.gz). Yerel işletim sisteminize dağıtmak üzere ikili paket oluşturmak için devtools::build(binary = TRUE) kullanın.

# devtools::build()
# => mypackage_0.1.0.tar.gz
#
# What build does:
# 1. Runs devtools::document() to regenerate man/ and NAMESPACE
# 2. Compiles vignettes (if any)
# 3. Bundles R/, man/, DESCRIPTION, NAMESPACE, tests/ etc.
# 4. Excludes files listed in .Rbuildignore
#
# Inspect the bundle:
# tar -tzf mypackage_0.1.0.tar.gz | head -20

devtools::release() — Etkileşimli Gönderim

devtools::release(), gönderim öncesindeki son kontrollerde size yol gösteren etkileşimli bir kontrol listesi çalıştırır, CRAN politikalarını onaylamanızı ister ve ardından .tar.gz paketini CRAN'in web API'sini kullanarak https://cran.r-project.org/submit.html adresine gönderir.

# devtools::release()
#
# Interactive questions include:
# - Have you checked on R-devel?
# - Have you checked on Windows with win-builder?
# - Is there a single top-level .R file in tests/?
# - Have you removed donttest{} for essential examples?
# - Is the package correctly versioned?
#
# After answering, it submits and emails the CRAN team.

Birden Çok Platformda Kontrol Etme

CRAN, paketleri birden çok işletim sistemi ve R sürümünde kontrol eder. Göndermeden önce kapsamlı testler yapın:

  • devtools::check_win_devel() — win-builder'a gönderir (Windows, R-devel)
  • devtools::check_rhub() — R-hub aracılığıyla birden çok Linux/Windows platformunda kontrol eder
  • devtools::check_mac_release() — macOS kontrolü
# Check on Windows R-devel (submits to win-builder, results emailed):
# devtools::check_win_devel()
#
# Check on multiple platforms via R-hub:
# rhub::check_for_cran()   # requires rhub package and account
#
# Minimum: check locally + win-builder before every CRAN submission
cat('CRAN checks on Windows, macOS, and multiple Linux distros
')

NEWS.md — Değişiklikleri Bildirme

NEWS.md, sürümler arasındaki değişiklikleri belgeler. CRAN, güncellemeler için bunu zorunlu tutar. Her sürümü, yapılan değişiklikleri açıklayan madde işaretlerine sahip bir başlık olarak biçimlendirin. Kullanıcılar ve CRAN incelemecileri, nelerin değiştiğini anlamak için bunu okur.

# NEWS.md format:
#
# # mypackage 0.2.0
# * Added subtract() function for element-wise subtraction.
# * add() now accepts complex numbers.
# * Fixed bug where add(NA, x) returned 0 instead of NA.
#
# # mypackage 0.1.0
# * Initial CRAN release.
# * Core add() function for numeric addition.
cat('usethis::use_news_md() creates NEWS.md with the right format
')

Sürüm Numarasını Artırmak için usethis::use_version()

usethis::use_version('minor'), DESCRIPTION içindeki sürüm numarasını artırır ve NEWS.md içine yeni bir yer tutucu başlık ekler. Anlamsal sürüm oluşturmayı kullanın: major.minor.patch.

# Version bump commands:
# usethis::use_version('patch')   # 0.1.0 -> 0.1.1  (bug fixes)
# usethis::use_version('minor')   # 0.1.0 -> 0.2.0  (new features)
# usethis::use_version('major')   # 0.1.0 -> 1.0.0  (breaking changes)
# usethis::use_version('dev')     # 0.1.0 -> 0.1.0.9000 (dev suffix)
#
# CRAN packages should NOT have a dev suffix (e.g., 0.9000)
# Dev suffix signals work-in-progress on GitHub between releases

Sürekli Entegrasyon için GitHub Actions

r-lib/actions kullanarak her gönderimde R CMD check işlemini otomatikleştirin. usethis::use_github_action('check-standard'), Ubuntu, macOS ve Windows üzerinde birden çok R sürümünü kontrol eden bir iş akışı oluşturur.

# usethis::use_github_action('check-standard')
# Creates .github/workflows/R-CMD-check.yaml
#
# The workflow:
# - triggers on push and pull_request
# - runs on ubuntu-latest, macos-latest, windows-latest
# - tests on R release, R devel, and R oldrel
# - caches installed packages for faster runs
# - reports check results as GitHub status checks

CRAN İncelemecilerinin Geri Bildirimlerini Ele Alma

CRAN incelemecileri değişiklik yapılmasını isteyebilir. Yaygın istekler şunlardır:

  • Uzun süren örnekleri \donttest{} ile sarmalayın
  • Kullanıcı arayüzü açan işlevler için if (interactive()) korumalarını kullanın
  • Belgelendirmedeki yazım hatalarını düzeltin (usethis::use_spell_check() kullanın)
  • Daha açıklayıcı hata iletileri ekleyin

Hızlıca yanıt verin ve paketi yeniden gönderin. Birden çok inceleme turu normaldir.

# Spell check DESCRIPTION and man/ pages:
# usethis::use_spell_check()
# spelling::spell_check_package()  # run the check
#
# Add words to WORDLIST to ignore false positives:
# spelling::update_wordlist()
#
# After making all changes:
# devtools::check()  # confirm 0 errors/warnings
# devtools::release()  # resubmit

Yayımdan Sonra Paket Bakımı

CRAN kabulünden sonra sürekli bakım şunları içerir:

  • R-devel kontrollerinde bağımlılıklardan gelen kullanımdan kaldırma uyarılarını izleyin
  • CRAN kontrolü başarısızlıklarını 14 gün içinde giderin (CRAN politikası)
  • Eski işlevleri aşamalı olarak kullanımdan kaldırmak için lifecycle::deprecate_warn() kullanın
  • Bir belgelendirme web sitesi için usethis::use_github_action('pkgdown') kurun
# Mark a function as deprecated:
# library(lifecycle)
#
# old_add <- function(x, y) {
#   lifecycle::deprecate_warn('0.2.0', 'old_add()', 'add()')
#   add(x, y)
# }
#
# Users see: 'old_add()' was deprecated in mypackage 0.2.0.
# Please use 'add()' instead.

Hızlı Kontrol: CRAN Örnek Politikası

Belgelendirmenize uzun süren bir örneği ekleyip CRAN'in otomatik denetleyicisinin bu örneği çalıştırmasını engellemek için hangi etiketi kullanmalısınız?

CRAN'e Gönderim ve Bakım Özeti

CRAN yayın iş akışı:

  • devtools::check() — 0 ERROR ve 0 WARNING gerekir
  • CRAN politikaları: örneklerde internet kullanmayın, örnekler < 5 saniye, yazma işlemleri için tempdir() kullanın
  • devtools::build() — .tar.gz paketi oluşturur
  • devtools::release() — etkileşimli, yönlendirmeli gönderim
  • Platformlar arası kontroller: check_win_devel(), R-hub
  • Sürüm başlıklarına sahip NEWS.md; use_version('minor') ile sürümü artırın
  • Gönderimlerde sürekli entegrasyon için r-lib/actions ile GitHub Actions
  • İncelemeci geri bildirimlerine 14 gün içinde yanıt verin
Başlamak ücretsiz

Yapay zeka eğitmeniyle R öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
43
Dersler
159

Sıkça Sorulan Sorular

“CRAN'e Gönderim ve Paket Bakımı” dersi ücretsiz mi?

Evet — “CRAN'e Gönderim ve Paket Bakımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“CRAN'e Gönderim ve Paket Bakımı” dersinde ne öğreneceğim?

R CMD check komutunu çalıştırın, NOTE/WARNING sorunlarını çözün ve CRAN'e gönderin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“CRAN'e Gönderim ve Paket Bakımı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. usethis ve devtools ile Paket Yapısı
  2. roxygen2 ile İşlevleri Belgeleme
  3. testthat ile Birim Testi
  4. CRAN'e Gönderim ve Paket Bakımı
← R Academy Sayfasına Dön