Debian系统
广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Debian项目众多内核分支中以Linux宏内核为主,而且 Debian开发者 所创建的操作系统中绝大部分基础工具来自于GNU工程 ,因此 “Debian” 常指Debian GNU/Linux。
功能 | 具体语句 |
---|---|
软件源设置 | /etc/apt/sources.list |
更新软件源数据 | apt-get update |
更新已安装软件 | apt-get upgrade |
更新系统版本 | apt-get dist-upgrade |
通过安装包或卸载包来修复依赖错误 | apt-get -f install |
搜索软件源数据 | apt-cache search foo |
解压安装软件包 | apt-get install foo |
重新安装软件包 | apt-get --reinstall install foo |
删除软件包释放的内容 | apt-get remove foo |
卸载软件,同时清除该软件配置文件 | apt-get --purge remove foo |
删除不需要的包 | apt-get autoclean |
删除所有已下载的包 | apt-get clean |
自动安装编译一软件所需要的包 | apt-get build-dep foo |
功能 | 具体语句 |
---|---|
显示DEB包信息 | dpkg -I xx.deb |
显示DEB包文件列表 | dpkg -c xx.deb |
安装DEB包 | dpkg -i xx.deb |
安装DEB包(指定根目录) | dpkg --root=<directory> -i xx.deb |
显示所有已安装软件 | dpkg -l |
显示已安装包信息 | dpkg -s foo |
显示已安装包文件列表 | dpkg -L foo |
卸载包 | dpkg -r foo |
卸载软件包并删除其配置文件 | dpkg -P foo |
重新配置已安装程序 | dpkg-reconfigure foo |
功能 | 具体语句 | 示例 |
---|---|---|
获取源码 | apt-get source foo | apt-get source rox-filer |
安装编译依赖 | apt-get build-dep foo | apt-get build-dep rox-filer |
解压源码 | dpkg-source -x foo_version-revision.dsc | dpkg-source -x rox_2.11-3.dsc |
修改源码部分 | nano ROX-Filer/src/main.c | |
创建包 | dpkg-buildpackage -rfakeroot -b | |
修改软件可升级状态 | echo -e "foo hold" | dpkg --set-selections |
二,用dpkg解包打包(或者修改包)的简单用法1,新建必要文件controlmkdir -p dirname/DEBIAN(dirname名随意,将生成的usr bin lib之类的文件复制到dirname目录下,dirname/为伪根目录)nano dirname/DEBIAN/control,最简陋的格式如下:Package: fooVersion: version-revisionArchitecture: amd64Maintainer: xxxPriority: extraDescription: xxx2,生成DEB包dpkg-deb -b --deb-format=2.0 -Zxz -z9 dirname foo_version-revision_arch.deb (为了便于管理包名应遵循DEB包命名格式)3,解压DEB包安装文件部分mkdir newdir && dpkg -x foo_version-revision_arch.deb newdir/4,解压DEB包控制信息部分mkdir newdir && dpkg -e foo_version-revision_arch.deb newdir/5,用ar命令解压DEB包mkdir newdircd newdir && ar x foo_version-revision_arch.deb三,添加常用软件管理命令简短别名软件管理是一个现代操作系统的基本功能,使用十分频繁,因此有必要设置简短的别名,仅字符界面有效添至~/.profile,仅图形界面有效添至~/.bashrc,比如export LC_MESSAGES=en_US.UTF-8alias a="apt-get install --no-install-recommends"alias b="dpkg-deb -b --deb-format=2.0 -Zxz -z9"alias c="SDCV_PAGER=more sdcv --color -0 -1"alias i="dpkg -i"alias l="dpkg -l | grep"alias la="ls --file-type -a"alias ll="la --time-style=long-iso -lh"alias s="apt-cache search"alias r="apt-get --purge remove"alias u="apt-get update;apt-get upgrade"
中文设置
中文显示
复制常用字体mkdir ~/.fonts && cp simsun.ttc tahoma.ttf tahomabd.ttf unifont.pcf ~/.fonts/终端显示调整编辑 ~/.Xdefaults,添加XTerm*background: grey20XTerm*foreground: whiteXTerm*faceName: unifontXTerm*utf8Title: trueUXTerm*background: grey20UXTerm*foreground: whiteUXTerm*faceName: unifontUXTerm*utf8Title: true
中文输入
nano ~/.xinitrc,添加export LC_CTYPE=en_US.UTF-8export LC_MESSAGES=zh_CN.UTF-8eval `dbus-launch --sh-syntax --exit-with-session`export XMODIFIERS=@im=fcitxexport GTK_IM_MODULE=ximexport QT_IM_MODULE=fcitxexec fcitx &nano~/.config/fcitx/profile,启用需要的输入法
虚拟机安装
编辑VMPlayer创建虚拟机,虚拟磁盘设置4G左右即可(如果使用swap可能需要更多),全部作为根分区,文件系统使用btrfs (mkfs.btrfs -dsingle -l16384 -msingle -n16384 -K -f /dev/sda1) 或者zfs (zpool create -f -o ashift=12 -o cachefile= -O utf8only=on -O compression=lz4 -O dedup=off -O xattr=off -O secondarycache=none -O checksum=off -O atime=off -m /mountpoint zroot /dev/sda1,需要重新编译内核并生成新的初始化文件系统)打开 debian-7.5.0-amd64-netinst.iso (无稳定网络使用 debian-7.5.0-amd64-DVD-1。iso )进入安装界面,根据提示安装完毕。安装基本工具:dhclient eth0dpkg --remove-architecture i386 && apt-get updateapt-get install --no-install-recommends \xserver-xorg-input-evdev xserver-xorg-video-vesa xserver-xorg xterm xinit \openbox pcmanfm gvfs lxpanel \fcitx fcitx-pinyin fcitx-ui-classic fcitx-frontend-qt5 \gtk2-engines gnome-icon-theme clearlooks-phenix-theme \vim-gtk gpicview lxtask \unzip unrar p7zip bzip2 xarchiver \alsa-utils mesa-utils libtxc-dxtn-s2tc0 libgl1-mesa-driecho -e "for f in \"pcmanfm --desktop\" lxpanel\ndo\nexec \$f > /dev/null/ 2>&1 &\ndone\nexec openbox" > ~/.xinitrcstartx#添加chrome浏览器#取消pcmanfm的root警告sed -i 's/geteuid/getppid/' /usr/bin/pcmanfm#使用默认的Clearlooks主题并设置字体nano ~/.gtkrc-2.0gtk-font-name = "Sans 10"gtk-icon-theme-name = "GNOME"gtk-theme-name = "Clearlooks-Phenix"#设置GTK+3主题(确定已安装相应的主题引擎)cp -r /usr/share/themes/Clearlooks-Phenix/gtk-3.0 ~/.config/gtk-3.0echo -e "gtk-theme-name = Clearlooks-Phenix\ngtk-icon-theme-name = GNOME" >> ~/.config/gtk-3.0/settings.ini#设置一个鼠标主题nano ~/.XdefaultsXcursor.theme: OpenZone几种常见的联网方式1,使用ppp拨号上网(ppp依赖libpcap0.8)####cat > /etc/ppp/peers/wan << EOFuser "账号"password "密码"defaultroutehide-passwordnoauthpersistplugin rp-pppoe.so eth0usepeerdnsEOF####ifconfig eth0 uppoff -a #断开pon wan #连接2,连接无线网络3,USB共享联网dhclient usb0合盖不休眠nano /etc/systemd/logind.conf,添加一行HandleLidSwitch=ignore
常见问题
自动登录
以root为例,其余用户类似1,/lib/systemd/system/getty@.serviceExecStart=-/sbin/agetty --noclear %I 38400 linux -a root2,/etc/rc.localtouch /tmp/X3,/root/.profile[ -f /tmp/X ] && rm /tmp/X && /usr/bin/startx
VIM基本设置
nano ~/.vimrc"vilanguage messages en_US.UTF-8set autoread history=1000 laststatus=2 nobackup nocompatibleset encoding=utf-8 fileencoding=utf-8 fileencodings=ucs-bom,utf-8,gbk,euc-jp,euc-kr,latin1 fileformat=unix termencoding=utf-8 "set termencoding=gbkset makeprg=make shell=bash shellcmdflag=-c"vimif has("vertsplit")autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endifcolor desertfiletype indent onif expand('%:p') == ''chdir ~/Document/WORK "$VIM\\..\WORKendif"环境变量let $PS1="\$PWD # "set autochdirset linespace=1 list listchars=tab:·\ ,eol:¬ numbersyntax on"绑定键盘map <F2> :echom "Done"<CR>imap <F2> <Esc><F2>liendif"gvimif has("gui_running")"添加菜单项amenu Edit.- :highlight SpecialKey ctermfg=0 guifg=grey30highlight NonText guibg=grey20 guifg=grey30set columns=85 lines=36set guifont=unifont\ 12 guioptions=aeim guitablabel=%tendif
MPlayer设置
编译打包MPlayer以便去掉大量无用的依赖库nano ~/.mplayer/configaf=volnorm,volume=5ao=alsaautosync=30cache=10240font=SimSunosdlevel=3overlapsub=1quiet=yesstop-xscreensaver=yessub-fuzziness=1subfont-autoscale=1subfont-osd-scale=5subfont-text-scale=6subcp=utf-8vo=xvxy=800zoom=yes
省电设置
echo 1 > /sys/module/snd_hda_intel/parameters/power_savefor f in /sys/class/scsi_host/host*/link_power_management_policy; do echo min_power > $f; donefor f in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $f; done1,cpu频率调节设置ondemand2,将bbswitch编入内核任何情况下都不要使用类似nvidia的闭源驱动
cp bbswitch.c linux-3.15/drivers/acpi/sed -i "403s/DEVICE_ACPI_HANDLE/ACPI_HANDLE/" linux-3.15/drivers/acpi/bbswitch.csed -i "53iacpi-y\t\t\t\t+= bbswitch.o" linux-3.15/acpi/Makefile
Openbox基本设置
mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
添加4个基本的快捷键
F1 打开终端
Ctl+F1 退出
Alt+F1 重启
Mod+F1 关闭窗口lunar提供的Solar2Lunar函数可以提供公历农历转换
<keybind key="W-F1">
<action name="Close"/>
</keybind>
<keybind key="A-F1">
<action name="Restart"></action>
</keybind>
<keybind key="C-F1">
<action name="Exit"><prompt>no</prompt></action>
</keybind>
<keybind key="F1">
<action name="Execute"><command>xterm</command></action>
</keybind>
杂七杂八
GRUB2
syslinux不支持btrfs(开启压缩)和zfs,而grub2支持常见的文件系统,扩展性强。此外,非Linux平台可以使用grub4dos。######/boot/grub/grub.cfginsmod all_video
insmod gettext
insmod gfxterm
insmod part_msdos
insmod zfs
loadfont $prefix/fonts/unicode。pf2
set default="0"
set gfxmode=auto
set have_grubenv=true
set lang=
set locale_dir=$prefix/locale
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
set timeout=3
terminal_output gfxterm
menuentry 'Debian -- The Universal Operating System' {
linux /@/boot/vmlinuz acpi_backlight=vendor MOUNT="/bin/zpool import -f zroot" ROOT="" INIT="/lib/systemd/systemd"initrd /@/boot/initrd.img
}#引导ISOmenuentry 'ISO' {linux16 /boot/syslinux/memdisk raw isoinitrd16 /boot/xx.iso}#使用其他分区引导menuentry 'Other Bootloader' {set root='(hdX,msdosY)'chainloader +1}安装至磁盘主引导或者分区引导grub-install --root-directory=/path/to/root/ --no-floppy /dev/sdX(Y)nano /path/to/root/boot/grub/grub.cfg
字体
<fontconfig><selectfont><acceptfont><pattern><patelt name="family"><string>unifont</string></patelt></pattern></acceptfont></selectfont><match target="font" ><test compare="less" name="size" ><double>8</double></test><edit mode="assign" name="size" ><double>8</double></edit></match><match><test name="family"><string>SimSun</string></test><test name="style"><string>Regular</string></test><edit name="antialias" mode="assign"><bool>false</bool></edit></match><match><test name="family"><string>宋体</string></test><test name="style"><string>Regular</string></test><edit name="antialias" mode="assign"><bool>false</bool></edit></match><alias><family>sans-serif</family><prefer><family>Tahoma</family><family>SimSun</family></prefer></alias><alias><family>serif</family><prefer><family>Tahoma</family><family>SimSun</family></prefer></alias><alias><family>monospace</family><prefer><family>DejaVu Sans Mono</family><family>unifont</family></prefer></alias></fontconfig>
虚拟磁盘
file initrd.img #查看文件类型fdisk -l initrd.img #查看虚拟磁盘分区mount -t <fs> -o loop,offset=<Start*Sector> initrd.img /mnt#挂载虚拟磁盘(raw格式)分区cpio -i -d < initrd.img #cpio解压find . | cpio --quiet -R 0:0 -o -H newc | gzip -9 > ../initrd.img #cpio打包后用gzip压缩一个busybox制作初始化文件系统简单例子如下:#编译安装rm -rf busybox && git clone https://github。com/mirror/busyboxcd busyboxmake allyesconfigmake -j 20make install#修改文件(/lib64/ld-linux-x86-64。so.2复制到lib64/,其余库文件复制到lib/)cd _installmkdir etccp -r ../examples/bootfloppy/etc/init{.d,tab} etc/rm linuxrc && touch etc/fstabcat > init << EOF#!/bin/sh/bin/mkdir /sys && /bin/mount -t sysfs -o nodev,noexec,nosuid sysfs /sys/bin/mkdir /proc && /bin/mount -t proc -o nodev,noexec,nosuid proc /proc/bin/mdev -s && /bin/echo /bin/mdev > /proc/sys/kernel/hotplug[ -z "\$MOUNT" ] && exec /bin/init; \$MOUNT; [ ! -z "\$ROOT" ] && /bin/mount --bind \$ROOT /root; exec /bin/switch_root /root \${INIT:-/lib/systemd/systemd}EOF#挂载新根目录位置命令比如 MOUNT="/bin/mount -t btrfs UUID= /root"#转到新根目录后第一个执行程序路径比如sysvinit INIT="/sbin/init"内核的部分设置参数也可以添加到init中比如:/bin/sync && /bin/echo 3 > /proc/sys/vm/drop_caches/bin/echo OFF > /proc/acpi/bbswitch/bin/echo 2 > /proc/sys/vm/overcommit_memory/bin/echo 0 > /proc/sys/vm/swappiness/bin/echo 1000 > /sys/class/backlight/intel_backlight/brightness改变init权限chmod 755 init生成initrd.imgfind . | cpio --quiet -R 0:0 -o -H newc | gzip -9 > ../initrd.img
bootstrap
对于一个具体的平台来说,只能安装与当前内核相同架构的Debian系统(64位系统支持32位)。简单使用流程如下(安装一个amd64架构、sid分支Debian GNU/Linux基础系统):Debian家族操作系统apt-get install debootstrap即可使用,非Debian家族操作系统(指任何其他GNU/Linux发行版)或者不想安装该软件git clone git://anonscm.debian。org/d-i/debootstrap.git注意,debootstrap运行时需要bash脚本MAKEDEVmake -C debootstrapnano debootstrap/debootstrap #将 /usr/share/debootstrap 替换为 ./debootstrap#ppp用来拨号上网,iw、wpasupplicant等用来连接连接无线网络或者创建无线网络./debootstrap/debootstrap \--include=debootstrap,initramfs-tools,btrfs-tools,grub2,\ppp,iw,wpasupplicnat,dnsmasq,bridge-utils,ssh,ftp,axel \--exclude=aptitude,aptitude-common,nano,tasksel,tasksel-data --arch amd64 sid sid-dir ftp://ftp.debian。org/debian/cd sid-dirtar cpJf ../sid-dir.txz *mount -t btrfs -o defaults,compress=zlib,noatime,nobarrier /dev/sda1 /mnttar xpf sid-dir.txz -C /mnt/#修改 /mnt/etc/fstab如下:echo -e "en_US.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8" > /mnt/etc/locale.genecho "DEBIAN" > /mnt/etc/hostnameecho -e "127.0.0.1\nDEBIAN DEBIAN" >> /mnt/etc/hostscat /mnt/usr/share/zoneinfo/Asia/Chongqing > /mnt/etc/localtime #时区设置(BIOS时钟为本地时间)echo "Asia/Chongqing" > /mnt/etc/timezoneecho -e "\n\nLOCAL" > /mnt/etc/adjtimemount --bind /dev /mnt/devmount -t tmpfs /tmp /mnt/tmpmount -t proc /proc /mnt/procmount -t sysfs /sys /mnt/syschroot /mnt /bin/bashhwclock --systohcpasswd rootecho "nameserver 8.8.8.8" > /etc/resolv.confnano /etc/apt/sources.listapt-get update && apt-get install localesapt-get install linux-image-amd64 #安装内核或者使用自编译内核(dpkg -i linux-image-x.x.x_x.x.x-1_amd64.deb)apt-get install grub2
编译内核
一般个人配置内核编译时间在4分钟以内,3.15小于2.5MB(不生成可加载模块)tar xpf linux-x.x.x.tar.xzcd linux-x.x.x && cp /boot/config-x.x.x .configmake menuconfigmake -j20 deb-pkg #临时使用只需安装linux-image-x.x.x_x.x.x-1_amd64.deb几个常见用法:① make localmodconfig #处理.config(取消当前运行内核未加载模块)② sed -i 's/=m/=y/' .config #不生成可加载模块
使用Debian包管理器简化Linux管理
编辑如果你使用Debian软件包管理器来管理Linux软件,应该详细了解Debian软件仓库的原理,这有助于使用Linux命令将让你更容易管理Debian软件。
Linux软件包管理使用的Debian软件库,Debian提供了软件包的安装源。Debian管理器会自动查找库和安装Debian包的依赖关系。如果没有Debian软件库管理系统,要解决这些Debian软件包的依赖关系是一种烦恼。
按目前的Linux分布情况,主要的Debian软件库管理系统是Debian的软件库管理系统,主要用于Debian、Ubuntu和其Linux衍生系统上,如Linux Mint;Debian软件库管理系统使用默认的Debian软件包格式。Debian用.deb。这些Debian软件包是将软件和元数据压缩和档案。Debian元数据提供了有关软件的版本信息,以及Debian软件包的依赖关系。
但Debian软件包的数据库与Debian软件库很容易混淆。虽然通过Debian软件库管理使这些Debian软件包可以让工作更简单,但这些Debian软件包同时有另一个数据库。这意味着Debian软件包的信息来源可以有多个:Debian包数据库和Debian软件库数据库。
使用Debian包数据库工作
Debian包数据库是Debian软件安装了。在Linux系统里最重要的信息来源。Debian包数据库从服务器上检索当前安装的Debian软件,Debian包文件通常是一个丰富的Debian文档和Debian软件使用的信息源,这对于Linux系统Debian软件包之间的依赖关系非常有用。
在基于Debian的Linux服务器,使用dpkg命令。例如,dpkg -L命令可以读取Debian软件包清单,或rpm -ql命令显示哪些文件被包含在一个Debian软件包。
使用Debian软件仓库工作
在安装新的Debian软件或进行Debian软件升级,系统管理员通常使用Debian软件仓库。尤其是更新Debian服务器补丁的时候,Debian软件仓库会更方便:Debian软件包管理器只需要更新新的软件包,使Debian自动可用,Debian库用户便可以使用它们,这过程完全是透明的。
在基于Debian软件仓库的系统,Debian索引文件需要手动更新,使用Debian的apt-get update命令来更新本地机器上的Debian软件包缓存。Debian包缓存更新完成后,便可以很容易的Debian安装软件包和更新。
Debian系统会自动比较了软件仓库的Debian安装包和Debian安装在本地系统的Debian软件包列表,以确定一个Debian包已经安装,或者是否有可用的Debian更新。
Debian软件仓库管理系统在处理Debian软件包依赖关系非常好用:目前所有的Linux都提供了丰富的Debian资料库,并提供必要的Debian依赖,这意味着Linux管理员对Debian软件包的依赖恐惧大大减少了。
Debian软件仓库中没有的包
Debian软件仓库中没有的软件,意味着Debian安装起来比较困难。管理员可以创建自己的Debian软件库和复制本地的Debian软件包。这也让管理员从库安装自定义Debian软件包的时候,进一步减少Debian依赖问题。
(内容来自百度百科)