附录 A 命令行操作
Bash 文件查找、查看(内容、大小)、移动(重命名)、删除、创建、修改权限
Linux 命令行工具是非常强大的,命令行中的数据科学 https://www.datascienceatthecommandline.com/,Linux 命令行 https://github.com/jaywcjlove/linux-command
optparse、docopt 、littler 包提供了很多便捷的命令行工具,sys, fs 在 R 中运行操作系统命令
如表A.1所示,总结了 R 和 Shell 命令的等价表示,下面以 list.files()
和 ls
为例,介绍其等价的内容
R | Shell | |
---|---|---|
查看文件 | list.files() |
ls |
查看目录 | list.dirs() |
dir |
目录层次 | fs::dir_tree() |
tree |
A.1 查看文件
ls
/mkdir
/mv
/du
查看文件
```bash
ls -a
```
列出目录下所有文件
```bash
ls -1
```
一行显示一个文件或文件夹
```bash
ls -l
```
按从 aA-zZ 的顺序列出所有文件以及所属权限
```bash
ls -rl
```
相比于 `ls -l` 文件是逆序排列
```bash
ls -lh
```
列出文件或文件夹(不包含子文件夹)的大小
```bash
ls -ld
```
列出当前目录本身,而不是其所包含的内容
A.2 创建文件夹
```bash
mkdir images
```
创建文件用 `touch` 如 `touch .Rprofile`
```bash
# 删除文件夹及子文件夹,递归删除
rm -rf images/
# 删除文件
rm .Rprofile
```
A.3 移动文件
在当前目录下
```bash
# 移动文件夹 images 下的所有文件到 figures 文件夹下
mv images/* figures/
# images 文件夹移动到 figures 文件夹下
mv images/ figures/
# 移动特定的文件
mv images/*.png figures/
```
同一目录下有两个文件 `R-3.5.1.tar.gz` 未下载完整 和 `R-3.5.1.tar.gz.1` 完全下载
```bash
# 删除 R-3.5.1.tar.gz
rm R-3.5.1.tar.gz
# 重命名 R-3.5.1.tar.gz.1
mv R-3.5.1.tar.gz.1 R-3.5.1.tar.gz
```
A.4 查看文件大小
当前目录下各文件夹的大小, `-h` 表示人类(相对于机器来说)可读的方式显示,如 Kb、Mb、Gb,`-d` 表示目录深度 `du --human-readable --max-depth=1 ./`
```bash
du -h -d 1 ./
```
```bash
# 对当前目录下的文件/夹 按大小排序
du -sh * | sort -nr
```
A.5 终端模拟器
oh-my-zsh 是 Z Shell 扩展,开发在 Github 上 https://github.com/ohmyzsh/ohmyzsh。
zsh 相比于 bash, 在语法高亮、自动补全等方面有优势
sudo dnf install -y zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
RStudio 集成的终端支持 Zsh,操作路径 Tools -> Global Options -> Terminal, 见图 A.1

