Путь свободен!

воскресенье, 11 сентября 2011 г.

Xfce 4.8.2: завершение работы и рестарт

Хм, продолжаем сношаться с чёткой системой костылей и подпорок, придуманной нашими пернатыми друзьями под чутким руководстом коммерческих компаний и FSF во главе с товарищем Штольманом.

Чтобы иметь возможность перезагружать компьютер или завершать работу не из командной строки, а из самой среды Xfce 4.8.2, необходимо сделать доступными кнопки диалога "Выйти" — "Перезагрузить" и "Выключить", соответственно.

Решение проблемы описано здесь: перейти к обсуждению проблемы.

  • Создаём файл:
  • % touch /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla
  • Смотрим сообщение из файла /usr/ports/x11-wm/xfce4-session/pkg-message и редактируем созданный файл в соответствии пожеланиями линуксятников PUTTY-пользователям FreeBSD:
  • [Restart]
    Identity=unix-group:operator
    Action=org.freedesktop.consolekit.system.restart
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes
    
    [Shutdown]
    Identity=unix-group:operator
    Action=org.freedesktop.consolekit.system.stop
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes
(Пользователь, имеющий право перезагружать и выключать компьютер в Unix, как правило, входит в группу operator).

После этого диалог выхода Xfce приобретает законченный вид:

вторник, 19 июля 2011 г.

FreeBSD: обновление системы из исходников

Пересборка системы FreeBSD из исходников состоит из следующих этапов:
  • загрузка файлов с исходными кодами
  • редактирование конфигурационных файлов
  • непосредственная компиляция и сборка системы из исходников
  • инсталляция собранных ядра и системного окружения
  • слияние новых настроечных файлов системы с существующими
  • перезагрузка для вступления в силу всех изменений


Рассмотрим эти этапы подробнее.

Конфигурационные файлы

В системе должны быть три файла, влияющие на этапы загрузки (обновления), компиляции и сборки системы. Это файлы: /etc/make.conf, /etc/src.conf и /etc/sys-supfile. При этом файлы src.conf и sys-supfile необязательно присутствуют в системе, но их можно и нужно создать на основе примеров.

Примерный файл /etc/make.conf:
#2011-06-23
KERNCONF=SELENA
#MAKEOBJDIRPREFIX=/usr/obj
WRKDIRPREFIX=/usr/obj
DISTDIR=/store/distfiles
PACKAGES=/store/pckgs64 # ln -s /store/pckgs64 /usr/ports/packages
# see /usr/share/examples/etc/make.conf
#--MAKE_JOBS_NUMBER=7
CFLAGS= -O -pipe
LOADER_ZFS_SUPPORT=true
LOCALIZED_LANG=ru
WITH_LCD_FILTERING=true
WITH_XFT=true
WITHOUT_TTF_BYTECODE_ENABLED=false
WITH_TTF_BYTECODE_ENABLED=true
WITH_MSWINDOWS_LICENSE=true
WITHOUT_NOUVEAU=true
WITH_A4SIZE=true
WITHOUT_GNUTLS=true
WITHOUT_GSTREAMER=true
WITHOUT_ALSA=true
WITHOUT_MYSQL=true
WITHOUT_NAUTILUS=true
WITHOUT_GCONF=true
#LICENSE_PERMS=true
#-WITHOUT_IPV6=true
#-DISABLE_VULNERABILITIES=true
#-NOPORTDOCS=true #-xfce Terminal
#OVERRIDE_LINUX_BASE_PORT=f10
#OVERRIDE_LINUX_NONBASE_PORTS=f10

# print/hplip without Qt GUI
.if ${.CURDIR} == ${PORTSDIR}/print/hplip
WITHOUT_GUI=true
WITHOUT_DBUS=true
WITHOUT_XSANE=true
WITH_SNMP=true
.endif

.if ${.CURDIR} == ${PORTSDIR}/graphics/gimp
WITHOUT_PYTHON=true
WITH_HELP=true
.endif

# added by use.perl 2011-07-12 16:27:34
PERL_VERSION=5.12.4

Как не трудно заметить, опции файла make.conf влияют на компиляцию не только операционной системы, но и прикладного программного обеспечения, устанавливаемого из коллекции портов. Но вот опции компиляции ПО из коллекции портов не влияют на сборку системы.

