Classic method
Get pristine sources from:
Linux:
pcmcia-cs: http://pcmcia-cs.sourceforge.net/
or use equivalent sources in Debian and do the following:
# cd /usr/src # tar xfvz linux-whatever.tar.gz # rm -rf linux # ln -s linux-whatever linux # tar xfvz pcmcia-cs-whatever.tar.gz # ln -s pcmcia-cs-whatever pcmcia # cd linux # make menuconfig ... configure stuff ... # make dep # make bzImage ... edits for lilo / grub ... ... move /usr/src/linux/arch/i386/boot/bzImage to boot ... ... /sbin/lilo or whatever you do for grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... add needed module names to /etc/modules # shutdown -r now ... boot to new kernel ...
Debian standard method
Watch out for bug reports on kernel-package, gcc, binutils and modutils. Use new versions of them as needed.
Compiling a custom kernel from source under a Debian system requires special care. Use the new --append_to_version with make-kpkg
to build multiple kernel-images.
# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # use latest version # apt-get install fakeroot # vi /etc/kernel-pkg.conf # input my name and email $ cd /usr/src # build directory $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # if this is your kernel source $ cp /boot/config-2.4.18-386 .config # get current config as default $ make menuconfig # customize as one wishes $ make-kpkg clean # must run (per: man make-kpkg) $ fakeroot make-kpkg --append_to_version -486 --initrd \ --revision=rev.01 kernel_image \ modules_image # modules_image is for pcmcia-cs* etc. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # install
make-kpkg kernel_image actually does make oldconfig
and make dep. Do not use --initrd if initrd is not used.
If one wants to use modules from pcmcia-cs or no pcmcia, one should select "General setup —>" to "PCMCIA/CardBus support —>" in make menuconfig and set the configuration to "<> PCMCIA/CardBus support" (i.e., uncheck the box).
On an SMP machine, set CONCURRENCY_LEVEL according to kernel-pkg.conf(5).
Disk flush intervals
You can change disk flush intervals through the proc filesystem. The following will shorten its interval from the default five seconds to one second.
# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush
This may negatively impact file I/O performance a little bit. But this secures file contents except for the last one second which is shorter than the default five seconds. This is true even for journaling filesystems.
EXT3 filesystem ( > 2417)
Enabling a journaling filesystem with the EXT3 FS involves the following steps using a Debian precompiled kernel-image ( > 2.4.17) package:
# cd /etc; mv fstab fstab.old # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab # vi /etc/fstab ... set root filesystem type to "auto" instead of "ext3,ext2" # cd /etc/mkinitrd # echo jbd >>modules # echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-2.4.17-686-smp
... install latest kernel and set up boot (lilo is run here) # tune2fs -j -i 0 /dev/hda1
# tune2fs -j -i 0 /dev/hda2
... For all EXT2 FS's converted to EXT3 # shutdown -r now
Now EXT3 journaling is enabled. Using ext3,ext2 as the fstab "type" entry ensures safe fallback to EXT2 if the kernel does not support EXT3 for non-root partitions.
If you have previously installed a 2.4 kernel and do not wish to reinstall, perform the above steps up to the apt-get commands, then:
# mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp
# lilo # tune2fs -j -i 0 /dev/hda1
# tune2fs -j -i 0 /dev/hda2
... for all EXT2 FS's converted to EXT3 # shutdown -r now
Now EXT3 journaling is enabled.
If /etc/mkinitrd/modules was not set when mkinitrd
was run and you would like to add some modules at boot time:
... at initrd prompt to gain shell (5 sec.), type RETURN # insmod jbd # insmod ext3 # modprobe ext3 may take care of everything # insmod ext2 # ^D ... continue booting
At the system boot screen (dmesg), "cramfs: wrong magic" may appear but this is known to be harmless. This issue has been resolved in Sarge (2002/10). See http://bugs.debian.org/135537
and the EXT3 File System mini-HOWTO or /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz for more information.
Some systems are reported to experience severe kernel lockup if EXT3 is enabled but I had no problem (as of 2.4.17).
The Linux kernel under Debian
Debian has its own method of recompiling the kernel and related modules. See also .
Kernel headers
Most "normal" programs don't need kernel headers and in fact may break if you use them directly; instead they should be compiled against the headers with which glibc was built, which are the versions in /usr/include/linux and /usr/include/asm
of the Debian system.
So do not put symlinks to the directories in /usr/src/linux from /usr/include/linux and /usr/include/asm, as suggested by some outdated documents.
If you need particular kernel headers for some kernel-specific application programs, alter the makefile(s) so that their include path points to dir-of-particular-kernel-headers/include/linux and dir-of-particular-kernel-headers/include/asm.
Kernel recompile
The use of gcc, binutils, and modutils
from Debian unstable may help when compiling the latest Linux kernel. See /usr/share/doc/kernel-package/README.gz, especially the bottom of this, for the official information.
Since it is a moving target, kernel compilation is a difficult subject that may confuse even the most admired developer:
Manoj Srivastava wrote:
--initrd requires a Debian-only cramfs patch.
Herbert Xu wrote:
No it does not, all you have to do to use a filesystem other than CRAMFS is to set MKIMAGE in /etc/mkinitrd/mkinitrd.conf.
Be careful and always rely on the /usr/share/doc/kernel-package/README.gz by Manoj and Kent. Make sure to obtain the latest unstable version of the kernel-package
package if you are to compile the latest version of the kernel.
initrd is not needed for a kernel compiled only for one machine. I use it since I want my kernel to be almost the same as the one provided by the kernel-image packages. If you use initrd, make sure to read mkinitrd(8) and mkinitrd.conf(5). See also http://bugs.debian.org/149236.
Network function
/etc/modules needs to contain the following for extra network function:
# net/ipv-4 ip_gre ipip
# net/ipv-4/netfilter # iptable (in order) ip_tables ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm
The preceding may not be optimized. depmod may take care of some of the above modules.
Parallel port support
For kernel-image-2.4.*, parallel port support is provided as a module. Enable it by:
# modprobe lp # echo lp >> /etc/modules
See Documentation/parport.txt in the Linux source.
PCMCIA
/etc/modules may need to contain the following for some old PCMCIA to function:
# ISA PnP driver isa-pnp # New Low level PCMCIA driver # yenta_socket # does not seem to be needed in my case
The rest is taken care of by PCMCIA scripts (from the pcmcia-cs
package), depmod and kmod. I think I needed isa-pnp because my laptop is an old ISA-PCMCIA. Recent laptops with CardBus/PCMCIA may not require this.
Voice of the genius Miquel van Smoorenburg miquels@cistron.nl:
"I simply removed the entire pcmcia stuff from the laptop here at work, including the cardmgr etc and just installed a 2.4 kernel with cardbus support, and the new hotplug package from woody.
As long as you only have 32-bit cards you don't need the pcmcia package; 2.4 has card services built in. And the standard tulip driver should work fine with your dlink card.
—Mike."
See and .
support module is no
For whatever reason, the RTL- 8139 support module is no longer called rtl8139, it's now called 8139too. Just edit your /etc/modules to reflect this change when upgrading a 2.2 kernel to a 2.4 kernel.
SCSI
[NOT TESTED] /etc/modules needs to contain the following for SCSI to function:
# SCSI core scsi_mod # SCSI generic driver sg # SCSI disk sd_mod # All other needed HW modules ...
depmod may take care of some of the above modules.
Sluggish old low memory machines
For some old low memory systems, it may still be useful to enable over-commit of memory through the proc filesystem:
# echo 1 > /proc/sys/vm/overcommit_memory
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ 7 ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
The modularized 24 kernel
The new Debian 2.4 kernels provided by kernel-image-2.4.NN are very modularized. You have to make sure those modules are activated to make the kernel function as you intend.
Although I have many examples for /etc/modules in the following section as a quick fix, I hear that the correct way to fix these module-related issues is to provide an alias for the device in a file in /etc/modutils/ since there are enough aliases available with current kernels. Some modules may be auto activated by hardware detection programs such as discover. See also Hardware detection for X, раздел 9.4.2.
See Documentation/*.txt in the Linux source for the precise information.
Too many open files
The Linux kernel may complain "Too many open files". This is due to the small default value (8096) for file-max. To fix this problem, run the following command as root:
# echo "65536" > /proc/sys/fs/file-max # for 2.2 and 2.4 kernel # echo "131072" > /proc/sys/fs/inode-max # for 2.2 kernel only
or put the following into /etc/sysctl.conf for the permanent change:
file-max=65536 # for 2.2 and 2.4 kernel inode-max=131072 # for 2.2 kernel only
Tuning the kernel through the proc filesystem
The behavior of the Linux kernel can be changed on the fly using the proc filesystem.
For basic information on changing kernel parameters through the /proc filesystem, read Documentation/sysctl/* in the Linux source.
See some examples of kernel parameter manipulations in /etc/init.d/networking and Странные проблемы доступа на некоторые web-сайты, раздел 3.7.5.
See sysctl.conf(5) for how to set up the boot time kernel configuration through /proc filesystem with /etc/init.d/procps.sh script usually run from /etc/rcS.d/S30procps.sh.
Alternative commands
To make the command vi run vim, use update-alternatives:
# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi
Enter to keep the default[*], or type selection number: 2
Items in the Debian alternatives system are kept in /etc/alternatives as symlinks.
To set your favorite X Window environment, apply update-alternatives to /usr/bin/x-session-manager and /usr/bin/x-window-manager. For details, see Custom X sessions, раздел 9.4.5.1.
/bin/sh is a direct symlink to /bin/bash or /bin/dash. It's safer to use /bin/bash to be compatible with old Bashism-contaminated scripts but better discipline to use /bin/dash to enforce POSIX compliance. Upgrading to a 2.4 Linux kernel tends to set this to /bin/dash.
Автоматическая установка при помощи APT
Для автоматической установки добавьте следующую строку в файл /etc/apt/apt.conf:
Dpkg::Options {"--force-confold";}
Это эквивалентно запуску команды apt-get -q -y packagename. Так как на все вопросы дается утвердительный ответ "да", то иногда это может вызвать проблемы, поэтому используйте эту возможность с осторожностью. Смотрите страницы apt.conf(5) и dpkg(1).
Позже Вы можете повтороно конфигурировать любой конкретный пакет путем Повторное конфигурирование установленных пакетов, раздел 6.4.4.
Что делать, если команда dpkg не работает
Неработоспособность программы dpkg приводит к невозможности установки любого .deb файла. Следующая процедура поможет Вам выйти из подобной ситуации. (в следующей команде можно заменить "links" на Ваш любимый браузер)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... скачиваем пакет dpkg_версия_архитектура.deb $ su password: ***** # ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Для архитектуры i386 также можно использовать следующий адрес: http://packages.debian.org/dpkg.
Convert or install an alien binary package
alien enables the conversion of binary packages provided in Redhat rpm, Stampede slp, Slackware tgz, and Solaris pkg file formats into a Debian deb package. If you want to use a package from another Linux distribution than the one you have installed on your system, you can use alien to convert it to your preferred package format and install it. alien also supports LSB packages.
Управление пакетами в Debian
Чтобы снизить нагрузку на репозитарии Debian по сети, установите локальный HTTP прокси-сервер squid для кэширования пакетов, скачиваемых системой APT, и настройте переменную окружения http_proxy или задайте значение параметру http в файле /etc/apt/apt.conf
(для того, чтобы APT использовала этот прокси-сервер - прим. переводчика). Эти меры существенно улучшат производительность сетевых обновлений, особенно, если Вы имеете несколько Debian-машин в сети.
Although the pinning feature of apt_preferences(5) is powerful, it does not solve all the dependency issues since dependency requirements tend to pull in newer versions of other fundamental program packages.
Использование метода, описанного в chroot, раздел 8.6.34
предпочтительно для обеспечения стабильности системы и одновременно доступа к последним версиям программного обеспечения.
Хотя эта глава предназначена для использования на Woody-версии Debian, большая часть информации также применима к Potato-версии (за исключением apt_preferences(5) и разделов, связанных с /etc/apt/preferences).
Информация о файле
Чтобы найти пакет, к которому некий файл принадлежит, сделайте:
$ dpkg {-S|--search} образец # найти слово образец в установленных пакетах $ zgrep -e образец /local/copy/of/debian/woody/Contents-i386.gz
#... найти образец (имя файла) в архиве Debian
Или используйте специально предназначенную для этого команду:
# apt-get install dlocate # конфликтует с slocate (защищенная версия locate) $ dlocate имя_файла # более быстрая альтернатива командам dpkg -L и dpkg -S ... # apt-get install auto-apt # инструментарий для установки пакетов по запросу # auto-apt update # создать базу данных для auto-apt $ auto-apt search образец # поиск образца во всех пакета, установленных и нет.
Информация о пакете
Поиск и вывод информации из архива пакетов. Убедитесь, что система APT настроена на соответствующий архив(файл /etc/apt/sources.list). Если Вы хотите увидеть, как пакеты установлены из дистрибутивов testing/unstable, пользуйтесь командой apt-cache policy— очень удобно.
# apt-get check # обновить кэш и проверить его на предмет сломанных пакетов $ apt-cache search образец # поиск пакета по текстовому образцу $ apt-cache policy образец # информация по пакету priority/dists $ apt-cache show -a образец # показать описание пакета во всех дистрибутивах $ apt-cache showsrc образец # показать описание пакетов с исходным текстом $ apt-cache showpkg образец # отладочная информация по пакету # dpkg --audit|-C # поиск неполностью установленных пакетов $ dpkg {-s|--status} пакет ... # описание установленного пакета $ dpkg -l пакет ... # вывести статус установленного пакета (по одной строчке на пакет) $ dpkg -L пакет ... # вывести список файлов, установленных пакетом
Команда apt-cache showsrc не заявлена для релиза Woody, но она работает:)
Вы также можете найти информацию по пакету в следующих файлах (я использую mc для их просмотра):
/var/lib/apt/lists/* /var/lib/dpkg/available
Сравнение следующих файлов дает информацию о том, что же произошло в последний сеанс установки.
/var/lib/dpkg/status /var/backups/dpkg.status*
Команды apt-cache и apt-get
While tracking testing as described in the above example, мы можем управлять системой следующими командами:
apt-get -u upgrade
This tracks the testing distribution and upgrades all the packages on the system while installing their dependencies from testing.
apt-get -u dist-upgrade
This tracks the testing distribution and upgrades all the packages on the system while installing and resolving their dependencies from testing.
apt-get -u dselect-upgrade
This tracks the testing distribution and upgrades all the packages on the system according to the selections of dselect.
apt-get -u install package
This installs package and its dependencies from the testing distribution.
apt-get -u install package/unstable
Устанавливает пакет package из unstable-дистрибутива, при этом пакеты, от которых он зависит, берутся из testing-дистрибутива.
apt-get -u install -t unstable package
Устанавливает пакет package из unstable-дистрибутива, при этом, пакеты от которых он зависит, также берутся из unstable
при помощи установки Pin-Priority unstable в 990.
apt-cache policy foo bar ...
Проверяет статус пакетов foo bar ....
apt-cache show foo bar ... | less
Проверяет информацию по пакетам foo bar ....
apt-get install foo=2.2.4-1
Устанавливает конкретную версию 2.2.4-1 пакета foo.
apt-get -u install foo bar-
Устанавливает пакет foo и удаляет пакет bar.
apt-get remove bar
Удаляет пакет bar, но не трогает его конфигурационные файлы.
apt-get remove --purge bar
Удаляет пакет bar вместе со всеми его конфигурационными файлами.
В приведенных выше примерах использование опции -u гарантирует, что apt-get выведет список всех пакетов, подлежащих обновлению, и запросит подтверждение у пользователя перед началом своих действий. Вот так можно установить опцию -u в режим по умолчанию:
$ cat >> /etc/apt/apt.conf << . // Всегда показывать пакеты для обновления (-u) APT::Get::Show-Upgraded "true"; .
Используйте опцию -s для имитации обновления без выполнения каких-либо действительных операций.
Команды выживания в системе Debian
Обладая этими знаниями, Вы можете пребывать в вечном
"обновлении" :-)
Local package archive
In order to create a local package archive which is compatible with APT and the dselect system, Packages needs to be created and package files need to be populated in a particular directory tree.
A local deb repository similar to an official Debian archive can be made in this way:
# apt-get install dpkg-dev # cd /usr/local
# install -d pool # physical packages are located here # install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable
Version: 3.0
Component: main
Origin: Local
Label: Local
Architecture: i386
EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
Alternatively, a quick-and-dirty local deb repository can be made:
# apt-get install dpkg-dev # mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
These archives can be remotely accessed by providing access to these directories through either HTTP or FTP methods and changing entries in /etc/apt/sources.list accordingly.
Нирвана в командах Debian
Осознавшие смысл этих команд спасутся от вечных мучений ада обновлений и достигнут нирваны в Debian.
Обзор файла /etc/apt/preferences
В примере файла /etc/apt/preferences, представленного в разделе Установка системы APT - нет перевода!!!!, раздел 6.2.2, строка "Package: *" в первой строчке означает, что эта секция применяется ко всем пакетам. Вы можете использовать имя пакета вместо "*" для указания значения Pin-Priority этого пакета.
Во второй строчке запись "Pin: release a=stable" означает, что apt-get получает файл Packages.gz из архива Debian, у которого в файле Release есть строка "Archive: stable".
В последней строчке запись "Pin-Priority: 500" указвает значение Pin-Priority равное 500.
Если существует несколько пакетов с одним и тем же именем, устанавливается пакет с наибольшим значением Pin-Priority
В частности, значения Pin-Priority имеют следующий смысл:
1001 и выше: Downgradable priorities.
Пакеты с Pin-Priority из этого диапозона могут быть понижены в версии.
от 100 до 1000: Стандартные приоритеты.
Такие пакеты нельзя понижать в версии. Вот несколько ключевых значений Pin-Priority:
990: приоритет установлен через --target-release или опцию -t. Подробнее на странице apt-get(8).
500: приоритет всех пакетов по умолчанию.
100: приоритет установленных пакетов в настоящее время.
0 - 99: неавтоматические приоритеты. (Они используются только в случае, если пакет не установлен и нет другой доступной версии пакета.)
менее нуля: Версия пакета никогда не выбирается.
Эффект подобный от --target-release может быть получен от установки файла /etc/apt/apt.conf следующим образом:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
Опция --target-release в командой строке и установки в файле /etc/apt/apt.conf имеют больший приоритет установок в файле /etc/apt/preferences. Будьте внимательны с этим побочным эффектом при работе с файлом /etc/apt/preferences.
Операции remove и purge с пакетами
Удаление пакета с сохранением его конфигурации:
# apt-get remove пакет ... # dpkg --remove пакет ...
Удаление пакета, включая его конфигурацию:
# apt-get remove --purge пакет ... # dpkg --purge пакет ...
Optimized sourceslist
In short, fancy efforts to create an optimized sources.list did not produce a significant improvement for me from a location in the USA. I manually chose a nearby site using apt-setup.
apt-spy creates sources.list automatically, based on latency and bandwidth. netselect-apt creates a more complete sources.list, but uses an inferior method of choosing the best mirror (ping time comparison).
# apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
Основные инструменты
dselect – инструмент для управления пакетами с меню-подобным интерфейсом (высокоуровневый инструмент) dpkg – инсталлятор пакетов (основная утилита для работы с файлами-пакетами) apt-get – инсталлятор пакетов (утилита для работами с репозитариями пакетов, интерфейс командной строки к системе APT) tasksel – инсталлятор задач (набора пакетов) aptitude – инсталлятор пакетов (пакеты & задачи, интерфейс к APT на базе ncurses) deity – альтернатива ncurses-интерфейса к APT synaptic, gsynaptic – графические утилиты для работы с APT
Данные инструменты принадлежат разным уровням работы с пакетами. dselect работает над системой APT (команда apt-get) и программой dpkg.
APT использует файлы /var/lib/apt/lists/* для отслеживания доступных пакетов, в то время как dpkg для этих целей использует файл /var/lib/dpkg/available. Если Вы установили пакеты непосредственно используя программу apt-get или подобными средствами (aptitude), то перед тем, как запускать команды dselect select, tasksel или dpkg -l, не забудьте обновить файл /var/lib/dpkg/available через пункт меню [U]pdate программы dselect или, запустив в командной строке команду "dselect update".
Так как пакеты имееют зависимости, программа apt-get автоматически при установке пакета выбирает к установке дополнительные пакеты, от которых устанавливаемый пакет зависит (depends), но она не трогает пакеты, связанные с ним зависимостями "рекомендует" (recommends) и "предлагает" (suggests). В то же время программа dselect
через меню предлагает установить пакеты, основываясь на зависимостях вида "зависит" (depends), "рекомендует" (recommends) и "предлагает" (suggests). Программа aptitude имеет опцию для автоматической установки всех пакетов, выбираемых этими видами зависимостей. Смотрите .
Основы управления пакетами в Debian
Вы можете установить набор пакетов, называемых задачей, установить пакеты по одному или обновить систему, используя инструменты управления пакетами, описанные ниже . Также обращайтесь к Советы по установке системы Debian, Глава 3, Обновление до дистрибутива testing, Глава 5 и .
Откат всех пакетов до уровня stable
Чтобы откатить все пакеты до уровня stable, отредактируйте файл /etc/apt/preferences следующим образом:
Package: * Pin: release a=stable Pin-Priority: 1001
и запустите команду "apt-get upgrade", которая вызовет принудительный откат из-за значения Pin-priority > 1000. Нужно предупредить, что могут возникнуть небольшие накладки с зависимостями.
Отключение неиспользующихся сервисов
Дистрибутив Debian серъезно относится к вопросам безопасности и ожидает участие компетентного администратора. Поэтому иногда простота использования переходит на второй план, и многие сервисы идут с наивысшим уровнем безопасности, а сама система с минимальным набором работающих сервисов после установки по умолчанию.
Если Вы имеете какие-то сомнения относительно сервисов (Exim, DHCP, ...), запустите команду ps aux или проверьте содержимое файлов /etc/init.d/* и /etc/inetd.conf. Также проверьте файл /etc/hosts.deny подробнее в Restricting logins with PAM, раздел 9.2.1. Очень полезная команда pidof (смотрите pidof(8)).
С недавних пор в Debian система X11 не позволяет удаленные TCP/IP подключения. Смотрите . Проброс трафика системы X Window в тунеле SSH также запрещена. Смотрите .
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ 6 ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
Портирование пакета в систему на базе stable
Для частичного обновления системы на базе stable необходимо пересобрать пакет в окружении stable системы, используя соответствующий пакет с исходным текстом. Это позволит избежать большого количества обновлений пакетов, от которых устанавливаемый пакет зависит. Во-первых, добавьте следующие записи в файл to /etc/apt/sources.list:
deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free
Здесь каждая запись deb-src разбита на две строки для удобства показа, однако в файле sources.list такое разбиение на строки недопустимо.
Далее получаем исходный текст и собираем пакет:
$ apt-get update # обновляем кэш списка пакетов $ apt-get source пакет
$ dpkg-source -x пакет.dsc
$ cd пакет-версия
... изучаем требующиеся пакеты (зависимости Build-depends в .dsc файле) и устанавливаем их также. Вам также понадобится пакет "fakeroot".
$ dpkg-buildpackage -rfakeroot
...или (без сигнатуры) $ dpkg-buildpackage -rfakeroot -us -uc # если нужно, позже воспользуйтесь "debsign"
...Затем для установки пакетов выполняем $ su -c "dpkg -i имя_файла_пакета.deb"
Обычно нужно установить несколько пакетов с суффиком "-dev" для удовлетворения зависимостей пакета. Программа debsign находится в пакете devscripts. Программа auto-apt способна упростить удовлетворение таких зависимостей. Используйте программу fakeroot, чтобы не заниматься сборкой пакетов под root.
В Woody эти вопросы с зависимостями могут быть упрощены. Например, дл компиляции пакета pine, который поставляется только в виде исходного текста, выполните:
# apt-get build-dep pine # apt-get source -b pine
Повторное конфигурирование установленных пакетов
Используйте следующие команды для повторного конфигурирования любого уже установленного пакета.
# dpkg-reconfigure --priority=medium пакет [...] # dpkg-reconfigure --all # повторно конфигурирвоать все пакеты # dpkg-reconfigure locales # генерировать дополнительные локали # dpkg-reconfigure --p=low xserver-xfree86 # повторно настроить X-сервер
Do this for debconf if you need to change the debconf
dialog mode permanently.
Некоторые программы идут со специальными настроечными скриптами.
apt-setup - создает список /etc/apt/sources.list install-mbr - устанавливает менеджер главной загрузочной записи tzconfig - устанавливает временную зону gpmconfig - настроить демон мыши gpm sambaconfig - настроить сервер Samba в Potato (Woody использует debconf) eximconfig - настроить Exim (MTA) texconfig - настроить TeTeX apacheconfig - настроить Apache (httpd) cvsconfig - настроить CVS sndconfig - настроить звук ... update-alternatives - set default command, e.g., vim as vi update-rc.d - System-V init script management update-menus - Debian menu system ...
Программа aptitude
aptitude - это новый инстраллятор пакетов с меню-интерфейсом, похожий на dselect. Он также может использоваться как альтернативна консольной команде apt-get. Изучите страницу aptitude(1).
Программа aptitude обрабатывает одно-клавишные команды, вводимые в нижнем регистре
Клавиша Действие F10 Меню ? Помощь по клавишами управления u Обновить информацию об доступных пакетах в репозитарии g Скачать и установить выбранные пакеты q Выйти из текущего экрана с сохранением изменений x Выйти без сохранения изменений Enter Просмотр информации о пакете
Программа aptitude опционально может автоматически устанавливать пакеты, основываясь на зависимостях не только depends, но recommends и suggests. Вы можете изменять ее поведение, выбрав в меню F10 -> Options -> Dependency handling.
Программа aptitude предлагает доступ ко всем версиям пакета.
Программа dselect
После старта программа dselect автоматически выбирает все пакеты с приоритетами "Required" (требующиеся), "Important" (важные) и "Standard" (стандартные). В системе Potato некоторые большие пакеты вроде teTex или Emacs попадали в этот список, и самым лучшим был их пропуск при начальной установке системы путем ручного снятия отметки соответствущих пакетов (нажатие клавиши `_'). В Woody же эти пакеты уже помечены приоритетом "Optional"" (опициональный).
Программа dselect имеет несколько необычный интерфейс пользователя. Существует четыре несколько странных команды (регистр букв важен!):
Клавиша Действие Q Выход. Подтвердить текущий выбор пакетов и выйти из программы. (не принимать во внимание зависимости) R Вернуть все назад! Я не имел это ввиду. D Проклятье! Мне не волнует, что думает dselect. Просто сделай это! U установить все пакеты как рекомендуемые
При помощи D и Q Вы можете выбрать конфликтующие пакеты (на свой страх и риск). С этими командами следует обращаться осторожно. В настоящее время dselect является достаточно продвинутым инструментом с меню-интерфейсом, который предлагает тонкий контроль над выбором пакетов, в частности, по зависимостям suggests (предлагает) и recommends (рекомендует).
Для снижения "разговорчивости" программы добавьте в файл /etc/dpkg/dselect.cfg строку с опцией "expert". Для медленных машин Вы можете запускать dselect на другой более быстрой машине для поиска нужных пакетов, а на медленной машине уже использовать apt-get install для их установки.
dselect не дает доступ к пакетам, которые не preferred by the Pin-Priority.
Программные ошибки в Debian и поддержка
Если у Вас возникли проблемы с определенным пакетом, исследуйте следующие сайты перед тем, как обращаться за помощью или оформлять отчет об ошибке. (страницы одинаково хорошо будут выглядеть в браузерах lynx, links и w3m):
$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/имя-пакета # если известно имя пакета $ lynx http://bugs.debian.org/номер-ошибки # если известен номер ошибки
Зайдите на Google (www.google.com) для поиска слов, включив фразу "site:debian.org".
Если что-то не ясно, изучите замечательное руководство. Установите переменную окружения CDPATH следующим образом:
export CDPATH=.:/usr/local:/usr/share/doc
и наберите
$ cd ИмяПакета
$ pager README.Debian # если файл существует $ mc
Большое количество ресурсов по поддержке приведены по адресу Support for Debian, Глава 15.
Разрешение проблем APT upgrade
Проблемы с зависимостями пакетов могут случаться при обновлениях в unstable/testing, описанных в Обновление системы Debian, раздел 5.3. Чаще всего это случается потому, что обновляемый пакет имеет зависимости, которые нельзя удовлетворить. Подобные проблемы решаются так:
# apt-get dist-upgrade
Если это не работает, то повторяйте одну из следующих команд до разрешения проблемы:
# apt-get upgrade -f # продолжение обновления (upgrade) даже после возникновения ошибки ... или # apt-get dist-upgrade -f # продолжение обновления дистрибутива (dist-upgrade) даже после возникновения ошибки
Некоторые действительно неправильные скрипты могут привести к постоянной проблеме. Обычно лучше разрешать подобные ситуации, изучив файлы /var/lib/dpkg/info/packagename.{post,pre}{inst,rm}
скриптов сбойного пакета и затем запустить команду:
# dpkg --configure -a # настраивает все ненастроенные пакеты
Если скрипт жалуется на отсутствие какого-нибудь конфигурационного файла, поищите его в /etc. Если он существует, но с расширением .new (или подобным), измените его имя на имя без этого расширения (команда mv).
Проблема зависимостей пакетов может возникать при установке пакета в смесь unstable/testing. Существует несколько путей обойти зависимости.
# apt-get install -f package # не принимать во внимание сломанные зависимости
Альтернативный метод исправить эту ситуацию заключается в использовании пакета equivs. Смотрите /usr/share/doc/equivs/README.Debian
and .
Система на смеси stable/testing/unstable
Команда apt-show-versions выводит список версий доступных пакетов по дистрибутивам.
$ apt-show-versions | fgrep /testing | wc ... как много пакетов мы имеет в testing $ apt-show-versions -u ... список пакетов, подлежащих обновлению $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... обновляет пакеты из unstable на их более новые версии
System-V init and runlevels
The default runlevel to boot into can be set in /etc/inittab.
Unlike other distributions, Debian makes the management of runlevel completely the sysadmin's responsibility. Management of System-V style init
on Debian is intended to be performed through update-rc.d scripts.
Starting /etc/init.d/name in runlevel 1,2,3 and stopping in 4,5 with sequencing priority number 20 (normal) can be done by:
# update-rc.d name start 20 1 2 3 . stop 20 4 5 .
Removing symbolic links while the script in init.d still exists can be done by:
# update-rc.d -f name remove
For editing runlevels, I cheat. I edit entries manually using the mv command at the shell prompt of mc while copying link entries using Alt-Enter. For example:
# mv S99xdm K99xdm # disable xdm (X display manager)
I even disable a daemon by inserting exit 0 at the start of an init.d script as a quick hack. These are conffiles
after all.
The dpkg-divert command
File diversions are a way of forcing dpkg not to install a file into its default location, but to a diverted
location. Diversions can be used through the Debian package scripts to move a file away when it causes a conflict. System administrators can also use a diversion to override a package's configuration file, or whenever some files (which aren't marked as conffiles) need to be preserved by dpkg, when installing a newer version of a package which contains those files (see Сохранение текущей конфигурации, раздел 2.2.4).
# dpkg-divert [--add] filename # add "diversion" # dpkg-divert --remove filename # remove "diversion"
It's usually a good idea not to use dpkg-divert unless it is absolutely necessary.
The equivs package
If you compile a program from source, it is best to make it into a real local debianized package (*.deb). Use equivs as a last resort.
Package: equivs Priority: extra Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information.
Tracking a flavor of Debian distribution
Depending on your preference for a flavor of Debian to track, you can change the sample /etc/apt/preferences in Установка системы APT - нет перевода!!!!, раздел 6.2.2
to fit your needs:
track stable: change Pin-Priority of testing to 50 track testing: keep settings as shown above track testing(unstable): change Pin-Priority of unstable to 500 track unstable(testing): change Pin-Priority of unstable to 800
A guideline for the choice of Pin-Priority is to move from the top to bottom in the above table as the time moves from a time immediately after a distribution release to a time of freeze for the next release.
Caution: tracking the testing flavor of Debian has a side effect of providing very slow security fixes.
If you mix flavors of Debian, testing with stable or unstable with stable, you will be likely to pull in unintentionally key packages from testing or unstable
that may be buggy. So be warned.
Examples of /etc/apt/preferences which lock some key packages to the more mature version while tracking the less mature version for other nonessential packages are available in the examples subdirectory as preferences.testing and preferences.unstable. On the other hand, preferences.stable forces all packages to be downgraded to stable.
Удаление файлов кэшированных пакетов
В процессе установки через APT в каталоге /var/cache/apt/archives
кэшируются файлы пакетов, и их можно удалить.
# apt-get autoclean # удаляет только неиспользованные файлы пакетов # apt-get clean # удаляет все файлы из кэша
Удержание старых пакетов
Например, удержание пакетов libc6 и libc6-dev при работе с командами dselect и apt-get -u upgrade package может быть выполнено так:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Однако, для команды apt-get -u install пакет этот "hold" не будет помехой. Для того, чтобы удержать пакет от обновления путем автоматического отката в командах apt-get -u upgrade пакет или apt-get -u dist-upgrade, добавьте следующие строки в файл /etc/apt/preferences:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
Здесь элемент "Package:" не может использовать запись вида "libc6*". Если Вам нужно удержать все бинарные пакеты, связанные с пакетом с исходными текстами glibc в синхронном состоянии, Вам нужно перечислить всех их здесь явным образом.
Следующая команда выведет всех удержанные от обновления пакеты:
dpkg --get-selections "*"|grep -e "hold$"
Удобные инструменты
apt-cache - проверка локального кэша пакетов dpkg-reconfigure - повторная конфигурация уже установленного пакета (если он использует debconf) dpkg-source - управляет исходными файлами пакета dpkg-buildpackage - aвтоматизирует сборку пакета ...
Установка пакета в систему, которая не загружается
Загрузите Linux со спасательного диска/дискеты Debian или альтернативного раздела мультизагрузочной Linux-системы. See Booting the system, раздел 8.1. Подмонтируйте незагружающуюся систему к каталогу /target и используйте у dpkg chroot-режим установки.
# dpkg --root /target -i имя_пакета.deb
Затем настройте пакеты и исправьте проблемы.
Между прочим, если причиной нормальной загрузки является нарушенный загрузчик lilo, Вы можете загрузить систему с использованием стандартного спасательного диска Debian. На загрузочное приглашение boot: введите (подразумевается, что корневой раздел Вашей Linux-системы - /dev/hda12, что нужно войти на третий уровень исполнения системы):
boot: rescue root=/dev/hda12 3
После этого Вы загружаете практически полностью функционирующую системы на ядре с гибкого диска. (возможно, при загрузке будут некоторые проблемы с отсутствием поддержки некоторых возможностей в ядре или каких-либо модулей).
Установка системы APT - нет перевода!!!!
If you try to track mixed environment as described here, you may likely to hit some package dependency conflicts. It is good idea not to mix flavors. Followings are for people who is willing to experiment knowing some risks.
For selective upgrade while tracking the testing distribution, the APT system (>Woody) must be set up as in Перевод системы APT к ее Woody-версии, раздел 5.1 to use apt_preferences(5) features.
First, add the sources for stable, testing, and unstable to your /etc/apt/sources.list. Then, edit /etc/apt/preferences to set the proper Pin-Priority. [31]
Package: * Pin: release a=stable Pin-Priority: 500
Package: * Pin: release a=testing Pin-Priority: 600
Package: * Pin: release a=unstable Pin-Priority: 50
Установка задачи при помощи программ tasksel или aptitude
Программа tasksel является Дебиановским Установщиком Задач, который используется при установке системы в упрощенном "simple" режиме.
Когда Вам в системе нужна некоторая функциональность, которая реализуется множеством пакетов, использование tasksel - самый лучший способ это сделать. Последовательность команд должна быть такой:
# dselect update # tasksel
Программа aptitude также предлагает доступ к задачам. Но она не только дает Вам возможность выбрать для установки задачу, но и позволяет выборочно через меню отменить установку некоторых пакетов из состава задачи.
Verify installed package files
debsums enables verification of installed package files against MD5 checksums. Some packages do not have available MD5 checksums. A possible temporary fix for sysadmins:
# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D
per Joerg Wendland joergland@debian.org (untested).
Восстановление через dpkg
В крайних случаях восстановление неработоспособной программы dselect (APT) на серьезно поврежденной системе может быть выполнено при помощи программы dpkg без использования APT:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # до тех пор, пока ошибки не перестанут появляться
Если какого-либо пакета нет, получите его с используя:
# mc # используйте "FTP-соединение", указав Debian FTP-сервер
Стоит заметить, что с недавнего времени сами файлы пакетов на HTTP/FTP-сервере располагаются в новом каталоге /pool, а не в классическом месте - каталоге /dist. (Смотрите Каталог pool, раздел 2.1.10.)
Затем устанавливаем пакеты:
# dpkg -i /var/cache/apt/archives/packagefile.deb
Сломанные зависимости или исправляем, или поступаем таким образом:
# dpkg --ignore-depends=пакет1,... -i имя_файла_пакета.deb
# dpkg --force-depends -i имя_файла_пакета.deb
# dpkg --force-depends --purge пакет
# dpkg --force-confmiss -i имя_файла_пакета.deb # Установка отсутствующих conf-файлов
Восстановление информации о выбранных пакетах
Если файл /var/lib/dpkg/status оказался поврежден по какой-либо причине, система Debian теряет информацию о выбранных пакетах и попадает в затруднительное положение. Ищите старую версию файла /var/lib/dpkg/status под именем /var/lib/dpkg/status-old или /var/backups/dpkg.status.*.
Неплохой идей является размещение каталога /var/backups/ на отдельном разделе жесткого диска, так как он содержит массу важных системных данных.
Если старый файл /var/lib/dpkg/status недоступен, Вы все же можете восстановить потерянную информацию из каталогов из /usr/share/doc/:
# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections # dselect --expert # reinstall system, de-select as needed
Восстановление системы после сбоя каталога /var
Так как каталог /var содержит регулярно обновляемые данные, такие как почта, он подвержен разного рода порче. Выделение его на независимый раздел жесткого диска ограничивает риск. Если сбой все же произошел, то для восстановления Вашей Debian системы Вам понадобится восстановить и этот каталог.
Получите скелет содержимого каталога /var от минимальной рабочей системы Debian, основанной на той же или более древней версии Debian, например такой, var.tar.gz, и поместите его в корневой каталог сломанной системы. Далее:
# cd / # mv var var-old # если все же что-то полезное осталось # tar xvzf var.tar.gz # используйте скелет от Woody # aptitude # или dselect
Это должно воссоздать рабочую систему. Вы можете облегчить восстановление информации о выбранных пакетах, используя прием из раздела Восстановление информации о выбранных пакетах, раздел 6.3.4. ([FIXME]: This procedure needs more experiments to verify.)
Если чтение всей документации разработчиков
Если чтение всей документации разработчиков слишком утомительно для Вас, то сначала прочтите эту главу и потом наслаждайтесь всей мощью системы Debian, используя дистрибутивы testing/unstable :-).
Запись/копирование конфигурации системы
Для создания локальной копии списка состояния выбранных пакетов сделайте:
$ dpkg --get-selections "*" >мои_выбранные_пакеты # или используйте \* вместо *
Использование "*" приводит к помещению в файл мои_выбранные_пакеты записей о пакетах, подлежащие удалению ("purge").
Вы можете перенести этот файл на другой компьютер и установить по нему системы:
# dselect update # dpkg --set-selections <мои_выбранные_пакеты
# apt-get -u dselect-upgrade # или dselect install