Debian常用操作
version -- debian-11.0.0-amd64
Debian是精简的Linux发行版,有着干净的作业环境,拥有庞大的包库。
Debian 系统常用于制作docker应用镜像的基础镜像使用,因为它体积小,相比使用Centos
制作的镜像,体积要小很多。
目录
0
Debian镜像下载 1
1 修改语言 2
2 vim编辑器 5
3 添加网卡 5
4 添加apt源 6
5 Debian日常使用 7
5.1 Debian和Centos的关系 7
5.2 Debian和Ubuntu的关系 7
5.3 常用服务配置文件路径 7
5.4 查看系统版本号 7
5.5 创建用户 7
5.6 修改运行级别 8
5.7 创建rc.local文件 9
5.8 防火墙和SElinux 9
5.9 动态添加删除IP地址 9
5.10
.bash.rc默认注释了命令别名 10
5.11 默认没有rsync 10
5.12 SSH 默认不允许 root 远程登录 10
6 Debian软件包和Centos软件包的区别 10
6.1 apt相关的文件 10
6.2
apt-get子命令 11
6.3
apt-get命令选项 11
6.4
apt-cache命令 11
6.5 软件包操作对比 11
6.6 示例: 安装和卸载nginx 12
7 软件仓库 13
7.1 deb软件仓库配置 13
7.2 客户机测试 15
7.3 rsync同步中科大镜像源 16
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命令选项
|
-d,--download-only |
仅下载,不安装 |
|
-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 在页面中查看
http://10.0.0.102/
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/
来源:https://www.cnblogs.com/LiuChang-blog/p/15260458.html |