Примерный файл /etc/src.conf (дополнительно см. man src.conf):
#-WITHOUT_AMD=true
WITHOUT_ASSERT_DEBUG=true
WITHOUT_ATM=true
#-WITHOUT_AUDIT=true
WITHOUT_BIND_DNSSEC=true
WITHOUT_BIND_ETC=true
WITHOUT_BIND_LIBS_LWRES=true
WITHOUT_BIND_MTREE=true
WITHOUT_BIND_NAMED=true
WITHOUT_EXAMPLES=true
WITHOUT_FLOPPY=true
WITHOUT_FREEBSD_UPDATE=true
WITHOUT_GAMES=true
WITHOUT_GDB=true
#-WITHOUT_GNU_GREP=true
WITHOUT_GPIB=true
WITHOUT_HTML=true
WITH_IDEA=true
#-WITHOUT_INET6=true
#-WITHOUT_INET6_SUPPORT=true
#-WITHOUT_INFO=true
WITHOUT_IPFILTER=true
WITHOUT_IPFW=true
WITHOUT_IPX=true
WITHOUT_IPX_SUPPORT=true
WITHOUT_LPR=true
#-WITHOUT_MAIL=true
#-WITHOUT_MAILWRAPPER=true
WITHOUT_NCP=true
WITHOUT_NDIS=true
#-WITHOUT_NIS=true
#-WITHOUT_NS_CACHING=true
#-WITHOUT_OBJC=true
WITHOUT_PROFILE=true
WITHOUT_QUOTAS=true
WITHOUT_RCS=true
#-WITHOUT_RESCUE=true
WITHOUT_SENDMAIL=true
#-WITHOUT_SHAREDOCS=true
WITHOUT_SYSINSTALL=true
WITHOUT_TELNET=true

Мне нужен не весь BIND, а только некоторые утилиты из него. MTA Sendmail и отладчик GDB на обычной рабочей станции не нужны. Также ненужны устаревшие сетевые протоколы ATM и IPX.

Примерный файл /etc/sys-supfile:

*default host=cvsup10.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default tag=RELENG_8
*default delete use-rel-suffix
*default compress
src-all

То есть при использовании этого файла будут загружены исходные коды FreeBSD 8-STABLE.


Процесс обновления
(непосредственно процесс обновления по шагам расписан позднее, здесь даются лишь базовые понятия)

Обновление исходников системы производится системной утилитой csup примерно так:

% csup /etc/sys-supfile

Необходимое и достаточное условие: активное прямое Интернет-соединение!
(здесь и далее символ "%" говорит о том, что используется командная оболочка /bin/tcsh с правами рута; символ ">" говорит о том, что используется командная оболочка /bin/tcsh с правами пользователя.)

Потом необходимо сделать копию файла настроек ядра GENERIC:

% cd /sys/amd64/conf/ && cp GENERIC SELENA

и отредактировать эту копию. Проследите, чтобы имя файла, в данном случае /sys/amd64/conf/SELENA, совпало с именем ядра переменной KERNCONF в файле make.conf.

Файл /sys/amd64/conf/SELENA здесь не весь(!!!), а лишь несколько строчек, в которых я что-то меняю:
# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.531.2.17 2011/04/09 12:04:35 bz Exp $

cpu HAMMER
ident SELENA

# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.

# Use the following to compile in values accessible to the kernel
# through getenv() (or kenv(1) in userland). The format of the file
# is 'variable=value', see kenv(1)
#
# env "GENERIC.env"

#-makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat (sgtty)
options COMPAT_FREEBSD32 # Compatible with i386 binaries
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
#-options KTRACE # ktrace(1) support
#-options STACK # stack(9) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options P1003_1B_SEMAPHORES # POSIX-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
options AUDIT # Security event auditing
options MAC # TrustedBSD MAC Framework
#options KDTRACE_FRAME # Ensure frames are compiled in
#options KDTRACE_HOOKS # Kernel DTrace hooks
options INCLUDE_CONFIG_FILE # Include this file in kernel

#-options KDB # Kernel debugger related code
#-options KDB_TRACE # Print a stack trace for a panic


