免费软件 | 非免费软件 | |
---|---|---|
官方支持 | main | restricted |
官方不支持(社区或第三方支持) | universe | multiverse |
安全审查和安全性承诺保障
apt-get update的过程是访问一个构造好的URL,该URL使用内置的字符串“拼接”规则构造成
ports.ubuntu.com
相关的 2 行配置代码ports.ubuntu.com 中国镜像
进行镜像源地址修改,推荐阿里云、中科大、清华的镜像源apt-get update VS. apt-get upgrade VS. apt-get dist-upgrade
apt-get remove VS. apt-get purge VS. apt-get clean
apt-get autoclean VS. apt-get autoremove
apt-cache search <software_keyword>
apt-get install <software_keyword><TAB><TAB>
# example
apt-cache search mysql
apt-cache search apache
# 利用终端的自动补全机制获得以mysql关键字开头的所有软件包名
apt-get install mysql<TAB><TAB>
apt-file - APT package searching utility – command-line interface
apt-file is a command line tool for searching files in packages for the APT package management system.
aptitude - 对apt-get进行封装的一个更友好、更易用(主要体现在自动解决软件依赖bug上)包管理工具
$ aptitude show mysql-server
Package: mysql-server
State: not installed
Version: 5.7.16-0ubuntu0.16.04.1
Priority: optional
Section: database
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Uncompressed Size: 106 k
Depends: mysql-server-5.7
Provided by: percona-server-server-5.6 (5.6.22-rel71.0-0ubuntu4), percona-server-server-5.6
(5.6.22-rel71.0-0ubuntu4.1), percona-xtradb-cluster-server-5.6 (5.6.21-25.8-0ubuntu3),
percona-xtradb-cluster-server-5.6 (5.6.21-25.8-0ubuntu3.2)
Description: MySQL database server (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of mysql-server (currently
mysql-server-5.7), as determined by the MySQL maintainers. Install this package if in doubt about which
MySQL version you need. That will install the version recommended by the package maintainers.
MySQL is a fast, stable and true multi-user, multi-threaded SQL database server. SQL (Structured Query
Language) is the most popular database query language in the world. The main goals of MySQL are speed,
robustness and ease of use.
Homepage: http://dev.mysql.com/
$ aptitude show aptitude
Package: aptitude
State: installed
Automatically installed: no
Multi-Arch: foreign
Version: 0.7.4-2ubuntu2
Priority: optional
Section: admin
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 4,205 k
Depends: aptitude-common (= 0.7.4-2ubuntu2), libapt-pkg5.0 (>= 1.1), libboost-iostreams1.58.0, libc6 (>=
2.14), libcwidget3v5, libgcc1 (>= 1:3.0), libncursesw5 (>= 6), libsigc++-2.0-0v5 (>= 2.6.1),
libsqlite3-0 (>= 3.6.5), libstdc++6 (>= 5.2), libtinfo5 (>= 6), libxapian22v5
Recommends: libparse-debianchangelog-perl, sensible-utils
Suggests: apt-xapian-index, aptitude-doc-en | aptitude-doc, debtags, tasksel
Conflicts: aptitude:i386
Provides: aptitude:i386 (= 0.7.4-2ubuntu2)
Provided by: aptitude:i386 (0.7.4-2ubuntu2)
Description: terminal-based package manager
aptitude is a package manager with a number of useful features, including: a mutt-like syntax for matching
packages in a flexible manner, dselect-like persistence of user actions, the ability to retrieve and
display the Debian changelog of most packages, and a command-line mode similar to that of apt-get.
aptitude is also Y2K-compliant, non-fattening, naturally cleansing, and housebroken.
Homepage: http://aptitude.alioth.debian.org/
整理自:The Debian Administrator’s Handbook
apt-get
诞生最早;apt
稍晚,改进了 apt-get
的一些设计缺陷,更简单易用,推荐优先使用synaptic
, aptitude
(也有 CLI 接口)# apt-cache policy <package-name>
# apt policy <package-name>
apt-cache policy mysql-server
mysql-server:
Installed: (none)
Candidate: 5.7.21-0ubuntu0.16.04.1
Version table:
5.7.21-0ubuntu0.16.04.1 500
500 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
500 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages
500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
500 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages
5.7.11-0ubuntu6 500
500 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://cn.archive.ubuntu.com/ubuntu xenial/main i386 Packages
# 根据 apt-cache policy 输出结果里当前软件包的所有候选版本号
# apt install <package>=<version>
# 默认总是安装最新版
sudo apt install mysql-server=5.7.11-0ubuntu6
# 查找apache2软件包依赖哪些独立软件包(名)
$ apt-cache depends apache2
# 查看指定软件包(名)在系统上创建了哪些目录和文件
$ dpkg -L apache2
# 由于apt-get在安装一款软件包时会自动安装相关依赖的软件包
# 所以,通常还需要查看这些被自动依赖安装的软件包又在系统上创建了哪些目录和文件
$ dpkg -L apache2-data
$ dpkg -L apache2-bin
谨慎修改/etc/apt/sources.list和在/etc/apt/sources.list.d/下创建第三方镜像配置文件!!!
谨慎修改/etc/apt/sources.list和在/etc/apt/sources.list.d/下创建第三方镜像配置文件!!!
谨慎修改/etc/apt/sources.list和在/etc/apt/sources.list.d/下创建第三方镜像配置文件!!!
$ dpkg --help
Usage: dpkg [<option> ...] <command>
Commands:
-i|--install <.deb file name> ... | -R|--recursive <directory> ...
-s|--status <package> ... Display package status details.
-p|--print-avail <package> ... Display available version details.
-L|--listfiles <package> ... List files 'owned' by package(s).
-l|--list [<pattern> ...] List packages concisely.
-S|--search <pattern> ... Find package(s) owning file(s).
find ... -execdir xxx {} \
;回顾「第一章」实验中用到的这个命令里使用的操作符:|
上一页的例子中
-print0
将标准输出中的多条记录使用 NULL(\00
)字符拼接成一个「长字符串」一次性输出到「标准输出」xargs
命令,md5sum
将把「管道操作符」左侧命令的「标准输出」当作自己的「标准输入」计算 MD5 散列值xargs
的 -0
参数将「标准输入」中的 NULL 字符视为「数组分隔符」来「解析」标准输入内容xargs
从「标准输入」中每解析出「一个参数」就按照构造好的 命令+参数
执行一次指定的命令(此处是 md5sum [fileN]
),直到「标准输入」被解析完毕explainshell.com 对上述复杂命令的可视化解读
SED的英文全称是Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发。
McMahon创建了一个通用的行编辑器,最终变成为了SED。SED的很多语法和特性都借鉴了ed编辑器。设计之初,它就已经支持正则表达式,SED可以从文件中接受类似于管道的输入,也可以接受来自标准输入流的输入。
SED由自由软件基金组织(FSF)开发和维护并且随着GNU/Linux进行分发,因此,通常它也称作GNU SED。
正则表达式是用于匹配字符串中字符组合的 模式 ,可以用来检查一个串是否 包含 有某种子串、将匹配的子串 替换 或者从某个串中 取出 符合某个条件的子串等。
regular expression tester
不同编程语言对正则表达式的支持存在细微差异
sed
# -E, -r, --regexp-extended
# use extended regular expressions in the script (for portability use POSIX -E)
awk
# man awk
grep
# -E, --extended-regexp
# Interpret PATTERNS as extended regular expressions (EREs, see below).
# -G, --basic-regexp
# Interpret PATTERNS as basic regular expressions (BREs, see below). This is the default.
# -P, --perl-regexp
# Interpret PATTERNS as Perl-compatible regular expressions (PCREs). This option is experimental when combined
# with the -z (--null-data) option, and grep -P may warn of unimplemented features.
跟着「范例」学命令
sudo apt update && sudo apt install tldr
# 从自建 gitee 镜像下载 tldr 所有手册页
git clone https://gitee.com/c4pr1c3/tldr ~/.tldr/cache
# 如果需要查看中文帮助信息
# ⚠️ 警告⚠️ 很多手册页并没有中文翻译版
# 以下方法切换默认查询目录后会导致很多命令查询失败
## 确保进入正确目录
cd $HOME/.tldr/cache
## 确认当前目录下不存在 pages.en 目录
ls pages.en
# ls: cannot access 'pages.en': No such file or directory
## 备份默认英文帮助子目录
mv pages pages.en
## 将中文帮助目录设置为默认查询帮助信息目录
ln -s pages.zh pages
# 恢复默认英文查询手册页设置
rm pages
ln -s pages.en pages
tail -F
cut -d ":" -f 1,6 /etc/passwd
echo "hello world" | tr [:lower:] [:upper:]
echo "hello world" | tr -d hello
# 查看当前shell环境中已定义的别名有哪些
alias
# 注意alias不是一个外部命令(文件),而是bash的一个内置函数
man alias
# 在bash的手册页中去搜索alias
man bash
<process_imagename>
# 执行以下ping命令后终端所有操作被“无视忽略掉”
ping www.baidu.com
# 直到使用CTRL-C快捷键组合输入,可以终止该ping进程
CTRL-C
# 我们试着把ping进程放到“后台”执行
ping www.baidu.com &
# 此时终端不断被“涌出”的ping输出结果“污染”
# 此时CTRL-C无效
CTRL-C
# 以下“2连击”可以终止该ping进程
fg
CTRL-C
# 我们再试着把ping进程放到“后台”执行,这一次我们把标准错误输出先重定向到标准输出,然后再把标准输出重定向到“黑洞”文件
ping www.baidu.com 1>/dev/null 2>&1 &
# 整个世界都清净了,终端不会再被“涌出”的ping输出结果“污染”
# 查看进程会发现ping在“后台”一直运行着
ps aux | grep ping
ping www.cuc.edu.cn 1>/dev/null 2>&1 &
# 杀死所有ping进程
killall ping
~
/ . / .. / -$PATH
$HOME
、$PWD
~/.bashrc、~/.profile
自己回答以下问题(软件相关)
自己回答以下问题(软件相关进阶问题)
自己回答以下问题(软件相关高级问题)
如果能初步判断出问题的关联应用程序,那么首先建议阅读应用程序官方的bug报告指南,然后尽力去收集:
自己回答以下问题(网络相关)
自己回答以下问题(硬件相关)
# 获得硬件信息
report-hw
# reportbug 需要另行安装
reportbug
# *** ERROR: "Ubuntu" BTS is currently unsupported. Please use "ubuntu-bug" (from the apport package) for reporting bugs in Ubuntu. You can report bugs to Debian by
# specifying 'bts debian' in your ~/.reportbugrc or by passing the -B debian option on the commandline (see reportbug(1)).
reportbug --template --bts debian -S normal vim
# 将指定软件的相关信息保存到本地而不是直接提交给软件作者
sudo ubuntu-bug openssh-server --save openssh-server.bug