Немного оффтопика, почитал тут ветку для начинающих и подумал...
Хотя текста меньше чем в Онегине, да и я не Пушкин...
Код: Выделить всё
Эпиграф от одного пенсионера:
У нас в летном училище висел плакат
"Отличный пилот это тот, кто кто использует отличное мышление,
избегая ситуаций когда требуется отличное умение"
Как он прав, даже в нашей области...
Вообще подумал и понял, что новичкам окунаться в наш мир непросто.
И сам такой-же, есть и остаюсь (всего знать невозможно).
Хоть сейчас и Интернет на каждой кухне.
А количество информации в нем, ну море, и ошибочной или устаревшей тоже.
И как разобраться "что делать"?
Да еще и не всегда возможно перескочить с платформы на платформу сходу.
Приходится обновляться сначала на промежуточный вариант.
Т.е. возникают этапы.
Да и с этим Unknown modifier 't'
Тоже так-же.
После некоторого общения с системами пришлось выработать для себя некоторые правила.
Теперь мы помним, что у нас во freebsd поменялась архитектура обновлений в 2014 году.
Прежде чем выполнять сначала вдумчиво читаем до конца.
Вообще это полезно, читать. А до конца - вдвойне вкусней.
Если что-то неясно легче поискать пока еще все работает.
Исходная дока для джедаев:
ee /usr/src/Makefile
где после 70-ой строки есть текст:
# 1. `cd /usr/src' (or to the directory containing your source tree).
# 2. `make buildworld'
# 3. `make buildkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC).
# 4. `make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC).
# [steps 3. & 4. can be combined by using the "kernel" target]
# 5. `reboot' (in single user mode: boot -s from the loader prompt).
# 6. `mergemaster -p'
# 7. `make installworld'
# 8. `mergemaster' (you may wish to use -i, along with -U or -F).
# 9. `make delete-old'
# 10. `reboot'
# 11. `make delete-old-libs' (in case no 3rd party program uses them anymore)
Это хорошо делать на "столе" или в виртуалке, или в курилке рассказывать как все круто.
Но у нас есть некая рабочая система, и нам надо как-то ее подтянуть.
Да еще чтоб работала потом годами.
Вообще мой путь (он скорее самурайский и точно знаю - не всем по вкусу, но мне время дороже) примерно такой:
Перво наперво проверяем:
sysctl kern.securelevel
kern.securelevel: -1
Если -1, то переходим к "Чистим obj".
Если отличается идем в
ee /etc/rc.conf
Комментарим его, вот блин админ умный попался.
ЭТОТ ПАРАМЕТР В СИСТЕМЕ ПРИМЕНИТЬСЯ ТОЛЬКО ПРИ ПЕРЕЗАГРУЗКЕ.
Обычно все просто, но если это так , то лучше сразу посмотреть еще и файл
ee /etc/fstab
ЕСЛИ ТАМ ЕСТЬ ТАКАЯ СТРОКА:
/dev/ad4s1e /tmp ufs rw 2 2
Т.е. ищем /tmp и смотрим тип rw.
Если строки нет, то не паримся, если есть и там написано другое (не rw), правим сохраняем.
Делаем df -H
Смотрим на "Mounted on" где есть рут, т.е. палочка "/"
Смотрим сколько места свободно в ней по "Avail" (ну или по "Capacity" в процентах).
Если 150 метров, то может и не хватить.
Что делать?
Посмотреть два каталога
ls -aGl /root (l - маленькая англ. "л") - если есть что-то крупное, временно перенести в каталог пользователя.
ls -aGl /boot - если есть каталоги kernel.old, kernel.old2 или что-то подобное, поступаем так-же.
Как размер посмотреть?
ls -aGl /boot/kernel.old | head -n 1
total 231284
если посмотреть ee /root/.cshrc
setenv BLOCKSIZE K
То становится понятным, что число 231284 это 231284К или 231М
Место почистили, далее...
ТЕПЕРЬ ПЕРЕЗАГРУЖАЕМСЯ.
Продолжаем
Чистим /usr/obj
cd /usr/obj
chflags -R noschg *
rm -rf *
ls должен показать 0
cd /usr/src
make cleandir # хендбук рекомендует выполнять эту команду дважды (!)
make cleandir # хендбук рекомендует выполнять эту команду дважды (!)
Прочитаем ниже текст поста если хотим сохранить конфиг ядра.
грохаем все в /usr/src
cd /usr/src
rm -r *
rm -r .svn
ls должен показать 0
svn co svn://svn.freebsd.org/base/stable/9 /usr/src
or
svn co svn://svn.freebsd.org/base/stable/10 /usr/src
Соль перец по вкусу...
Если хотим что-то другое, то идем через браузер на http://svn.freebsd.org/
далее "SVN ViewVC browser"
далее "base"
И выбираем что хочется.
Для releng просто помним что его надо накатывать на уже установленный release, тогда не будет сюрпризов.
Соответственно поправляем
svn co svn://svn.freebsd.org/base/stable/9 /usr/src
как хотим.
svn co svn://svn.freebsd.org/base/stable/10 /usr/src
Когда закончится svn:
Если ядер 4 и больше задач на ближайшие часы нет,
то запускаем компиляцию на всех ядрах (ключ -jX - X число количества потоков, но мы учимся и лучше пока не
использовать,
-s - меньше информации для вывода на консоль)
cd /usr/src/
make -s buildworld
Будет долго
make -s buildkernel
Будет быстрее чем предыдущий пункт
make installkernel
При обновлении платформы (например с 9.1 до 10.1) кернел собираем БЕЗ конфига!
Просто поверьте, не тратьте время (выполнять с конфигом конечно можно, но исправлять в пригодное состояние
бывает дольше в несколько раз, просто помним об этом).
shutdown -r now
(опять-же мой путь, ладно не буду больше повторяться)
Идем ножками к серверу.
При загрузке нужно выбрать не первый пункт, а по-моему 3 в девятке (блин не помню)
Просто посмотреть глазами, пункт где есть "режим консоли" (фраза моя, т.е. не из классики).
Т.е. просто включаем голову и смотрим по смыслу.
А смысл есть во многих вещах.
Дело в том, что меню при загрузке несколько раз поменялось.
Как определить что мы в правильный пункт меню попали?
Первый - не наш на этом этапе всегда.
Второй - или все с ACPI тоже.
Последний - перезагрузка тоже.
Из оставшихся пробуем проверить так:
нажали циферку (допустим 4) смотрим на загрузку.
Если сервер грузится и пробежали настройки сетевых интерфейсов, то - не угадали.
Рестарт, пробуем другой пункт.
Наш нужный пункт будет тот, который дал значек #
т.е. возможность работать в коммандной строке.
Отступление. Если система настроена правильно, то вход к этой строке будет тоже через рутовый пароль.
Если пароль не верен, то энтера система загрузится дальше как ни в чем небывало, но не в том режиме, что нам
нужен.
Ввели правильный пароль, гуд.
Появится строка про чего-то там (типа /bin/sh), просто энтер.
У себя в инструкции я написал так:
#***********************************************************************
# Boot mode select
#
#Press 4 key for FreeBSD 8
#Press 6 key, 1 key for FreeBSD 9
#Press 6 key, 1 key for FreeBSD 10
#pass (вводим пароль рута)
#***********************************************************************
Хорошо что дальше?
Ну мы знаем? Что файловая система у нас вообще в порядке?
Вообще мы этим должны были гораздо раньше озаботиться.
fsck -fy
Бывает надо так (особенно на старых релизах, а там еще и клавиши привычные не работают):
/sbin/fsck -fy
Вернемся к нашим вопросам.
mount -u /
mount -a
бывает
/sbin/mount -u /
/sbin/mount -a
swapon -a
бывает
/sbin/swapon -a
теперь делаем su
Пароля не должно спросить.
Но заработает наше окружение.
cd /usr/src
mergemaster -p (кажется он чего-то спрашивает, не помню зараза, пальцы уже автоматом делают, вроде просто
соглашаемся, типа два каких-то момента, вроде про master.passwd и еще чего-то). Когда закончит:
make installworld
make delete-old (рекомендовано по хенд-буку, но иногда сильно мешает, именно при переходах с версии на версию,
вообще вопрос дисскуссионен 50|50)
У себя в инструкции я написал себе так:
#***********************************************************************
# ЭТО ОЧЕНЬ ВАЖНЫЙ МОМЕНТ !!!
---make delete-old--- НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
---make delete-old-libs--- НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
#***********************************************************************
ОБЯЗАТЕЛЬНАЯ процедура ПОСЛЕ установки мира
mergemaster (теперь без параметров, вручную и долго).
Авто замену на мой самурайский взгляд лучше не делать...
На авто замену можно согласиться, только если имеем копию всех конфигов
и они желательно на другой машинке (так Вам быстрее будет).
Важно понимать, что конфиги - это не только файлы с окончанием .conf
Но как объяснить на ЧТО смотреть в mergemaster'e если делаем сами и хотим контролировать?
Предупреждаю сразу, я перед этой процедурой иду сначала подышать свежим воздухом,
она не для слабонервных и самая долго-нудная.
Т.к. на каждый системный файл будет задаваться вопрос, а что с ним сделать?
mergemaster
Цитирую откуда-то из Интернет:
Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с теми которые
предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом. Первой
строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком "-"
помечаются строки, которые утилита собирается удалить, а "+" - которые будут добавлены.
В конце предлагаются следующие варианты:
d - удалить предлагаемый вариант и оставить старый;
i - установить предлагаемый вариант, удалив старый;
m - сравнить построчно старый и предлагаемый вариант;
v - посмотреть отличия в файлах снова.
Чаще всего можно жать i, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте
внимательны. Например, у меня установлен exim, а mergemaster предложил вернуть файл /etc/mail/mailer.conf в
первоначальное состояние. Это мне не нужно, поэтому выбираю m.
Начинается построчное сравнение файлов. Экран делится на две части, слева строки из старого файла, а справа из
предлагаемого. При нажатии на "Enter" выводятся возможные варианты последующих действий:
l - использовать вариант слевой стороны;
r - использовать вариант справой стороны;
и т.д.
В моем случае, чтобы оставить старые настройки жмем "l". После того как сравнение кончилось, предлагаются
следующие варианты:
i - установить получившийся файл;
r - повторить сравнение снова;
v - просмотреть получивщийся файл.
Возможен также вариант, когда с новой версией системы появляются новые файлы, которых до этого не было. В
таком случае предлагается только 2 варианта:
d - удалить предлагаемый вариант и оставить старый;
i - установить предлагаемый вариант, удалив старый.
И в таком же духе сравниваются все файлы.
Конец цитаты
ВАЖНО НЕ ЗАПУТАТЬСЯ КАК РАБОТАЮТ ЭТИ БУКОВКИ!
Логика, как-бы наоборот, программа танцует ОТ НОВОЙ версии, а не от того, что установлено в системе.
Поэтому d (клавиша буквы "d") удаляет НОВЫЙ вариант, т.е. старый остнется неизменным.
Поэтому i (клавиша буквы "i") установит новый вариант.
Поэтому v (клавиша буквы "v") перечитает файл сначала.
PageUP PageDOWN переход по тексту вверх, вниз.
Пока не дошел до самого низа, не даст выбора.
Самый длинный попадавшийся в ручном режиме это файл сертификатов (кстати о них отдельный разговор).
Там надо раз 50 наверное PageDOWN жать.
Либо сразу END, т.е. переход в конец.
Я тут придерживаюсь такого порядка:
Практически на все я жму END, глаза уперты в одну точку где путь к файлу и его имя, потом i .
Такие пути как /etc/mtree там и глазеть нечего (END,i,END,i,END,i,END,i ...)
ВСЕГДА ОБРАЩАЮ ВНИМАНИЕ НА КЛЮЧЕВЫЕ ФАЙЛЫ!
Например в моем случае:
/etc/ntp.conf
/etc/auth.conf
/etc/login.conf (написать про cap_mkdb /etc/login.conf)
/etc/syslog.conf
/etc/newsyslog.conf
/etc/group
/etc/master.passwd
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/mail/freebsd.mc (у меня вся почта на сендмайле, поэтому ВСЕГДА есть бекап этого файла, изменения я вношу
именно в него апосля и построчно, что не есть правильно, но мне так удобнее. ДЛЯ других почтовых систем не знаю,
лучше выяснить это до обновления).
/etc/mail/access
/etc/mail/aliases
/root/.cshrc
При обновлении других папок, /bin /sbin и т.д. тоже END,i,END,i,END,i,END,i ...
НЕ БОИМСЯ ЕСЛИ ПРОПУСТИМ ФАЙЛ!
Хрен с ним.
Лучше тогда повторно запустить mergemaster и пробежать все снова.
При этом уже обновленные файлы автоматом пропустятся (ну где в хенд-буке это написано?).
Т.е. получится быстрее.
В конце будет еще два вопроса, тоже блин подзабыл, вроде надо положительно ответить.
Но естественно смотреть, а чего это он от меня хочет.
Система в режиме обновления развернута к Вам самым нежным местом
и полностью доверяет Вашим желаниям и хотелкам.
И убить ее запросто можно.
Итогом должна стать опять коммандная строка.
#
Ну что? Получили?
reboot
Грузимся теперь как обычно (не вмешиваясь), смотрим ошибочки.
Когда загрузится, можно на клаве нажать ScrollLock и полистать весь листинг загрузки.
PageUP PageDOWN соответственно вверх, вниз.
Потом не забываем выключить взад ScrollLock
Дальше входим в систему, читаем
ee /var/log/messages на предмет свежих ошибок.
Ошибки найдены, устранены,
если какие-то порты в /etc/rc.conf есть, то лучше их остановить, закоментировать.
Сначала вычитываем, останавливаем, комментируем.
Если есть какой-то тяжелый типа hylafax то его стопорнуть и перегрузиться.
Теперь можно порты апгрейдить.
Когда мы обновили мир, многие порты "отваливаются".
Некоторые вообще исчезли как класс, некоторые включены прямо в ядро и поэтому их тоже небудет в списке портов.
Для начала запоминаем - ПЕРВОНАЧАЛЬНО НИЧЕГО НЕ ДЕИНСТАЛЛИРУЕМ!
Пример проблемы при обновлении:
не собираются порты из-за ошибки неизвестного архиватора.
===> Found saved configuration for python26-2.6.8_4
===> Fetching all distfiles required by python26-2.6.8_5 for building
===> Extracting for python26-2.6.8_5
=> SHA256 Checksum OK for python/Python-2.6.8.tar.xz.
===> python26-2.6.8_5 depends on file: /usr/local/bin/xz - found
tar: Unrecognized archive format: Inappropriate file type or format
tar: Error exit delayed from previous errors.
*** Error code 1
Stop in /usr/ports/lang/python26.
*** Error code 1
Решение:
находим spawn.h (где угодно на серверах или в Интернете, FBSD8,FBSD9,SVN,reposit etc.)
размещаем в /usr/include
cp spawn.h /usr/include
cd /usr/ports/archivers/libarchive && make install clean
ln -sf /usr/local/bin/bsdtar /usr/bin/tar
ln -sf /usr/local/bin/bsdtar /usr/bin/bsdtar
rehash
ee /usr/local/etc/pkgtools.conf
HOLD_PKGS = [
'bsdpan-*',
'squid-3.1.*',
]
вообще в нем всего 118 строк:
ee /usr/include/spawn.h
/*-
* Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD: release/9.1.0/include/spawn.h 179873 2008-06-19 07:30:32Z ed $
*/
#ifndef _SPAWN_H_
#define _SPAWN_H_
#include <sys/cdefs.h>
#include <sys/_types.h>
#include <sys/_sigset.h>
#ifndef _MODE_T_DECLARED
typedef __mode_t mode_t;
#define _MODE_T_DECLARED
#endif
#ifndef _PID_T_DECLARED
typedef __pid_t pid_t;
#define _PID_T_DECLARED
#endif
#ifndef _SIGSET_T_DECLARED
#define _SIGSET_T_DECLARED
typedef __sigset_t sigset_t;
#endif
struct sched_param;
typedef struct __posix_spawnattr *posix_spawnattr_t;
typedef struct __posix_spawn_file_actions *posix_spawn_file_actions_t;
#define POSIX_SPAWN_RESETIDS 0x01
#define POSIX_SPAWN_SETPGROUP 0x02
#define POSIX_SPAWN_SETSCHEDPARAM 0x04
#define POSIX_SPAWN_SETSCHEDULER 0x08
#define POSIX_SPAWN_SETSIGDEF 0x10
#define POSIX_SPAWN_SETSIGMASK 0x20
__BEGIN_DECLS
/*
* Spawn routines
*
* XXX both arrays should be __restrict, but this does not work when GCC
* is invoked with -std=c99.
*/
int posix_spawn(pid_t * __restrict, const char * __restrict,
const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
char * const [], char * const []);
int posix_spawnp(pid_t * __restrict, const char * __restrict,
const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
char * const [], char * const []);
/*
* File descriptor actions
*/
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t * __restrict,
int, const char * __restrict, int, mode_t);
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
/*
* Spawn attributes
*/
int posix_spawnattr_init(posix_spawnattr_t *);
int posix_spawnattr_destroy(posix_spawnattr_t *);
int posix_spawnattr_getflags(const posix_spawnattr_t * __restrict,
short * __restrict);
int posix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict,
pid_t * __restrict);
int posix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict,
struct sched_param * __restrict);
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict,
int * __restrict);
int posix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict,
sigset_t * __restrict);
int posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict,
sigset_t * __restrict sigmask);
int posix_spawnattr_setflags(posix_spawnattr_t *, short);
int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
int posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict,
const struct sched_param * __restrict);
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict,
const sigset_t * __restrict);
int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict,
const sigset_t * __restrict);
__END_DECLS
#endif /* !_SPAWN_H_ */
Если у нас нет диска, но есть Интернет, то все нужное можно взять отсюда:
# cd /tmp
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/doc.txz
# наш минимум исходники (сорцы, sources) и база портов (это не сами порты, но вся необходимая нам структура
каталога /usr/ports)
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/src.txz
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/ports.txz
#
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/10.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.3-RELEASE/base.txz
Для других версий аналогично, предварительно можно взять фар настроить фтп в нем и погулять по каталогам.
Если фара нет, используем встроенный ftp
ftp ftp.freebsd.org 21
Name (ftp.freebsd.org:ИмяЗаменим):anonymous
Password:123@ - по факту любой, но заканчивается на @
Дальше ls и cd
ls ентер
-rw-r--r-- 1 ftp ftp 5430 Jul 19 2014 favicon.ico
-rw-r--r-- 1 ftp ftp 660 Nov 02 07:14 index.html
drwxr-xr-x 3 ftp ftp 3 Jul 19 2014 pub
cd pub
и т.д.
пока не доберемся до нужного пути (соблюдать размер букв).
Если работаем в терминале putty, то вставляем "cd /pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE".
Правой клавишей мыши, просто клик (ну ясен перец, что перед этим надо было Ctrl+C сделать на этом тексте).
Когда добрались и видим нужный нам файл, меняем путь КУДА это скачивать
lcd /tmp
Выставляем режим
binary ентер
И делаем
get src.txz
get ports.txz
Когда скачается, выйти так
quit
# cd /tmp
# tar zxvf base.txz
fetch ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
Или с дистрибутивного диска по пути
D:\USR\FREEBSD_DIST
файлы взять и скопировать любым доступным способом в /tmp
base.txz
doc.txz
games.txz
kernel.txz
manifest
ports.txz
src.txz
# tar zxvf src.txz
ЕСЛИ НЕРАСПАКОВЫВАЕТСЯ, а мы уверены что файл скачался весь и без ошибок (как это проверить ниже)
Значит лучше файл перенести на обычный комп открыть его в 7-zip и выдернуть вложенный src.tar
Этот самый тар вернуть назад на сервер в /tmp
# tar xvf src.tar
Хоть через сетку, хоть черз диск, хоть через флешку.
Кстати, о диске...
Для новичков будет сюрпризом, после перезагрузки со ВСТАВЛЕННЫМ диском, кнопочка ject на сервере не работает.
А почему?
ls /dev/cd*
crw-r----- 1 root operator 0x96 10 фев 09:19 /dev/cd0
mount /dev/cd0 /mnt/cd
mount -t cd9660 /dev/cd0 /mnt/cd
umount /mnt/cd
Теперь диск выплюнется по кнопочке.
И кстати, о флешке...
Как-же с ней работать в нашей системе?
Для начала простой вариант, флешка на FAT32, так будет проще.
Когда мы вставили ее в сервер, по экрану чего-то там пробежало и все, чего дальше-то?
Все просто ее надо примаунтить.
На экране в пробежавших строчках смотрим на их начало, будет что-то вроде
da0: ... чего-то там далее (но может быть и другое da1 или еще что-то)
Нам важно, ЧТО мы увидели в начале строки до двоеточия.
Теперь смотрим, как увидела система.
ls /dev/d*
crw-r----- 1 root operator 0xc1 11 фев 19:57 /dev/da0
crw-r----- 1 root operator 0xc9 11 фев 19:57 /dev/da0s1
О, замечательно!
Наша флешка определилась (если не определилась отдельный разговор) и видит раздел.
Это da0s1 (для этого примера) и на него опираемся.
Для монтирования есть классический каталог /mnt , но это не принципиально, он может быть любой.
mount_msdosfs -L ru_RU.KOI8-R -D CP866 /dev/da0s1 /mnt
Я например для себя сделал несколько каталогов в нем
mkdir /mnt/flash1
mkdir /mnt/flash2
mkdir /mnt/flash3
mount_msdosfs -L ru_RU.KOI8-R -D CP866 /dev/da0s1 /mnt/flash1
Мы-же хотим иногда русские имена файлов видеть?
Для этого параметры -L ru_RU.KOI8-R -D CP866
-L считай в локали, т.е. как в сервере, -D считай как на носителе, т.е. на флешке.
Теперь флешка будет доступна, так посмотрим на нее
ls /mnt/flash1
ls /mnt/flash
total 709812
drwxr-xr-x 1 root wheel 4096 14 дек 16:33 .Spotlight-V100
drwxr-xr-x 1 root wheel 4096 14 дек 07:29 FTP
drwxr-xr-x 1 root wheel 4096 7 янв 04:13 Squid
НЕ ЗАБЫВАЕМ, ЧТО ФЛЕШКУ НЕ НАДО ВЫДЕРГИВАТЬ!!!
Сначала ее надо отмаунтить.
umount /mnt
или для меня
umount /mnt/flash1
Если отмаунтилась, можно выдергивать, если нет, то смотрим какие файлы открывали, м.б. что-то держит.
Мы-же можем из нескольких окон с ней работать...
Итак все закрыли, все в порядке umount /mnt , ТЕПЕРЬ ВЫДЕРГИВАЕМ.
Если совсем никак не получается, то если это не было изменено при сборке ядра
и если нам позволяет ситуация - просто перегружаем сервер.
Дело в том, что простая комбинация Ctrl+Alt+Del позволяет его безобидно перезагрузиться.
(Это кстати иногда позволяет сделать перезагрузку кому-то со стороны без пароля)
Соответственно при перезагрузке, пока биос светится, выдергиваем флешку.
А еще вспомнилась такая история , совсем банальная:
Устанавливаю, на СТАРЫЙ, исправно работавший много лет (буквально накануне под Виндовз) компутер, любимую
систему. Перезагружаюсь, а на экране абракадабра и даже не грузится, т.е. (кажется) до первого окна не доходит
(подзабыл уже).
Ну ни в какую. Ставлю виндовз, все нормально, грузится. Вот блин.
Опять ставлю любимую, перезагрузка, абракадабра.
Ну как так может быть?
Много кофе перепил, пока пришла мысль, а что там с биосом?
Полез на сайт производителя материской платы, нашел обновку биоса.
Перепрошил. Вуаля!
Сервак только, что посылавший меня далеко и надолго, загрузился и нормально заработал.
Как такие фокусы объяснить новичку?
А еще железки бывают такие старые, что даже с флешки не грузятся!
Пришлось найти переносной USB-дискетник v.1.2, да еще чтобы виделся на любом железе.
Т.к. можно попасть на такой, что будет видеться через раз.
А бывает железо такое старое, что у него даже USB нет.
Но есть ком-порт, как объяснить, что через него можно сделать все?
Что вообще-то, только так раньше и делали. Да и вообще сетей небыло.
И только благодаря юниксу они появились...
Однако ПОКА мы учимся у нас всегда есть вопросы которые мы пока не знаем, т.к. еще учимся...
Перед обновлением старой или еще неизвестной нам системы смотрим:
1. uname -a
FreeBSD teo.чего-то-там.loc 10.2-RELEASE-p12 FreeBSD 10.2-RELEASE-p12 #0: Fri Feb 5 21:58:32 MSK 2016
usr@teo.чего-то-там.loc:/usr/obj/usr/src/sys/TEO amd64
Из нее мы видим и чирикаем в блокнот (если из putty работаем) три момента:
а) версию - 10.2-RELEASE-p12
б) конфиг - /usr/obj/usr/src/sys/TEO
в) платформу - amd64
г) интернет есть и работает
д) сохранить в сторонку старые конфиги
/etc/fstab
/etc/rc.conf
/etc/ntp.conf
/etc/auth.conf
/etc/login.conf (написать про cap_mkdb /etc/login.conf)
/etc/syslog.conf
/etc/newsyslog.conf
/etc/group
/etc/master.passwd
/etc/sysctl.conf (ЕСЛИ ЕСТЬ)
/etc/firewall.conf (ИЛИ его аналог, посмотреть можно в /etc/rc.conf там обычно пишется)
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/mail/* (лучше все, потом можно с этим разобраться)
/root/.cshrc
/boot/loader.conf (ЕСЛИ ЕСТЬ)
/boot/zfs/zpool.cache (ЕСЛИ ЕСТЬ)
Затарить в сторонку весь /usr/local/etc
tar -czf archive-usr-local-etc-2016-02-11.tgz.gz /usr/local/etc/*
Вообще я написал себе отдельный скрипт (исходя из того софта, что у меня установлено)
который это все собирает и складывает в сторонку.
В подпункте "а" мы узнаем текущую установленную версию, записываем.
В подпункте "б" либо будет написано GENERIC либо что-то другое, записываем.
В подпункте "в" либо будет написано i386 либо amd64, либо что-то другое, записываем.
Нам этого достаточно. Далее в примерах я буду опираться на эти данные.
И вообще поразумевается что с файловой системой все в порядке (в монпольном режиме из консоли fsck -fy )
2. Если GENERIC или /usr/src/ вообще пуст (бывает и такое) пропускаем п.3
3. Исходя из полученной информации мы уже можем построить план как мы будем начинать обновляться,
т.е. ЕСЛИ не GENERIC, посмотрим есть-ли конфиг? Для приведенного выше случая это надо посмотреть так:
ls /usr/src/sys/amd64/conf
Если НЕ GENERIC, то копируем в каккую-то свою локальную папку:
cp /usr/src/sys/amd64/conf /usr/home/vasya/conf-2016-02-11-1
Которую предварительно создаем:
mkdir /usr/home/vasya/conf-2016-02-11-1
4. Если GENERIC, можно применить
freebsd-update fetch && freebsd-update install && reboot
Должно хватить, но может потянуть проблемы.
5. Поэтому просто приведу инструкцию, пример как я обновлялся:
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
kern.conftxt - позволяет посмотреть содержимое файла конфигурации для
текущей сборки ядра;
Обновление версии релиза FreeBSD
Версия до момента обновления была 7.4-STABLE после 8.4-STABLE
uname -a
FreeBSD wind.что-то-там.loc 7.4-STABLE FreeBSD 7.4-STABLE #0 r253391: Tue Jul 16 20:23:14 GMT-4 2013
usr@wind.что-то-там.loc:/usr/obj/usr/src/sys/WIND i386
Поехали:
Там где я поставил три минуса - не делаем, переходим к следующему шагу.
1. Сохраняем старые конфиги, если нужно что-то еще определяем сами и сохраняем в отдельное место тоже.
cd /usr/home/${user}/auto
sh prepare.sh
---cp /usr/src/sys/i386/conf/MYKERNEL /usr/home/${user}/MYKERNEL-2013-07-18
---uname -a > /usr/home/${user}/MYKERNEL-vers-old.txt
---uname -a > /usr/home/${user}/`uname -i`-vers-old-`date +%Y-%m-%d_%H-%M-%S`.txt
uname -a > /usr/home/${user}/`uname -i`-`uname -m`-vers-old-`date +%Y-%m-%d_%H-%M-%S`.txt
cp /usr/src/sys/`uname -m`/conf/`uname -i` /usr/home/${user}/`uname -i`-`uname -m`-vers-old-`date
+%Y-%m-%d_%H-%M-%S`.txt
ls /usr/src/sys/`uname -m`/conf
2. Удаляем ВСЕ старые сорцы
cd /usr/obj && chflags -R noschg *
cd /usr/obj && chflags -R noschg *
rm -rf * && ls
cd /usr/src && make cleandir
cd /usr/src && make cleandir
Да, команду make cleandir действительно нужно выполнять дважды.
cd /usr/src && ls
rm -r /usr/src/* && ls
Если есть каталог .svn , удаляем его...
rm -r /usr/src/.svn
3. Скачиваем с svn исходники 8.4 ветки
Да, да уже так и только так, про csup нужно забыть, хотя он в системе есть и работает.
Важно понимать и помнить про csup:
а) разработчики все переориентированы на кодинг под svn
б) совместное использование svn и csup ведет к коллизиям кода, т.е. несоберется ничего (либо будет кривое).
Качаем (наш выбор на ветке stable):
---svn co svn://svn.freebsd.org/base/stable/8/ /usr/src
svn co svn://svn.freebsd.org/base/stable/8/ /usr/src
svn: Command not found.
ЕСЛИ ОШИБКА на SVN, то поищем его:
pkg_version -v|grep subversion
итак порта нет в системе...
Обновляем файлы портов
portsnap fetch
portsnap update (в первый раз сделать portsnap extract, в последующие update)
Ставим порт subversion
cd /usr/ports/devel/subversion && make config
ниже показаны только использованные ключи
make config
[x] BDB (м.б. не ставить тогда и sqlite не потянет за собой??)
[x] DOCS
[x] FREEBSD_TEMPLATE
[x] NLS
[x] P4_STYLE_MARKERS
[-] SERF (???веб админка, в топку)
[x] STATIC
make install
Потянул sqlite 3.7.17_1
[x] EXTENSION
[x] FTS3
[x] METADATA
[x] SECURE_DELETE
[x] THREADSAFE
[x] UNLOCK_NOTIFY
[x] URI
Потянул arp-1.4.8.1.5.2
[x] THREADS
[x] IPV6
[x] DEVRANDOM
[x] BDB
[x] GDBM
[x] SSL
Потянул gdbm-1.10
[x] NLS
rehash && pkg_version -v|grep subversion
subversion-1.8.0_2 = up-to-date with port
проверим на всякий случай секцию HOLD_PKGS в
ee /usr/local/etc/pkgtools.conf
---или
---cat /usr/local/etc/pkgtools.conf
ПРОДОЛЖАЕМ:
cd /usr/src && svn co svn://svn.freebsd.org/base/stable/8/ /usr/src
Проверить загруженную версию можно здесь:
ee /usr/src/sys/conf/newvers.sh
или
head -n 42 /usr/src/sys/conf/newvers.sh
или
---head -n 42 /usr/src/sys/conf/newvers.sh | grep REVISION=&&head -n 42 /usr/src/sys/conf/newvers.sh | grep BRANCH=
head -n 42 /usr/src/sys/conf/newvers.sh | grep REVISION=\" && head -n 42 /usr/src/sys/conf/newvers.sh | grep BRANCH=\"
REVISION="8.4"
BRANCH="STABLE"
###########################################################
# УБЕДИЛИСЬ что старый конфиг сохранен куда-нибудь... #
###########################################################
ls /usr/home/${user}/`uname -i`*.txt
4. Собираем мир
cd /usr/src
make buildworld
5. Настраиваем !ЗАНОВО! конфигурационный файл ядра
Т.к. старый конфиг будет давать кучу ошибок,
поэтому сохраняем генерик с новым именем.
Копируем GENERIC в MYKERNEL и его правим под те опции, что были в старом:
---cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/MYKERNEL
---cp /usr/src/sys/`uname -m`/conf/`uname -i` /usr/src/sys/`uname -m`/conf/`uname -i`-`uname -m`-vers-old-`date
+%Y-%m-%d_%H-%M-%S`
ls /usr/src/sys/`uname -m`/conf/
cp /usr/src/sys/`uname -m`/conf/GENERIC /usr/src/sys/`uname -m`/conf/`uname -i`
ls /usr/src/sys/`uname -m`/conf/
Сверяем со старым и редактируем:
ee /usr/src/sys/`uname -m`/conf/`uname -i`
открываем во второй сессии:
ls /usr/home/${user}/`uname -i`*
ee /usr/home/${user}/MYKERNEL-i386-vers-old-2013-07-18_..-..-..
ЕЩЕ РАЗ перепроверяем внесенные изменения.
И ЕЩЕ РАЗ перепроверяем внесенные изменения.
6. Собираем наше ядро
---make buildkernel KERNCONF=MYKERNEL
make buildkernel KERNCONF=`uname -i`
Дождались окончания сборки.
=================================================================
Здесь момент для паузы, т.к. хотим это делать руками
и необязательно сегодня.
Но все таки отправим себе напоминалку, чтоб не забыть о собранном мире и ядре.
Ясен перец что ниже это одна строка.
echo "Напоминаю, что make buildworld и make buildkernel KERNCONF=`uname -i` сервера `/bin/hostname` собраны\!\!\! И
ждут инсталяции из single-mode!"| mail -s "ALERT ready to install WORLD on $USER@`/bin/hostname`" $user
=================================================================
В день когда мы принимаем решение все ставить, продолжаем так:
7. Устанавливаем наше новособранное ядро
cd /usr/src
make installkernel KERNCONF=`uname -i`
для случая когда машинка изначально имеет отличающееся имя кернела, то используем необходимое:
make installkernel KERNCONF=MYKERNEL
8. Перезагружаемся в single-mode и если система нормально загрузилась смотрим все ли в порядке.
shutdown -r now
Press 4 key for FreeBSD 8
Press 6 key, 1 key for FreeBSD 9
pass (вводим пароль рута)
/sbin/mount -u /
/sbin/mount -a
/sbin/swapon -a
su
cd /usr/src
9. Подготовка перед установкой мира
mergemaster -p
10. Установка мира
make installworld
#***********************************************************************
# ЭТО ОЧЕНЬ ВАЖНЫЙ МОМЕНТ !!!
---make delete-old--- НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
---make delete-old-libs--- НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
#***********************************************************************
11. Обязательная процедура после установки мира
mergemaster (вручную и долго). Авто замену лучше не делать...
12. Перезагружаем систему и надеемся что все будет хорошо
reboot
13. После удачной загрузки пересобираем порты
===================================================================
Задача обновить порты.
-portupgrade не работает - гад!
-и сам не пересобирается.
-P.S. применил FORCE_PKG_REGISTER=YES для пересборки портов
-P.S. env FORCE_PKG_REGISTER=YES portupgrade -afrR
-/usr/sbin/pkg_info -Ea
-=====================
-Указано в последовательности сверху вниз.
-По мере возникновения ошибок.
-Спустился до последнего (libiconv).
-И пошел в обратную сторону - снизу вверх.
-Методом:
-make clean && make install FORCE_PKG_REGISTER=YES
-Все поставилось!
-Окончательная пересборка портов:
-cd /usr/src
-env FORCE_PKG_REGISTER=YES portupgrade -afrR
-=====================
uname -a
FreeBSD wind.что-то-там.loc 8.4-STABLE FreeBSD 8.4-STABLE #0 r253450: Fri Jul 19 10:15:11 MSK 2013
usr@wind.что-то-там.loc:/usr/obj/usr/src/sys/WIND i386
cd /usr/ports
---svn co svn://svn.FreeBSD.org/ports/head /usr/ports
---svn update
---ЕСЛИ выдало что-то вроде:
--->Checked out revision 323340.
--->Tree conflict on 'Keywords'
---> > local dir unversioned, incoming dir add upon update
--->Select: (p) postpone, (r) resolved, (q) quit resolution, (h) help: q
---то делаем как написано строкой ниже.
---ПРИ ПОВТОРНОМ обновлении может потребоваться грохнуть
---/usr/src/.svn (мир, система) или соответственно /usr/ports/.svn (порты)
---В этой папке хранится база обновления.
cd /usr/ports
rm -r /usr/ports/*
ls /usr/ports
rm -r .svn
rm .portsnap.INDEX
ls /usr/ports
total 0 - должен быть ноль!!!
Если не 0 , то удаляем что там еще осталось...
И все качаем заново.
svn co svn://svn.FreeBSD.org/ports/head /usr/ports
svn update
---Пока не выяснил насколько это смертельно для системы...
---Вроде все хорошо с системой...
!!!ПЕРЕСОБИРАЕМ ВСЕ ПОРТЫ в новой системе!!!
!Но первым пересоберем сам portupgrade!
cd /usr/ports/ports-mgmt/portupgrade
make deinstall
---make config (там в нем всего одна позиция про документацию)
make reinstall
rehash
Теперь пересоберем все остальное:
############## ############## ############## ##############
НО! Обнаружен трабл, сначала нужно грохнуть порт xz...
>$ cat /usr/ports/archivers/xz/Makefile или
>$ cat /usr/ports/archivers/xz/Makefile|grep DEPRECATED
>DEPRECATED= Available in base distribution for all supported releases
>$ cd /usr/ports/archivers/xz/
>$ make deinstall
Т.к. из-за него не пересобираются:
lang/php5б, textproc/libxslt, devel/p5-Locale-gettext и м.б. что-то еще.
А сам порт xz ныне уже deprecated, т.к. встроен в систему 8.4!!!
Решение проблемы:
cd /usr/ports/archivers/xz
make deinstall
############## ############## ############## ##############
На одной машине нужно было перед всем этим перл пересобрать...
cd /usr/ports/lang/perl5.14
make deinstall
make deinstall (именно два раза)
make config ( по вкусу)
make reinstall
rehash
############## ############## ############## ##############
cd /usr/ports
env FORCE_PKG_REGISTER=YES portupgrade -afrR
Проверяем базу портов:
pkgdb -F
Фиксим, поправляем, устраняем все проблемы.
Помогает в поиске проблем:
http://www.freebsd.org/cgi/man.cgi?query=pkg_libchk&manpath=ports&sektion=1
cd /usr/ports/sysutils/bsdadminscripts
make install
pkg_libchk
portmaster --check-depends
pkgdb -F
Обновляем базу портов:
pkgdb -u
14. И наконец, после удачной перезагрузки, чистим систему от старых файлов и библиотек
cd /usr/src
make BATCH_DELETE_OLD_FILES=YES delete-old delete-old-libs
ПЕРЕСОБИРАЕМ sendmail
ls /etc/mail/*.sh
cd /etc/mail
sh cl_mail_master.sh (или нечто подобное)
15. И снова перезагружаем систему.
Это чтобы сразу убедиться, что именно перестанет работать после чистки
старых библиотек.
reboot
Проверяем ошибки софта на экране, в логах...
spammasassin и т.д.
racoon2
c-icap
squid
В FreeBSD 8 и последующих версиях именование последовательных портов изменено:
с ttyd0 на ttyu0
Идем в ee /etc/ttys и правим...
А то у нас модем не увидится...
Соответственно поправляем hylafax через:
/usr/local/etc/rc.d/hylafax stop
faxaddmodem
Serial port that modem is connected to []? ttyu0
Ok, time to setup a configuration file for the modem. The manual
page config(5F) may be useful during this process. Also be aware
that at any time you can safely interrupt this procedure.
Reading scheduler config file /var/spool/hylafax/etc/config.
No existing configuration, let's do this from scratch.
Country code [7]?
Area code [812]?
Phone number of fax modem [+1.999.555.1212]? 7.812.333.33.33
Local identification string (for TSI/CIG) ["NothingSetup"]?
Long distance dialing prefix [1]? 9
International dialing prefix [011]? 8
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?
Tracing during normal server operation [1]?
Tracing during send and receive sessions [11]?
Protection mode for received facsimile [0600]?
Protection mode for session logs [0600]?
Protection mode for ttyu0 [0600]?
Rings to wait before answering [1]?
Modem speaker volume [off]?
Command line arguments to getty program ["-h %l dx_%s"]?
Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]?
Pathname of Caller-ID access control list file (relative to /var/spool/hylafax) [""]?
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
Tag line format string ["From %%l|%c|Page %%P of %%T"]?
Time before purging a stale UUCP lock file (secs) [30]?
Hold UUCP lockfile during inbound data calls [Yes]?
Hold UUCP lockfile during inbound voice calls [Yes]?
Percent good lines to accept during copy quality checking [95]? 85
Max consecutive bad lines to accept during copy quality checking [5]? 15
Max number of pages to accept in a received facsimile [25]? 65
Syslog facility name for ServerTracing messages [daemon]?
Set UID to 0 to manipulate CLOCAL [""]?
Use available priority job scheduling mechanism [""]?
Your facsimile phone number (7.812.640.16.47) does not agree with your
country code (7) or area code (812). The number
should be a fully qualified international dialing number of the form:
+7 812 <local phone number>
Spaces, hyphens, and periods can be included for legibility. For example,
+7.812.555.1212
is a possible phone number (using your country and area codes).
The non-default server configuration parameters are:
CountryCode: 7
AreaCode: 812
FAXNumber: 7.812.640.16.47
LongDistancePrefix: 9
InternationalPrefix: 8
DialStringRules: etc/dialrules
SessionTracing: 11
RingsBeforeAnswer: 1
SpeakerVolume: off
GettyArgs: "-h %l dx_%s"
LocalIdentifier: "NothingSetup"
TagLineFont: etc/lutRS18.pcf
TagLineFormat: "From %%l|%c|Page %%P of %%T"
PercentGoodLines: 85
MaxConsecutiveBadLines: 15
MaxRecvPages: 65
Are these ok [yes]? yes
и т.д.
/usr/local/etc/rc.d/hylafax start
но лучше shutdown -r now
16. Система обновленна.
/usr/local/bin/faxmail (USES POSSIBLY INSECURE FUNCTIONS: mktemp)
/usr/local/sbin/faxwatch
/usr/local/bin/sendfax (USES POSSIBLY INSECURE FUNCTIONS: mktemp)
/usr/local/bin/faxstat
============================================================================
При обновлении до Freebsd 9.1 , вы можете столкнуться с такой вот ошибкой. Читаем /usr/src/UPDATING
ERROR: Required auditdistd user is missing, see /usr/src/UPDATING.
*** [installcheck_UGID] Error code 1
Stop in /usr/src.
*** [installkernel] Error code 1
Stop in /usr/src.
[MNIHKLOM] /usr/src#
Решение: добавляем юзера
pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
и снова запускаем make buildkernel KERNCONF=ИМЯ_ЯДРА && make installkernel KERNCONF=ИМЯ_ЯДРА
При выполнении:
# make installkernel
Получаем следующую ошибку:
ERROR: Required auditdistd user is missing, see /usr/src/UPDATING.
*** [installcheck_UGID] Error code 1
Stop in /usr/src.
*** [installkernel] Error code 1
Для устранения ошибки необходимо добавить в систему пользователя auditdistd:
# pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
pw useradd -n hast -g hast -c "HAST unprivileged user" -d /var/empty -s /usr/sbin/nologin
Так выглядит в оригинале:
auditdistd:*:78:77::0:0:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
http://www.freebsd.org/doc/handbook/svn-mirrors.html
Name Protocols Location SSL fingerprint
svn0.us-west.FreeBSD.org svn, http, https USA, California SHA1
1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.us-east.FreeBSD.org svn, http, https, rsync USA, New Jersey SHA1
1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.eu.FreeBSD.org svn, http, https, rsync Europe, UK SHA1
39:B0:53:35:CE:60:C7:BB:00:54:96:96:71:10:94:BB:CE:1C:07:A7
HTTPS is the preferred protocol, providing protection against another computer pretending to be the FreeBSD mirror
(commonly known as a "man in the middle" attack) or otherwise trying to send bad content to the end user.
On the first connection to an HTTPS mirror, the user will be asked to verify the server fingerprint:
Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
- The certificate hostname does not match.
Certificate information:
- Hostname: svnmir.ysv.FreeBSD.org
- Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
- Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
- Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently?Compare the fingerprint shown to those listed in the table above. If the
fingerprint matches, the server security certificate can be accepted temporarily or permanently. A temporary certificate will
expire after a single session with the server, and the verification step will be repeated on the next connection. Accepting the
certificate permanently will store the authentication credentials in ~/.subversion/auth/ and the user will not be asked to verify the
fingerprint again until the certificate expires.
ee /usr/ports/UPDATING
find dbd
20131217:
AFFECTS: users of databases/ruby-bdb or ports-mgmt/portupgrade and databases/db5 or databases/db6
AUTHOR: mandree@FreeBSD.org
databases/db5 and databases/db6 have recently been updated to fix
bugs. This changed their patchlevel version.
However, ruby-bdb used to break during the db[56] upgrade due to a bug
described in <http://www.freebsd.org/cgi/query-pr.cgi?pr=184921>.
THEREFORE, YOU MUST MANUALLY UPGRADE databases/ruby-bdb INDIVIDUALLY
TO 0.6.6_2 OR NEWER WHEN USING portupgrade AGAINST databases/db[56]
PORTS. To achieve that, type:
# portupgrade databases/ruby-bdb
or
# portmaster -x 'db*' databases/ruby-bdb
before proceeding with other upgrades.
Should you have corrupted the portupgrade databases, or if ruby-bdb
refuses to work with the upgraded db* port with errors such as "DB
needs compatible versions of libdb & db.h", then rebuild the ruby-bdb
port manually, and fix the portupgrade databases:
# make -C /usr/ports/databases/ruby-bdb all deinstall install clean
# pkgdb -fu
# portupgrade -f db5 db6
This should return portupgrade to normal operation.
#EOF
Так вот, возвращаясь Unknown modifier 't',
Если мы все сделали правильно, то проблемы больше небудет.