Полная инструкция сборки всего системного окружения и ядра FreeBSD
  1. Удаляем бинарники от предыдущей компиляции:

    % cd /usr/obj/ && chflags -R noschg * && rm -rf *
  2. Редактируем файл /etc/sys-supfile для обновления исходников до нужной версии системы:

    % ee /etc/sys-supfile
  3. Синхронизируем дерево исходного кода с серверным:

    % cd /usr/src/ && chflags -R noschg * && csup /etc/sys-supfile
  4. На этом шаге делаем копию конфига ядра:

    % cd /sys/amd64/conf/ && cp GENERIC SELENA
  5. Редактируем конфиг будущего ядра:

    % ee /sys/amd64/conf/SELENA
  6. На этом этапе редактируем make.conf и src.conf, если нужно:

    % ee /etc/make.conf
    и

    % ee /etc/src.conf
  7. Очищаем исходники:

    % cd /usr/src/ && chflags -R noschg * && make cleandir && make cleandir && make cleandir
  8. Собираем Мир и Ядро:

    % cd /usr/src/ && make buildworld buildkernel
  9. Инсталлируем Ядро и Мир в однопользовательском режиме, обновляем файлы конфигурации системы:

    % shutdown now
    # cd /usr/src/ && make installkernel installworld
    # mergemaster
    # shutdown -r now
  10. В одних случаях может быть достаточно нажимать клавишу [i] на вопросы утилиты mergemaster — инсталлировать новые файлы конфигурации. Но сначала нужно проверить, какой файл обрабатывается, прежде чем что-то сделать с ним: заменить старую версию файла новым [i], оставить старый [d], посмотреть изменения [v] или произвести слияние нового со старым [m], сделать ссылку [l] (бывает и такое). В завершение процесса на вопрос об удалении временного каталога можно нажать клавишу [y].
  11. Перезагружаемся:

    # shutdown -r now
  12. Загружаемся как обычно, но затем снова переходим в однопользовательском режим и удаляем мусор от предыдущей инсталляции:

    % shutdown now
    # cd /usr/src/ && make BATCH_DELETE_OLD_FILES=true delete-old delete-old-libs
    # shutdown -r now


Вот и всё.

вторник, 7 июня 2011 г.

Популярность копилефт-лицензий падает

Ссылка на статью: Популярность копилефт-лицензий падает

Согласно сводке результатов исследований, проведённых экспертами центра Open Source Resource Center компании Black Duck процентное количество открытых проектов, использующих лицензии семейства GPL, снизилось с 70% (июнь 2008 г.) до 61% (июнь 2011 г.), а использование конкретно лицензии GPLv2 снизилось с 58% до 45% за те же три года. При этом количество проектов, использующих GPL-лицензии, в реальном исчислении увеличилось за последние несколько лет. Например, число проектов под лицензией GPLv2 возросло на 5.5% между июнем 2009 и июнем 2011 года, в то время как общее число проектов с открытым кодом увеличилось более чем на 16%.

Количество проектов, использующих лицензию Apache, выросло на 46% в течение последних двух лет, в то время как количество проектов, лицензируемых на условиях MIT-лицензий, выросло на целых 152%. Графики из исследования Black Duck ясно указывают на то, что лицензии MIT являются лидером в последние два года, их показатель вырос с 3.8% от всех проектов в июне 2009 года до 8.23% на сегодняшний момент времени, и обогнал по общему показателю прогресса использование лицензии Apache, BSD, GPLv3 и LGPLv2.1.

Данные исследования Black Duck демонстрируют в последние годы не только снижение важности копилефт-лицензий, требующих при создании производных работ или внесения изменений открытия кода на тех же условиях. Исследование, проведённое в рамках доклада Control and Community, также указывает на то, что снижается количество производителей, связывающих себя с ПО, лицензируемым строго под копилефт-лицензиями. Были оценены OpenSource стратегии трёхсот компаний-вендоров и их филиалов. Рассматривались такие вопросы, как выбор лицензии, модель разработки, стратегия авторских прав и источник прибыли.


Очень интересные графики, демонстрирующие тренды заинтересованности в той или иной политике лицензирования проектов за последние годы. Особенно мне понравился вот этот график:


— в мае-июне 2006 мне наконец-то удалось разобраться с многообразием дистрибутивов GNU/Linux, попробовать LiveCD BLiN 2.0 на основе GNOME, DVD9 ALT Linux Compact 3.0 со стабильной оболочкой KDE и ужасно глючным Xfce DE. В конце-концов, остановишись и установив в июне 2006 года Ubuntu 6.06, стал готов к окончательному переходу на BSD и проекты с исключительно открытым кодом и вскоре сделал это!

Как-будто чувствовал тренды...