Debian常用操作
Debian常用操作
version -- debian-11.0.0-amd64
作者 |
刘畅 |
时间 |
2021-09-07 |
Debian是精简的Linux发行版,有着干净的作业环境,拥有庞大的包库。
Debian 系统常用于制作docker应用镜像的基础镜像使用,因为它体积小,相比使用Centos
制作的镜像,体积要小很多。
目录
0 Debian镜像下载
Debian镜像下载提供的下载方式有iso-dvd、bt-dvd、jigdo-dvd ……,这里介绍jigdo方式下载。
1 jigdo介绍
Jigdo需要先下载一个索引文件,然后读取这个索引,下载所有需要的deb包和其它文件,最后再用mkisofs生
成一个完整的ISO光盘镜像。这样做的好处就是,如果你已经有了一个老版本的Debian光盘映像,新版出了之
后,你可以不用重新下载新的,而可以直接用Jigdo在旧版本的基础上下载一些更新后的文件(算是增量更新),
最后生成一个新的镜像,节省大量时间。也可以选择iso镜像进行直接下载。
2 安装jigdo
官方网站为http://atterer.org/jigdo/,Debian和Ubuntu用户可直接从官方仓库安装。
#
apt-get install jigdo-file -y
#
mkdir -p dvd && cd
dvd/
# jigdo-lite
3 下载镜像
(1) 它会问你要一个'.jigdo'文件,这就是它所需要的索引文件,jigdo不支持https方式下载,只支持http方式
http://mirrors.aliyun.com/debian-cd/11.0.0/amd64/jigdo-dvd/debian-11.0.0-amd64-DVD-1.jigdo
补充: 官方只有最新的镜像(https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/),没有之前的镜像,如果要下载之前的
Debian版本,可以访问地址https://cdimage.debian.org/cdimage/archive/
(2) 让我输入旧镜像的路径,因为是第一次下载,跳过即可
注意: 如果根据旧镜像下载,一定要把镜像的架构、光盘格式(CD或DVD)以及编号对上,比如使用debian-8.11.0-amd64-DVD-3.iso
的旧镜像升级到11.0.0版本,就用debian-11.0.0-amd64-DVD-3.jigdo,不然下载的时候就会出现错误。
(3) 提供一个Debian镜像站的地址,找一个离你这里网络较快的Debian镜像站
http://mirrors.aliyun.com/debian/
(4)
接下来Jigdo就正式下载镜像了,你会看到jigdo会一个个的wget所需要的软件包,完成之后他会自动利用
mkisofs将下载到的文件合成为一个完整的ISO镜像,并进行校验
4 版本对应
参考网站: https://baike.baidu.com/item/Debian/748667?fr=aladdin
8
Jessie、9
stretch、10
Buster、11
Bullseye、12 Bookworm
1 修改语言
1 查看当前语言
# locale <=> localectl
#
显示当前使用的语言字符集
#
locale -a #
查看系统可用的语言环境
2 修改语言(方法一,推荐)
(1) 修改/etc/locale.gen文件,为系统增加English语言包
#
localectl set-locale en_US.UTF-8
(2) 修改/etc/default/locale文件,指定当前默认语言环境并生效
#
sed -i 's|LANGUAGE=zh_CN:zh|LANGUAGE=en_US:en|'
/etc/default/locale
# source /etc/default/locale
3 修改语言(方法二)
# env
| grep LANG
# export
LANG=en_US.UTF-8
# dpkg-reconfigure
locales
(1)
选中en_US.UTF-8 UTF-8
上下键: 连续内容上下移动光标 tab键: 不连续内容移动光标 space键: 选中内容,确认
(2) 选中en_US.UTF-8后保存
(3)
修改/etc/default/locale文件,指定当前默认语言环境并生效
#
sed -i 's|#LANGUAGE="zh_CN:zh"|LANGUAGE=en_US:en|'
/etc/default/locale
# source /etc/default/locale
4 查看当前语言
2 vim编辑器
1 Debian安装完成后默认的vi编辑器存在缺陷,编辑文件时使用不正常
#
apt-get
install vim -y
2 Debian的vim右键进入visual模式解决方法
# vim
/usr/share/vim/vim82/defaults.vim +82
# 将mouse=a改为mouse-=a
3 添加网卡
1 查看当前的网卡名为ens33
2 添加网卡(注意: 只有网卡名前加auto的网卡才会生效)
# cat >> /etc/network/interfaces <<
EOF
# The primary network interface
#allow-hotplug
ens33
auto
ens33
iface
ens33 inet static
address
10.0.0.102/24
gateway 10.0.0.253
EOF
3 添加dns解析
# cat > /etc/resolv.conf <<
EOF
search 0.0
nameserver
223.5.5.5
nameserver 223.6.6.6
EOF
4 重启网卡
# systemctl restart
networking.service
# ip addr
5 使用xshell 5连接
(1)
连接时报错
(2)
原因
xshell 5版本太低了
(3)
解决办法
使用xshell 7进行连接
4 添加apt源
参考文档: https://mirrors.tuna.tsinghua.edu.cn/help/debian/
# > /etc/apt/sources.list
#
cat > /etc/apt/sources.list <<
EOF
deb http://mirrors.tuna.tsinghua.edu.cn/debian/
bullseye main contrib non-free
deb
http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib
non-free
deb
http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib
non-free
deb
http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main
contrib non-free
EOF
# apt-get update
5 Debian日常使用
5.1 Debian和Centos的关系
没什么关系。Debian的版本命名更好玩一些,以电影<玩具总动员>里的人物命名。
5.2 Debian和Ubuntu的关系
Ubuntu是基于Debian的,与Debian使用相同的deb软件包格式,可以安装绝大多数为Debian编译的软件包,
虽然不能保证完全兼容,但大多数情况是兼容的。
https://zh.wikipedia.org/wiki/Ubuntu
5.3 常用服务配置文件路径
服务 |
Debian |
网卡配置文件 |
/etc/network/interfaces |
DNS配置文件 |
/etc/resolv.conf |
软件源配置文件 |
/etc/apt/sources.list |
5.4 查看系统版本号
root@debian-11:~# uname -a
Linux
debian-11 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
GNU/Linux
root@debian-11:~#
cat /etc/debian_version
11.0
5.5 创建用户
1 useradd默认不创建家目录,需要手动创建并更改权限
再为用户创建密码就可以远程登录了
# passwd liuchang
2 adduser自动创建家目录
5.6 修改运行级别
# systemctl get-default
# systemctl set-default
multi-user.target
(1)
使用了 Systemd,就不需要再用init了。Systemd
取代了initd,成为系统的第一个进程(PID等于1),其他进
程都是它的子进程。每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个Unit。
(2)
Systemd
默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向
目录/usr/lib/systemd/system/,真正的配置文件存放在指向的那个目录。systemctl
enable命令用于在上面两个目
录之间,建立符号链接关系。
(3) 默认的 RunLevel(在/etc/inittab文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target,通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)。
(4) 启动脚本的位置,以前是/etc/init.d目录,符号链接到不同的 RunLevel 目录 (比如/etc/rc3.d、/etc/rc5.d等)
,现在则存放在/lib/systemd/system和/etc/systemd/system目录。
(5) 配置文件的位置,以前init进程的配置文件是/etc/inittab,各种服务的配置文件存放在/etc/sysconfig目录。现
在的配置文件主要存放在/lib/systemd目录,在/etc/systemd目录里面的修改可以覆盖原始设置。
(6)
Target
与 传统 RunLevel 的对应关系如下
参考文档: http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
5.7 创建rc.local文件
# cat >> /lib/systemd/system/rc-local.service
<< EOF
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
EOF
#
systemctl daemon-reload
# systemctl enable rc-local
Created symlink /etc/systemd/system/rc-local.service
→ /lib/systemd/system/rc-local.service.
Created symlink
/etc/systemd/system/multi-user.target.wants/rc-local.service →
/lib/systemd/system/rc-local.service.
# cat > /etc/rc.local <<
EOF
#!/bin/bash
echo "test rc.local " >
/tmp/rctest.log
EOF
# chmod +x /etc/rc.local
5.8 防火墙和SElinux
Debian默认没有SElinux
防火墙默认没有任何规则
5.9 动态添加删除IP地址
1 网卡上增加一个IP
# ifconfig ens33:02 10.0.0.103 netmask 255.255.255.0
2 删除网卡的第二个IP地址
# ip addr del 10.0.0.103/24 dev ens33:02
5.10 .bash.rc默认注释了命令别名
# cat >> /etc/profile <<
EOF
export LS_OPTIONS='--color=auto'
eval
"\$(dircolors)"
alias
ls='ls $LS_OPTIONS'
alias
ll='ls $LS_OPTIONS -l'
alias
l='ls $LS_OPTIONS -lA'
alias
rm='rm -i'
alias
cp='cp -i'
alias mv='mv -i'
EOF
# source /etc/profile
5.11 默认没有rsync
# apt-get install rsync -y
注: apt
安装后会有 init.d 和 systemd 启动脚本
#!/bin/bash
lsb_functions="/lib/lsb/init-functions"
if
test -f $lsb_functions; then
.
$lsb_functions
fi
5.12 SSH 默认不允许 root 远程登录
# sed -i 's|#PermitRootLogin
prohibit-password|PermitRootLogin yes|' /etc/ssh/sshd_config
# systemctl restart ssh.service
6 Debian软件包和Centos软件包的区别
CentOS 和 Red Hat 使用 yum 安装,而 Debian 和 ubnutu 使用 apt 工具。
6.1 apt相关的文件
/etc/apt/sources.list |
设置软件包的获取来源 |
/etc/apt/apt.conf.d/ |
apt的各种配置文件 |
/var/cache/apt/archives/ |
存放已经下载的软件包 |
/var/cache/apt/archives/partial/ |
存放正在下载的软件包 |
/var/lib/apt/lists/ |
存放已经下载的软件包详细信息 |
/var/lib/apt/lists/partial/ |
存放正在下载的软件包详细信息 |
6.2 apt-get子命令
update |
更新软件包列表 |
upgrade |
更新系统中的所有软件包 |
install |
安装软件包 |
remove |
卸载软件包 |
autoremove |
仅删除不需要再次下载的软件包 |
purge |
彻底删除软件包(包括配置文件) |
source |
下载源代码 |
build-dep |
自动下载安装编译某个软件所需要的软件包 |
dist-upgrade |
升级整个发行版 |
clean |
删除本地缓存中所有的升级包 |
autoclean |
删除本地缓存中无用的软件包 |
check |
检查是否存在有问题的依赖关系 |
6.3 apt-get命令选项
仅下载,不安装 | |
-f,--fix-broken |
修复依赖问题(用于 install 和 remove 子命令) |
-m,--ignore-missing,--fix-missing |
忽律缺失的软件包,遇到无法下载的软件包,自动忽略 |
--no-download |
禁止下载软件包,与-m 配合,可以使 apt 只使用已经下载的软件包 |
-q,--quiet |
静默模式,输出的信息适合做日志 |
-s,--simulate,--just-print |
模拟测试,不做实际操作,不改变系统 |
-y,--yes,--assume-yes |
在系统提问时,自动应答 yes |
-u,show-upgraded |
显示已升级的软件包 |
-V,--verbose-versions |
显示已安装和升级的软件包的完整版本号 |
-b,--compile,--build |
在源码包下载完成后进行编译 |
--ignore-hold |
忽略被保留的软件包 |
--no-upgrade |
不要升级软件包 |
--force-yes |
强制回答 yes |
--print-uris |
仅答应软件包地址,不安装 |
--purge |
彻底删除,包括配置文件 |
--reinstall |
重新安装软件包 |
6.4 apt-cache命令
功能: 搜索某个软件包的名字或显示某个软件包的详细信息
搜索mariadb-server的软件包 |
apt-cache search mariadb-server |
搜索mariadb-server软件包的详细版本号 |
apt-cache show mariadb-server |
6.5 软件包操作对比
操作内容 |
CentOS |
Debian |
基本信息 | ||
软件包后缀 |
*.rpm |
*.deb |
软件源配置文件 |
/etc/yum.conf |
/etc/apt/sources.list |
安装,删除,升级软件包 | ||
更新软件包列表 |
yum makecache fast |
apt-get update |
从软件仓库安装软件 |
yum install package |
apt-gen install package |
安装一个已下载的软件包 |
yum install pkg.rmp rpm -ivh pkg.rpm |
dpkg -i pkg.deb dpkg --install pkg.deb |
删除软件包[仓库源] |
[删除包、依赖、配置信息] # yum remove package [显示软件包的依赖信息] yum deplist package |
[删除包、依赖,不删除配置文件] apt-get remove package [删除包、依赖,配置文件] apt-get purge package apt-get remove --purge package [显示软件包的依赖信息] apt-cache depends package |
删除软件包[包管理器] |
[删除包、配置信息,被依赖时不删除] rpm -e package [删除包、配置信息,忽略依赖] rpm -e --nodeps package [删除包、依赖、配置信息] rpm -qa | grep package |xargs -i rpm -e --nodeps {} [查看已被安装包的依赖] rpm -qR package [查看未被安装包的依赖] rpm -qpR path_to_rpm_file |
[删除包,不删除配置文件,被依赖时不删除] dpkg -r package [删除包、配置文件,被依赖时不删除] dpkg -P package [删除包、配置文件,忽略依赖] dpkg --ignore-depends=<依赖包1>,<依赖包2> -P package [查看已被安装、未被安装包的依赖] apt install apt-rdepends apt-rdepends package [查看未被安装包的依赖] dpkg --info path_to_deb_file |
升级指定软件包 |
yum update package rpm -Uvh package.rpm |
apt-get upgrade package dpkg --update-avail package.dep |
软件包信息 | ||
获取某软件包的信息 |
yum search package |
apt-cache search package |
获取所有已经安装的软件 |
yum list installed rpm -qa | grep package |
dpkg -l | grep package dpkg --get-selections | grep package |
获取某个已经安装软件包的信息 |
yum info package rpm -qi package |
dpkg --status packages |
列出某个已安装软件包所包含的文件列表 |
rpm -ql package |
dpkg -S package |
6.6 示例: 安装和卸载nginx
1 安装nginx
# apt-get
update
# apt-get
install nginx -y
2 卸载nginx
(1)
关闭nginx服务
# systemctl
stop nginx.service
(2)
卸载nginx,包括配置文件
#
apt-get purge nginx -y
(3)
列出与nginx相关的依赖包
#
dpkg --get-selections | grep nginx <=>
dpkg -l | grep nginx
(4)
卸载与nginx相关的依赖包,包括配置文件
#
apt-get --purge remove nginx-common -y
(5)
移除全部不使用的软件包
#
apt-get autoremove -y
(6)
全局查找与nginx相关的文件
#
find / -type d -name nginx*
# rm -rf file
7 软件仓库
仓库服务器地址: 10.0.0.102
验证服务器地址: 10.0.0.105
7.1 deb软件仓库配置
1 编译安装nginx
(1)
创建用户
# groupadd
nginx -g
888
# useradd
nginx -u 888 -g 888 -M -s /sbin/nologin
(2)
安装依赖
# apt-get
-y install build-essential libpcre3 libpcre3-dev zlib1g-dev openssl
libssl-dev# mkdir
-p /data/mydeb/
# wget
-q http://nginx.org/download/nginx-1.18.0.tar.gz
# tar
-xzf
nginx-1.18.0.tar.gz
# cd
nginx-1.18.0/
#
./configure --user=nginx --group=nginx --prefix=/opt/nginx
--with-http_stub_status_module \
--with-http_ssl_module
#
make && make install
# egrep
-v "#|^$" /opt/nginx/conf/nginx.conf.default
>/opt/nginx/conf/nginx.conf
(3)
修改配置文件
# cat /opt/nginx/conf/nginx.conf
worker_processes 1;
user
nginx;
events
{
worker_connections 1024;
}
http
{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server
{
listen 80;
server_name localhost;
location
/ {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
root /data/mydeb/;
}
}
}
# /opt/nginx/sbin/nginx
-t
# /opt/nginx/sbin/nginx
2 只下载不安装软件包
# apt-get clean
#
ls -lh /var/cache/apt/archives/
#
apt-get install -d apache2 -y
# ls -lh /var/cache/apt/archives/
3 移动自定义的 DEB 安装包到仓库
# mv /var/cache/apt/archives/*.deb /data/mydeb/
4 更新仓库信息索引
# apt-get install dpkg-dev -y
#
cd /data/mydeb
#
dpkg-scanpackages ./ /dev/null | gzip -9c > Packages.gz
# 查看索引压缩包内容
# zcat Packages.gz
5 在页面中查看
7.2 客户机测试
1 添加源
#
echo 'deb [trusted=yes] http://10.0.0.102:80/ /' >
/etc/apt/sources.list
2 更新源
#
apt-get clean
# apt-get
update
3
安装测试
#
apt-get install apache2 -y
……
7.3 rsync同步中科大镜像源
注: 推荐使用什么包再复制什么包过去,不然可能会同步很多不需要的文件,占用磁盘空间。
官方文档: https://mirrors.ustc.edu.cn/help/rsync-guide.html
1 列出 /repo/ 路径下的目录列表
# rsync
rsync://rsync.mirrors.ustc.edu.cn/repo/debian/
2 同步源
# rsync -azP
rsync://rsync.mirrors.ustc.edu.cn/repo/debian /data/mydeb/