zoukankan      html  css  js  c++  java
  • 从0开始安装fedora23的笔记-- 以及使用fedora的常规问题

    关于安装过程中的笔记本 触摸板 和鼠标的问题?

    在安装过程中, 系统只认从usb接口插入的鼠标和触摸板上的 "左键和右键"按钮. 触摸板上的鼠标只支持"移动"的功能, 但是触摸板上, 不能执行tap->click "单击""右键"等功能!
    只有在系统安装好以后, 设置 "鼠标和触摸板"中的 "tap to click" 后, 触摸板上tap就等于click功能.

    !!这个要注意, 如果不清楚这一点, 在用u盘安装时, 常常"误会" 用触摸板tap不能执行安装过程, 就误以为 u盘制作启动盘 无效, 实际上不是u盘的错, 是这个时候 还不能使用触摸板的tap to click 功能而已 !!

    tap: v. 轻敲,轻轻敲打; n. 水龙头
    tap to click: 轻敲触摸板来代替单击左键(因为默认 的触摸板 只是移动鼠标, 并没有鼠标左键 单击click的功能).


    在安装fedora时, 要分清设备,磁盘和分区的概念
    一个磁盘, 叫做一个设备, 是按 sda, sdb, sdc等来区分的, sd=scsi disk, abcd表示磁盘的序号, 通常安装时的硬盘为 sda.
    磁盘中的分区是用数字123来区分的, 如:sda1, sda2, sda3...

    新安装fedora时, 原来的linux空间和windows空间如何删除?

    1. anocanda installer安装时, 原来已经存在的分区会列出来, 不管是linux分区还是ntfs分区, 默认的是在 "剩余"空间进行安装
    2. 要删除原来的分区(系统), 不是像winows下"删除/格式化", 或利用分区器, 而是直接在 设置"mount point"时, 单击 减号- 就可以删除 已经存在的分区, 单击加号 +就可以添加分区

    fedora23 (不是最小版本的, minimum, 而是用livecd-workstation的iso镜像安装)安装好后, 默认就有很多东西了, 比如自己就已经安装好了输入法, 而且是 intelligent chinese. 自己就有vi(vim了), 终端的vi命令, 就是vim. 没有单独的vim命令, 除非你自己另外安装vim命令.(不过不必)

    最大/最小的单词: 名词加mum后缀, 形容词加 mal后缀
    maxi- maximum, maximal
    mini- minimum, minimal.

    在英语中, 单引号, 双引号, 都**只是在引用 说话, 表示说话的时候 才使用 . 其他地方都不使用, 即使表示强调, 名称等场合都不用引号. **
    一切都是为了简洁(说话, 程序, 笔记, 书写)等等, 都要简洁, 只要能表达你的意思, 能不要的能不用的, 都尽量省略


    默认安装后, fedora有三个repo: fedora.repo, fedora-updates.repo, fedora-updates-testing.repo.
    每个repo都包含三个部分 [fedora] [fedora-debuginfo] [fedora-source]. 其他三个文件也是这样的 如 [updates] [updates-debuginfo] [updates-testing]等

    使用dnf的命令时, 总是提示 Repository fedora-debuginfo / fedora-source is listed more than once in the configuration 原来是163.repo 文件和 fedora.repo文件中有相同名称的 仓库了. 只要删除其中的一个都可以了. 实际上, 系统自带的fedora.repo等仓库文件和仓库都没有用, 可以直接删除!

    repo文件和仓库的关系: 一个repo文件, 如 fedora.repo中, 通常包含多个 仓库,如 [fedora], [fedora-debuginfo]等仓库

    fedora中, 有线网络的图标是一个水晶头, 无线网络的图标是wifi-飞行图标. 快速切换飞行模式的操作是 : fn+f7. 就不用从tray area去开启/关闭wifi了


    dnf 有必要安装 fastestmirror? 参考: http://dnf.readthedocs.io/en/latest/conf_ref.html


    在fedora23中, 是需要[启用] yum-fastestmirror插件的, 注意, 这个不是叫安装, 因为fc23 的dnf中 已经集成了 fastestmirror, 所以只需要在 /etc/dnf/dnf.conf这个配置文件中 enable 这个插件就好了:

    在/etc/dnf/dnf.conf 末尾, 加上一行: fastestmirror=true
    

    root用户跟其他用户不同, 他自己有一个专门的目录, 即/root. 而其他普通用户, 则要放在 /home/目录的下一级目录.


    man 的用法是: man N(第N个section) 查询命令man 查询命令 N(第N个section) man N 并不是一定从1 : man 1 xx 开始的

    关于sudoers的授权问题?

    1. sudo和sudoers的关系: sudo是命令, sudoers是sudo的安全策略插件: sudoers-- sudo's default security policy plugin
    2. 因此, 编辑sudo/sudoers的命令是 visudo, 而且必须是用visudo命令才能打开 /etc/sudoers 这个文件??? 但是使用vi @root用户也可以打开编辑这个文件! ( 记得: 跟visual 的单词一样长, vi-sual, visudo: vi-sudo)

    设置sudoers的详细信息, 参考:http://www.2cto.com/os/201205/130111.html sudoers文件中主要包括两个部分

    第一部分是别名aliases 的设置, 格式: Alias_Type ALIAS_NAME = name1, name2,... (通常别名 都要使用 "全大写"的形式). 有四种别名, User_Alias, Host_Alias, Cmnd_Alias, Runas_Alias, 主要使用的是前面三种, 而更多的/更常用的是Cmnd_Alias. 因为用户别名中, 单个用户不必使用别名, 用户组可以直接使用百分号来表示, 如 %sys

    Cmnd_Alias 你可以自己定义并修改已有的命令别名, 但是掌握系统预定义的还是很有用的, 因为我们可以用这些系统预定义的别名来 给普通用户授权. 比如, 要让foo有权安装/删除/管理软件, 就赋予foo以 SOFTWARE 权限就可以了.

    常用的Cmnd_Alias有: NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES.当你需要什么权限时, 就赋予什么权限.

    第二个部分是 具体的授权了, 格式是: <用户|别名> <host|别名> = [**(运行用户)**][tag]<命令权限|别名> 各部分之间用空格 分割. 如果有多个命令, 则用逗号分割.

    如果不用(运行用户), 则默认的表示是以 root用户进行运行. (runas表示以什么用户来运行, 最常用的是 root和ALL ) 而且每个命令都可以 加具体的参数 和选项. 如下所示:

    (运行用户), 一定要放在小括号中, 如果runas是组, 则要加冒号, 比如(foo) , (:admin)
    [tag], 标签, 相当于选项, 主要有 两个 PASSWD: 和 NOPASSWD: 默认的是 PASSWD: (注意冒号是紧跟PASSWD的, 他们在一起表示一个tag.
    设置命令时,一定要设置 完整 的路径, 否则有危险

    (使用>>符号, 比 > > 符号更好更合适吗??)
    passwd: 在web/unix中, 真的就有这样的单词, 他是一个"合法"的单词.


    关于gnome-terminal操作的细节

    1. 复制和粘贴: 不是传统的ctrl_c和ctrl_v了, 因为在terminal中, ctrl_c被用来作为中断, break(一个命令)来使用了. 使用就使用: ctrl_shift_c, ctrl_shift_v来执行复制和粘贴了
    2. 菜单项(menu item)的颜色. **在linux中, 很多程序(主要是terminal, gimp等, 但不是全部)的menu item 后面的快捷键的显示, (跟win不同), 快捷键的颜色(不管是可用还是不可用的)要比菜单的颜色浅很多(差不多/看起来好像是 "不可用"的灰色状态). 但是, 可用的快捷键的颜色虽然比菜单的颜色要浅要暗, 但是注意观察, 比不可用的 菜单项的快捷键又要亮 一些. 所以看 快捷键可用还是不可用, 要看前面的菜单项 是亮色的还是 灰色不可用的. 而且如果菜单项可用, 则鼠标指向时会高亮反色 显示, 否则鼠标指向时, 颜色没有变化.
    3. gnome-terminal的 快捷键配置中, 所谓的terminal实际上指的是一个 tab标签, 因为每个标签都是一个终端(terminal), 所以 "close terminal"(shift_ctrl_w)就是关闭一个标签, close all terminal(ctrl_shift_q)就是关闭一个 gnome-termina窗口.
    4. 关于主题, 默认的使用的是 "黑色主题的变种/变体", use dark theme variant. 反之, 如果不使用这种黑色的"变体"主题, 则显示为传统的白色主题外观界面
    5. 关于preferences中的几个问题: enable mne'monics , 是指传统的以alt_F(V, E , T)等激活键打开菜单栏, 跟F10是一样的. show menebar by default in new terminals, 如果不启用, 则不会显示菜单栏. 跟"open new terminals in window/tab 联合使用.
    6. 理解并合理设置terminal的preferences设置:

    在linux中没有必要安装 gvim?

    gvim是指: graphical vim 图形化的vim, 是在windows下, 不习惯使用命令行习惯使用鼠标的方式时, 的程序.
    而在linux下, 就没有必要使用gvim图形化的vim了.
    虽然, 你确实要在linux下安装 "gvim", 你可以直接用 dnf install vim-enhanced 来安装, 注意安装的名称时" vim-enhanced ", 而不是gvim.
    你在linux下安装gvim主要是为了解决 vi(注意fedora下的vi就是vim) 不能跟系统剪贴板 之间 共享数据的问题, 因为, 你在vi中使用命令: version查看版本的时候, 会显式: -clipboard(特性是不支持的), 另外你使用 命令 "+gp, "+x, "+y等时也是不支持的, 会提示说, 寄存器"没有内容. gvim就是用 寄存器" 来跟系统剪贴板之间交换数据的.
    但是你是在 gnome-terminal中使用vi的, 而terminal本身是可以跟 系统剪贴簿之间交换数据/信息的, 所以 在terminal中使用 vi时, 可以使用: 终端自带的复制粘贴功能, 来达到gvim中 "+gp的功能!


    which和whereis的区别:

    which只是列出$PATH指定的目录列表中, 包含该可执行文件的路径(包括该命令本身),一般只是/bin/..., /usr/bin/... 如: which dnf : /usr/bin/dnf
    whereis会把所有的相关文件都列出来.
    **注意, which是列出shell外部的命令, 所谓外部的命令, 就是在磁盘上以 "文件"的方式存在 于系统中的. 比如 mkdir, 真的有一个文件 存在于 /usr/bin/中. 如果没有这样的文件, 就会报错找不到 **

    判断shell中可以执行的命令, 到底是外部命令, 还是shell内置的命令, 使用type命令:
    builtin: 是名词, "内置的/内建的 命令/函数", 是指 shell本身这个程序 本身自己内部包含的命令, (外部没有这样的命令文件存在的)
    for: 是shell keyword.

    **为什么大多数which都会返回/usr/bin, /usr/sbin, 而不是 /bin, /sbin?
    是因为在linux中, 使用命令, 或执行方法,如果有多个版本, 有多个同名的命令, 系统总是 以"用户创建的命令"为优先, 并且总是以普通命令bin 而不是系统管理命令sbin 为优先 即总是以 /usr/local/bin > /usr/local/sbin > /usr/bin > /usr/sbin > /bin > /sbin 为优先次序
    而且
    这种优先级的次序, 是普遍的, 从 $PATH 路径环境变量 到 visudo权限分配都适用 **
    而which命令执行的过程是, 从环境变量 PATH 指定的目录中, 依次查找 所搜索的命令, 只要找到第一个后, 就停止搜索, 然后返回第一个搜索结果. 而$PATH 的顺序通常就是: /usr/local/bin, /usr/local/sbin, /usr/bin, /usr/sbin/, /bin, /sbin... 所以当/bin和/usr/bin中都有相同的命令时, which就返回位于前面位置 的 /usr/bin了.

    linux中, 表示目录,是不需要在最后面加 斜杠的! 即表示usr/bin目录: /usr/bin, 不用写 /usr/bin/
    注意的是, which命令跟你配置的 $PATH路径中指定的目录列表有关. 不同的配置 path, 可能结果不一样:

    whereis和which他们在语义上的区别?

    which是哪一个, 暗指, (if exists)如果某个命令 有多个版本, 那么在shell中执行这个命令时, 到底(which)是执行的哪个(which)命令.
    whereis 是查找某个命令 的相关文件在 哪里(where is this command?) 他查找三个方面的内容: -b选项查找二进制文件的位置(包括命令二进制和配置文件), -m选项查找帮助文件man/info的位置, -s查找source源代码的位置.
    **注意whereis和locate查找, 是通过查找一个数据库文件来实现的, 该数据库文件 包含/提取了 系统的全部文件的一个数据库文件 ** 不像find是真的遍历查找硬盘 来实现的.
    所以whereis 查找的非常快, 但是由于数据库文件是 每周更新一次, 所以有时候会搜索到 不存在的信息, 或搜索不到刚加入的信息.


    关于nautilus确实做到了"简洁不简单"

    它在顶端的"标题栏"里集成了forward-backward, location bar, serach icon, arrangement icon等. 你可以显式地使用ctrl_L, ctrl_f定位到地址栏和搜索栏. 也可以直接"如果输入/ 则定位到地址栏, 如果直接输入非 / 则定位到搜索栏"

    dnf和dnf-3
    dnf实际上是dnf-3的软连接, dnf-3是 executable python script, its type is text/x-python.
    实际上 , 在/bin下的很多命令, 是"拷贝"到/usr/bin下的, /bin下的命令很多跟 /usr/bin/下的命令是一样的. 用diff比较是没有区别的

    为什么说foo普通用户不能执行cat
    并不是说 foo不能执行cat命令, 而是说 不能 /bin/cat /etc/sudoers等无授权的文件.(也就是说, sudo后,并不是什么都可以做, 只有 "授权的命令(有些是命令中的子命令, 如dnf search是任何普通用户都可以执行的, 不需要授权, 而dnf install 则需要授权 )+授权的文件" 后才可以执行.

    为什么sudo不能执行dnf?
    在visudo中, 已经给foo赋予了SOFTWARE权限, 但是不能使用 dnf命令, 提示: user foo is not allowed to execute '/bin/dnf ...' as root on localhost.localdomain 原来是因为在/etc/sudoers中的SOFTWARE 中只赋予了/bin/rpm, /usr/bin/yum, 并没有赋予/bin/dnf的权限.


    在这里看到, 预定义的SOFTWARE权限, 只给了rpm, yum, up2date. 确实没有dnf命令 , 你执行 sudo yum install shutter的时候, 就不会报错:

    另外, 如上所述, /bin/dnf和/usr/bin/dnf确实是没有区别的, 因此, 你定义权限的时候, 随便写哪一种都是可以的. 就看你自己喜欢怎么写了.
    所以, 虽然yum is already deprecated, redirecting to '/usr/bin/dnf', 但是由于你在赋值Cmnd_Alias中没有明确的写dnf, 所以还是不能直接使用dnf的, 除非你添加上dnf才行.


    变量赋值?
    变量赋值, 必须要有等号, 如果没有等号,就只有字符串, 这时候,shell会将这个字符串当作 一个命令来解析
    变量的赋值要紧跟等号. 因为shell解析命令行的时候, 是以空格为分割符的
    变量的引用, 需要使用$ 符号.


    为什么sudo还要输当前用户的密码而不是root的密码?

    1. sudo的目的就是让非root用户临时具有root用户的权限, 这个是针对所有的用户而言的.因为在linux上不只有一个普通用户, 因此, visudo, sudoers并不知道, 也不会去判断当前当前用户是foo还是谁, 反正他只知道, 我赋予给foo的权限, 必须是foo, 其他用户不可以. 因此, 你必须提供foo的密码, 我才放权.(因为并不是所有的用户都可以使用sudo命令的.)
    2. 其次, 别忘了, sudo的目的, 就是为了避免 过多的人 知道 root的密码, 但是又要 assign/delegate权限. 因此foo本来就不需要 / 不应该 知道root的密码的. 因此, 还要你输入root密码干什么呢?
    3. 输入foo的密码, 更多的目的 可能是为了 audit审计/记账的需要! (这样, 如果你做了什么不好的事情, 人家在sudo的审计中 都有记载的, 你不能抵赖的, 因为你有输入密码的..)
    4. 你也可以配置成不要输入密码的情况, 直接使用 'NOPASSWD:' 这个标签就好了: foo ALL = (root) NOPASSWD: SOFTWARE 表示, foo用户在everywhere 可以root身份运行, 并且运行sudo的时候,不必输入foo用户 的密码.

    linux shell中的感叹号

    1. !叫做 "事件指示器" event desig'nator [dezig'neit2] "历史事件" 引用, 快速引用历史记录中的命令
    2. !n, 是执行历史记录列表中的第n条命令, 是从历史记录列表的第一条记录开始 算起的
    3. !-1, 是倒数第一条,最近的一条, !! 是 !-1 的别名
    4. 最重要的是关于字符串命令: !string , 是执行以最近的string 开头的命令, !?string, 是执行最近的包含string的历史命令

      执行! 的方式是: 首先列出 被找到/并将要被执行的 历史命令; 然后再输出执行结果

    环境变量(能够在subshell中使用的变量) 的问题

    1. 所有的环境变量都是以export为命令的,不管是临时的还是配置文件中的. 否则就是 "shell变量"不是环境变量 (所以, 即使你在/etc/profile或 .bashrc中, 给变量赋值的时候, 你直接写 SOME_VAR=100, 然后source, 当前shell中还是能够有 SOME_VAR这个 变量, 但是这个只是 shell变量,不是 环境变量, 不能在subshell中使用!! )
    2. 也就是说, export并不影响你在当前shell环境中的变量的使用, 只是 影响能不能在 subshell中使用
    3. 临时的环境变量, 直接在shell中输入export命令就可以了. 永久性的要在配置文件中设置
    4. 针对所有 用户都有效的, 在 /etc/profile 文件末尾加上 一行类似的: export MYENV=100 , 对某一个用户有效的, 在~/.bashrc 或 ~/.bash_profile中末尾添加, 环境变量通常用 '全大写' 方式.
    5. 修改配置文件后, 要在重新登录用户后才生效, 要立刻生效, 需要执行 source /etc/profile 或类似 命令.
    6. 要显示某一个环境变量, 直接使用echo $A_ENV_VARIABLE, 要显示全部环境变量, 使用 env命令.
      **清除, 删除一个环境变量,使用unset命令. **

    只读环境变量, 用readonly命令来定义:


    理解set和env的区别

    set 是显示所有的 "本地"变量, 所谓 本地变量, 就是上面所说的 "shell变量", 不能被subshell使用的变量.
    env是 显示所有的 "环境"变量, 即能够在 subshell中使用的变量,
    将一个 本地变量 export后, 就成为 环境变量!!

    ================

    misce'llaneous [mis2'leini2s] 杂项
    一般像shutter gimp等 图形处理软件需要的依赖(库)等 包都很多,
    shell中编辑时 , 移动鼠标可以用 ctrl_b/f/a/e, 之外, 还可以使用ctrl+ left/right来一单词 为单位进行移动.
    dnf是支持断点续传的, 原来下载过的包再次下载时会skipped. 而且dnf使用的是curl下载工具.

    **dnf下载的 / 安装的/管理的 其实还是 rpm包, 是对多个rpm包的 下载/安装等 **

  • 相关阅读:
    Cgroup学习笔记
    基于dubbo框架下的RPC通讯协议性能测试
    More about dubbo
    基于nginx tomcat redis分布式web应用的session共享配置
    基于开源Dubbo分布式RPC服务框架的部署整合
    More about Tair (NoSql)
    MySql Replication配置
    Memcached、Redis OR Tair
    基于淘宝开源Tair分布式KV存储引擎的整合部署
    关于TbSchedule任务调度管理框架的整合部署
  • 原文地址:https://www.cnblogs.com/bkylee/p/6848314.html
Copyright © 2011-2022 走看看