图 A.1: RStudio IDE 集成的 Zsh 终端模拟器
A.6 压缩和解压缩
最常见的压缩文件格式有 .tar
、.tar.gz
、.tar.bz2
、.zip
和 .rar
,分别对应于 Tar https://www.gnu.org/software/tar/、 Gzip https://www.gzip.org/ 、 Bzip2 https://www.bzip.org/ 、 UnZip/Zip http://www.info-zip.org 和 WinRAR https://www.rarlab.com/。 Tar 提供了基本的打包和解包工具,Gzip 和 Bzip2 在 Tar 打包的基础上提供了压缩功能, UnZip/Zip 是兼容 Windows 原生压缩/解压缩功能的程序,WinRAR 是广泛流行于 Windows 系统的压缩/解压缩收费软件,除了 WinRAR,其它都是免费甚至开源软件。 下面以 .tar.gz
和.tar.bz2
两种格式的压缩文件为例,介绍文件压缩和解压缩的操作,其它文件格式的操作类似51。WinRAR https://www.rarlab.com/ 是收费的压缩和解压缩工具,也支持 Linux 和 macOS 系统,鉴于它是收费软件,这里就不多展开介绍了,详情请见官网。
sudo dnf install -y tar gzip zip unzip
# 将目录 ~/tmp 压缩成文件 filename.tar.gz
tar -czf **.tar.gz ~/tmp
# 将文件 filename.tar.gz 解压到目录 ~/tmp
tar -xzf **.tar.gz -C ~/tmp
sudo dnf install -y bzip2
# 将目录 ~/tmp 压缩成文件 filename.tar.bz2
tar -cjf filename.tar.bz2 ~/tmp
# 将文件 filename.tar.bz2 解压到目录 ~/tmp
tar -xjf filename.tar.bz2 -C ~/tmp
解压不带 tar 的 .gz 文件,比如 tex.eps.gz 解压后变成 tex.eps
gzip filename.gz -d ~/tmp
A.7 从仓库安装 R
A.7.1 Ubuntu
安装 openssh zsh 和 Git
sudo apt-get install zsh openssh-server
sudo add-apt-repository -y ppa:git-core/ppa
sudo apt update && sudo apt install git
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
只考虑最新的 Ubuntu 18.04 因为本书写成的时候,该版本应该已经大规模使用了,默认版本的安装和之前版本的安装就不再展示了。安装最新版 R-3.5.x,无论安装哪个版本,都要先导入密钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E084DAB9
-
Ubuntu 14.04.5 提供的默认版本 R 3.0.2,安装 R 3.5.x 系列之前的版本,如 R 3.4.4
sudo apt-add-repository -y "deb http://cran.rstudio.com/bin/linux/ubuntu `lsb_release -cs`/" sudo apt-get install r-base-dev
添加完仓库后,都需要更新源
sudo apt-get update
,安装 R 3.5.x 系列最新版sudo apt-add-repository -y "deb https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu trusty-cran35/"
-
Ubuntu 16.04.5 提供的默认版本 R 3.4.4,这是 R 3.4.x 系列的最新版,安装目前最新的 R 3.5.x 版本需要
sudo apt-add-repository -y "deb https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu xenial-cran35/"
-
Ubuntu 18.04.1 提供的默认版本 R 3.4.4,安装目前的最新版本需要
sudo apt-add-repository -y "deb https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu bionic-cran35/"
接下来安装 R,详细安装指导见 CRAN 官网。
sudo apt-get install -y r-base-dev
Michael Rutter 维护了编译好的二进制版本 https://launchpad.net/~marutter,比如 rstan 包可以通过安装 r-cran-rstan 完成
# R packages for Ubuntu LTS. Based on CRAN Task Views. sudo add-apt-repository -y ppa:marutter/c2d4u3.5 sudo apt-get install r-cran-rstan
A.8 源码安装
A.8.1 Ubuntu
- 首先启用源码仓库,否则执行
sudo apt-get build-dep r-base
会报如下错误
E: You must put some 'source' URIs in your sources.list
sudo sed -i -- 's/#deb-src/deb-src/g' /etc/apt/sources.list && sudo sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list
sudo apt-get update
- 安装编译 R 所需的系统依赖
sudo apt-get build-dep r-base-dev
- 编译安装 R
./configure
make && make install
- 自定义编译选项
./configure --help
A.8.2 CentOS
基于 CentOS 7 和 GCC 4.8.5,参考 R-admin 手册
-
下载源码包
最新发布的稳定版
curl -fLo ./R-latest.tar.gz https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-latest.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 10 28.7M 10 3232k 0 0 107k 0 0:04:34 0:00:30 0:04:04 118k
-
安装依赖
sudo yum install -y yum-utils epel-release && sudo yum-builddep R-devel sudo dnf update && sudo dnf builddep R-devel # Fedora 30
-
解压配置
mkdir R-latest && tar -xzf ./R-latest.tar.gz -C ./R-latest && cd R-3.5.2 ./configure --enable-R-shlib --enable-byte-compiled-packages \ --enable-BLAS-shlib --enable-memory-profiling
R is now configured for x86_64-pc-linux-gnu Source directory: . Installation directory: /usr/local C compiler: gcc -std=gnu99 -g -O2 Fortran 77 compiler: gfortran -g -O2 Default C++ compiler: g++ -g -O2 C++98 compiler: g++ -std=gnu++98 -g -O2 C++11 compiler: g++ -std=gnu++11 -g -O2 C++14 compiler: C++17 compiler: Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11, tcltk External libraries: readline, curl Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU Options enabled: shared R library, shared BLAS, R profiling, memory profiling Capabilities skipped: Options not enabled: Recommended packages: yes
-
编译安装
make -j 2 all sudo make install
-
BLAS 加持(可选)
BLAS 对于加快矩阵计算至关重要,编译 R 带 BLAS 支持,添加 OpenBLAS 支持
--with-blas="-lopenblas"
或 ATLAS 支持--with-blas="-L/usr/lib64/atlas -lsatlas"
sudo yum install -y openblas openblas-threads openblas-openmp ./configure --enable-R-shlib --enable-byte-compiled-packages \ --enable-BLAS-shlib --enable-memory-profiling \ --with-blas="-lopenblas"
R is now configured for x86_64-pc-linux-gnu Source directory: . Installation directory: /usr/local C compiler: gcc -std=gnu99 -g -O2 Fortran 77 compiler: gfortran -g -O2 Default C++ compiler: g++ -g -O2 C++98 compiler: g++ -std=gnu++98 -g -O2 C++11 compiler: g++ -std=gnu++11 -g -O2 C++14 compiler: C++17 compiler: Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11, tcltk External libraries: readline, **BLAS(OpenBLAS)**, curl Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU Options enabled: shared R library, shared BLAS, R profiling, memory profiling Capabilities skipped: Options not enabled: Recommended packages: yes
配置成功的标志,如 OpenBLAS
checking for dgemm_ in -lopenblas... yes checking whether double complex BLAS can be used... yes checking whether the BLAS is complete... yes
ATLAS 加持
sudo yum install -y atlas ./configure --enable-R-shlib --enable-byte-compiled-packages \ --enable-BLAS-shlib --enable-memory-profiling \ --with-blas="-L/usr/lib64/atlas -lsatlas"
R is now configured for x86_64-pc-linux-gnu Source directory: . Installation directory: /usr/local C compiler: gcc -std=gnu99 -g -O2 Fortran 77 compiler: gfortran -g -O2 Default C++ compiler: g++ -g -O2 C++98 compiler: g++ -std=gnu++98 -g -O2 C++11 compiler: g++ -std=gnu++11 -g -O2 C++14 compiler: C++17 compiler: Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11, tcltk External libraries: readline, **BLAS(generic)**, curl Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU Options enabled: shared R library, shared BLAS, R profiling, memory profiling Capabilities skipped: Options not enabled: Recommended packages: yes
ATLAS 配置成功
checking for dgemm_ in -L/usr/lib64/atlas -lsatlas... yes checking whether double complex BLAS can be used... yes checking whether the BLAS is complete... yes
后续步骤同上
A.9 忍者安装
从源码自定义安装:加速 Intel MKL 和 大文件支持
https://software.intel.com/en-us/articles/using-intel-mkl-with-r
A.11 命令行参数
commandArgs
从终端命令行中传递参数
-
rdoc 高亮 R 帮助文档中的 R 函数、关键字
NULL
。启用需要在R控制台中执行rdoc::use_rdoc()
-
radian 代码自动补全和语法高亮,进入 R 控制台,终端中输入
radian
- docopt 提供R命令行工具,如 littler 包,getopt 从终端命令行接受参数
- optparse 命令行选项参数的解析器
安装完 R-littler R-littler-examples (centos) 或 littler r-cran-littler (ubuntu) 后,执行
# centos
sudo ln -s /usr/lib64/R/library/littler/examples/install.r /usr/bin/install.r
sudo ln -s /usr/lib64/R/library/littler/examples/install2.r /usr/bin/install2.r
sudo ln -s /usr/lib64/R/library/littler/examples/installGithub.r /usr/bin/installGithub.r
sudo ln -s /usr/lib64/R/library/littler/examples/testInstalled.r /usr/bin/testInstalled.r
# ubuntu
sudo ln -s /usr/lib/R/site-library/littler/examples/install.r /usr/bin/install.r
sudo ln -s /usr/lib/R/site-library/littler/examples/install2.r /usr/bin/install2.r
sudo ln -s /usr/lib/R/site-library/littler/examples/installGithub.r /usr/bin/installGithub.r
sudo ln -s /usr/lib/R/site-library/littler/examples/testInstalled.r /usr/bin/testInstalled.r
这样可以载终端中安装 R 包了
install.r docopt
#!/usr/bin/env Rscript
# 安装 optparse 提供更加灵活的传参方式
# 也可参考 littler https://github.com/eddelbuettel/littler
# if("optparse" %in% .packages(TRUE)) install.packages('optparse',repos = "https://cran.rstudio.com")
# https://cran.r-project.org/doc/manuals/R-intro.html#Invoking-R-from-the-command-line
# http://www.cureffi.org/2014/01/15/running-r-batch-mode-linux/
args = commandArgs(trailingOnly=TRUE)
# 函数功能:在浏览器中同时打开多个 PDF 文档
open_pdf <- function(pdf_path = "./figures/", n = 1) {
# pdf_path: PDF文件所在目录
# n: 默认打开1个PDF文档
# PDF文档目录
pdfs <- list.files(pdf_path, pattern = '\\.pdf$')
# PDF 文档路径
path_to_pdfs <- paste(pdf_path, pdfs, sep = .Platform$file.sep)
# 打开 PDF 文档
invisible(lapply(head(path_to_pdfs, n), browseURL))
}
open_pdf(pdf_path, n = args[1])
# 使用: Rscript --vanilla code/batch-open-pdf.R 20
A.12 从源码安装 R
从源码编译 R 的需求大概有以下几点:
- 爱折腾的极客:玩配置,学习 make 相关工具和 Linux 世界的依赖
- 追求性能:如 LFS 支持 和 Intel MKL 加速
- 环境限制:CentOS 或者红帽系统,自带的 R 版本比较落后
./configure --prefix=/opt/R/R-devel \
--enable-R-shlib --enable-byte-compiled-packages \
--enable-BLAS-shlib --enable-memory-profiling --with-blas="-lopenblas"
R is now configured for x86_64-pc-linux-gnu
Source directory: .
Installation directory: /opt/R/R-devel
C compiler: gcc -g -O2
Fortran fixed-form compiler: gfortran -fno-optimize-sibling-calls -g -O2
Default C++ compiler: g++ -std=gnu++11 -g -O2
C++14 compiler: g++ -std=gnu++14 -g -O2
C++17 compiler: g++ -std=gnu++17 -g -O2
C++20 compiler: g++ -std=gnu++2a -g -O2
Fortran free-form compiler: gfortran -fno-optimize-sibling-calls -g -O2
Obj-C compiler:
Interfaces supported: X11, tcltk
External libraries: pcre2, readline, BLAS(OpenBLAS), curl
Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU
Options enabled: shared R library, shared BLAS, R profiling, memory profiling
Capabilities skipped:
Options not enabled:
Recommended packages: yes
配置好了以后,可以编译安装了
make && sudo make install
flexiblas 支持多种 BLAS 库自由切换
A.13 安装软件
本书在后续章节中陆续用到新的 R 包,其安装过程不会在正文中呈现,下面以在 CentOS 8 上安装 sf 包为例介绍。首先需要安装一些系统依赖,具体安装哪些依赖参见 sf 包开发站点 https://github.com/r-spatial/sf。
sudo dnf config-manager --set-disabled PowerTools # openblas-devel
sudo dnf install -y sqlite-devel gdal-devel \
proj-devel geos-devel udunits2-devel
然后,在 R 命令行窗口中,执行安装命令:
install.packages('sf')
至此,安装完成。如遇本地未安装的新 R 包,可从其官方文档中找寻安装方式。如果你完全不知道自己应该安装哪些,考虑把下面的依赖都安装上
sudo dnf install -y \
# magick
ImageMagick-c++-devel \
# pdftools
poppler-cpp-devel \
# gifski
cargo
软件包管理器架构图,各个命令分别担负什么样的功能,每个命令学习的一般路径是什么,而不是详细介绍每个命令、每个参数的使用,只需给出一个命令的完整使用即可,其余给出一个查询命令帮助手册
dnf copr
dnf config-manager
A.14 安装 R 包
Iñaki Ucar 开发的 cran2copr 项目实现在 Fedora 上安装预编译好的二进制 R 包,项目目的类似 Debian 平台上的 cran2deb
-
devtools 是开发 R 包的常用工具,同时具有很重的依赖,请看
tools::package_dependencies('devtools', recursive = TRUE)
## $devtools ## [1] "usethis" "cli" "desc" "ellipsis" "fs" ## [6] "lifecycle" "memoise" "miniUI" "pkgbuild" "pkgdown" ## [11] "pkgload" "profvis" "rcmdcheck" "remotes" "rlang" ## [16] "roxygen2" "rversions" "sessioninfo" "stats" "testthat" ## [21] "tools" "urlchecker" "utils" "withr" "R6" ## [26] "rprojroot" "methods" "glue" "cachem" "shiny" ## [31] "htmltools" "callr" "crayon" "prettyunits" "processx" ## [36] "bslib" "digest" "downlit" "httr" "jsonlite" ## [41] "magrittr" "purrr" "ragg" "rmarkdown" "tibble" ## [46] "whisker" "xml2" "yaml" "htmlwidgets" "stringr" ## [51] "curl" "xopen" "brew" "commonmark" "knitr" ## [56] "stringi" "cpp11" "brio" "evaluate" "praise" ## [61] "ps" "waldo" "clipr" "gert" "gh" ## [66] "rappdirs" "rstudioapi" "graphics" "grDevices" "sass" ## [71] "jquerylib" "base64enc" "mime" "fastmap" "fansi" ## [76] "vctrs" "askpass" "credentials" "openssl" "sys" ## [81] "zip" "gitcreds" "ini" "highr" "xfun" ## [86] "systemfonts" "textshaping" "tinytex" "httpuv" "xtable" ## [91] "fontawesome" "sourcetools" "later" "promises" "pillar" ## [96] "pkgconfig" "diffobj" "rematch2" "Rcpp" "utf8"
其中,依赖关系见表 A.2
表 A.2: devtools 的系统依赖 curl git2r openssl Ubuntu libcurl-dev53 libgit2-dev libssl-dev CentOS libcurl-devel libgit2-devel openssl-devel
-
sf 是处理空间数据的常用工具
tools::package_dependencies('sf', recursive = TRUE)
## $sf ## [1] "methods" "classInt" "DBI" "graphics" "grDevices" ## [6] "grid" "magrittr" "Rcpp" "s2" "stats" ## [11] "tools" "units" "utils" "e1071" "class" ## [16] "KernSmooth" "wk" "MASS" "proxy"
其主要的系统依赖分别是 GEOS 3.5.1, GDAL 2.2.2, PROJ 4.9.2
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable sudo apt-get update sudo apt-get install -y libudunits2-dev libgdal-dev libgeos-dev libproj-dev
这样也同时解决了 udunits2、 rgdal 和 rgeos 等 3个 R 包的系统依赖,其中 udunits2 使用如下命令安装
install.packages(’udunits2’, configure.args = '--with-udunits2-include=/usr/include/udunits2')
-
图形设备支持 cairo png jpeg tiff
sudo apt-get install -y libcairo2-dev libjpeg-dev libpng-dev libtiff-dev
-
sudo yum install fftw-devel # CentOS sudo apt-get install libfftw3-dev # Ubuntu
在 Ubuntu 系统上安装最新的 libmagick++-dev 库
sudo add-apt-repository -y ppa:opencpu/imagemagick sudo apt-get update sudo apt-get install -y libmagick++-dev
在 CentOS 系统上
sudo yum install -y ImageMagick-c++-devel
然后安装 R 包
install.packages(c('imager', 'magick'))
-
rgl 是绘制真三维图形的重量级 R 包
sudo apt-get install libcgal-dev libglu1-mesa-dev libx11-dev # Ubuntu sudo yum install mesa-libGLU mesa-libGLU-devel # CentOS
然后安装 R 包
install.packages('rgl')
在 Ubuntu 系统上还可以这样安装
sudo add-apt-repository ppa:marutter/rrutter3.5 sudo apt-get update sudo apt-get install r-cran-rgl
-
rJava 是 Java 语言和 R 语言之间实现通信交流的桥梁
sudo apt-get install -y default-jdk sudo R CMD javareconf
然后安装 rJava 包
install.packages(’rJava’)
-
igraph 是网络数据分析的必备 R 包,为了发挥其最大性能,需要安装三个系统依赖
sudo apt-get install -y libgmp-dev libxml2-dev libglpk-dev
然后安装 R 包
install.packages('igraph')
-
gpuR 是基于 GPU 进行矩阵计算的扩展包,依赖 RcppEigen 确保安装 OpenCL 和 RViennaCL 或者 安装 Nvidia 驱动和 CUDA,使用 gpuRcuda 和 gputools 扩展包,下面安装指导来自其 Wiki
# Install OpenCL headers sudo apt-get install opencl-headers opencv-dev # Install NVIDIA Drivers and CUDA sudo add-apt-repository -y ppa:xorg-edgers/ppa sudo apt-get update sudo apt-get install nvidia-346 nvidia-settings
nloptr 是 NLopt 的 R 语言接口,首先安装 NLopt 程序库
sudo apt-get install libnlopt-dev
然后安装 R 包install.packages('nloptr')
,nloptr 被 700+ R 包依赖,如 lme4, spaMM, glmmTMB, rstanarm 等。-
Rmpfr
sudo apt-get install libmpfr-dev
install.packages(’Rmpfr’)
-
geojson
sudo yum install jq-devel protobuf-devel
install.packages(c('geojson','geojsonio','jqr','protolite'))
-
lgcp
sudo yum install bwidget
install.packages(c('rpanel','lgcp'))
-
ijtiff
sudo yum install jbigkit-devel
install.packages('ijtiff')
-
webshot 包用于截图
sudo apt install phantomjs
install.packages(’webshot’)
-
gifski 包合成 GIF 动图
sudo apt-get install cargo
install.packages('gifski')
A.15 软件包管理器
A.15.1 dnf
- 清理升级后的 CentOS 8 系统内核
查找系统安装的内核
rpm -qa | sort | grep kernel
kernel-4.18.0-147.8.1.el8_1.x86_64
kernel-4.18.0-193.6.3.el8_2.x86_64
kernel-core-4.18.0-147.8.1.el8_1.x86_64
kernel-core-4.18.0-193.6.3.el8_2.x86_64
kernel-headers-4.18.0-193.6.3.el8_2.x86_64
kernel-modules-4.18.0-147.8.1.el8_1.x86_64
kernel-modules-4.18.0-193.6.3.el8_2.x86_64
kernel-tools-4.18.0-193.6.3.el8_2.x86_64
kernel-tools-libs-4.18.0-193.6.3.el8_2.x86_64
仅保留一个版本的内核,其它旧的内核都删除掉
sudo dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)
模块依赖问题
问题 1: conflicting requests
- nothing provides module(perl:5.26) needed by module perl-DBD-MySQL:4.046:8010020191114030811:073fa5fe-0.x86_64
问题 2: conflicting requests
- nothing provides module(perl:5.26) needed by module perl-DBI:1.641:8010020191113222731:16b3ab4d-0.x86_64
问题 3: conflicting requests
- nothing provides module(perl:5.26) needed by module perl-YAML:1.24:8010020191114031501:a5949e2e-0.x86_64
依赖关系解决。
=======================================================================================================================
软件包 架构 版本 仓库 大小
=======================================================================================================================
移除:
kernel x86_64 4.18.0-147.8.1.el8_1 @BaseOS 0
kernel-core x86_64 4.18.0-147.8.1.el8_1 @BaseOS 58 M
kernel-modules x86_64 4.18.0-147.8.1.el8_1 @BaseOS 20 M
事务概要
=======================================================================================================================
移除 3 软件包
将会释放空间:78 M
确定吗?[y/N]: y
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
删除 : kernel-4.18.0-147.8.1.el8_1.x86_64 1/3
运行脚本: kernel-4.18.0-147.8.1.el8_1.x86_64 1/3
删除 : kernel-modules-4.18.0-147.8.1.el8_1.x86_64 2/3
运行脚本: kernel-modules-4.18.0-147.8.1.el8_1.x86_64 2/3
运行脚本: kernel-core-4.18.0-147.8.1.el8_1.x86_64 3/3
删除 : kernel-core-4.18.0-147.8.1.el8_1.x86_64 3/3
运行脚本: kernel-core-4.18.0-147.8.1.el8_1.x86_64 3/3
验证 : kernel-4.18.0-147.8.1.el8_1.x86_64 1/3
验证 : kernel-core-4.18.0-147.8.1.el8_1.x86_64 2/3
验证 : kernel-modules-4.18.0-147.8.1.el8_1.x86_64 3/3
已移除:
kernel-4.18.0-147.8.1.el8_1.x86_64 kernel-core-4.18.0-147.8.1.el8_1.x86_64
kernel-modules-4.18.0-147.8.1.el8_1.x86_64
完毕!
解决上述模块依赖问题的办法 是重置三个 Perl 模块
sudo dnf module reset perl-DBD-MySQL perl-YAML perl-DBI
依赖关系解决。
=======================================================================================================================
软件包 架构 版本 仓库 大小
=======================================================================================================================
重置模块:
perl-DBD-MySQL
perl-DBI
perl-YAML
事务概要
=======================================================================================================================
确定吗?[y/N]: y
完毕!
A.15.2 apt
添加或删除 PPA (Personal Package Archive),比如在 Ubuntu 20.04 及之前的版本上安装新版 Inkscape
sudo add-apt-repository ppa:inkscape.dev/stable
sudo add-apt-repository --remove ppa:inkscape.dev/stable
sudo apt-get install build-essential # 修复依赖问题
sudo apt update # 更新资源列表
sudo apt-get upgrade # 更新软件包
sudo apt-get autoclean # 删除已卸的软件的备份
sudo apt-get clean # 删除已装或已卸的软件的备份
sudo apt-get autoremove --purge * # 推荐卸载软件的方式
apt-get list --upgradable # 列出可升级的包
找到并删除旧的内核
dpkg --list | grep linux-image
sudo apt-get purge linux-image-3.19.0-{18,20,21,25}
sudo update-grub2
# 搜索
apt-cache search octave | grep octave
# 查询
apt show octave
# 安装
sudo apt install octave
sudo apt-get install lsb-core
lsb_release -a
adduser cloud2016 # 添加用户
passwd cloud2016 # 用户密码设为 cloud
whereis sudoers # 查找文件位置
chmod -v u+w /etc/sudoers # 给文件 sudoers 添加写权限
vim /etc/sudoers # 添加 cloud2016 管理员权限
chmod -v u-w /etc/sudoers # 收回权限
安装确认 openssh-server 服务
sudo apt install openssh-server
sudo /etc/init.d/ssh start
ps -aux | grep ssh