Spis Treści
Instalowanie początkowych ports
PERL
To jest podstawa do wszystkiego. Chociaż wystarczy wykonać instalację OpenSSL, a aktualny PERL zostanie zainstalowany.
OpenSSL
To jest druga podstawa wszystkiego pozostałego. Nie zaznaczamy opcji gmp (licencja LGPLv3 -blokada)
# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/security/openssl
make config-recursive
make all install clean
OpenSSH portable
# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/security/openssh-portable
make config-recursive
make all install clean
echo "openssh_enable=\"YES\"" >> /etc/rc.conf
/etc/rc.d/openssh start
pkgng dla OSVERSION < 10
Natywny (hmm dotychczasowy) pkg_* idzie już do lamusa. Trzeba przejść na pkgng, który bardzo żywo przypomina Linuxowe apt-get, rpm, czy inne tego typu programy (wygląd, czy składnia). Scala w sobie również dotychczasowe narzędzia, jak np. portaudit
UWAGA! pkgng korzysta z SQLite - ale to zostanie doinstalowane.
cd /usr/ports/ports-mgmt/pkg
make config-recursive
make all install clean
pkg2ng
Po wykonaniu pkg2ng, należy skasować dotychczasową "bazę" dla pkg, czyli katalogi. Aby przez pomyłkę wykonując ponownie pkg2ng nie zainstalować "starych" wersji ports
find /var/db/pkg -type d -mindepth 1 -maxdepth 1 -exec rm -rf {} \;
Konieczność dodania w /etc/make/make.local.conf
# wy/l/aczenie komunikat/ow
NO_WARNING_PKG_INSTALL_EOL= yes
# pokazanie np. portupgrade, /ze jest ju/z pkgng
WITH_PKGNG= yes
portupgrade
# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/ports-mgmt/portupgrade
make config-recursive
make all install clean
Należy następnie przekopiować z repozytorium CVS lub innego serwera pliki /usr/local/etc/pkgtools.conf oraz /usr/local/etc/pkgtools.interoptioned-pkg.sh (chociaż to na później)
net/chrony
Istnieje konieczność znalezienia alternatywy do ntpd. Wersja "systemowa" może nie być aktualna. ntp zwykłe jest wpisane na listę podatności. ntp-devel: niby działa stabilnie, ale może przestać działać stabilnie. OpenNTPd w wersji portable jest kilka wersji do tyłu w stosunku do wersji OpenBSD. Pozostaje zatem chrony zgodnie z tą dyskusją
Opcji konfiguracyjnych przy instalacji nie ma wielu. Zaś plik konfiguracyjny jest prosty i nieskomplikowany.
portupgrade -N net/chrony
ICU, SQLite
portupgrade -N devel/icu databases/sqlite3
Podstawowe narzędzia
portupgrade -N xinetd ipcalc ipfmeta lang/python27 bsdadminscripts lsof sudo unzip afio p7zip sysutils/moreutils fex screen smartmontools
cd /usr/ports/editors/vim
make WITH_OPTIONS=1 all install clean
portupgrade -N security/nmap security/apg net/mtr net/netcat sysutils/daemontools net/trafshow net/unison security/py-fail2ban
portupgrade -N devel/py-dateutil ftp/wget ftp/ncftp3 ftp/curl emulators/linux_base-f10 sysutils/freebsd-snapshot
portupgrade -N dmidecode bsdstats
Poprawka bsdadminscripts - pkgng
To jest ponowne uruchomienie portconfig, aby móc ustawiać ustawienia dla ports przy pkgng
--- /usr/local/sbin/portconfig.orig 2013-07-10 01:54:15.387843000 +0200
+++ /usr/local/sbin/portconfig 2014-03-11 01:08:32.009584910 +0100
@@ -154,7 +154,7 @@
if [ -n "$force" ]; then
echo "$port"
else
- if pkg_version -IO "$port" \
+ if pkg version -IO "$port" \
grep \< > /dev/null 2>&1; then
echo "$port"
fi
@@ -162,18 +162,18 @@
if [ -n "$recursive" ]; then
getPorts "$depth" $( \
- pkg_info -qR $(pkg_info -qO "$port" \
+ pkg info -qr $(pkg info -qO "$port" \
2> /dev/null))
fi
if [ -n "$upwardrecursive" ]; then
getPorts $depth $( \
- pkg_info -qr $(pkg_info -qO "$port" \
+ pkg info -qd $(pkg info -qO "$port" \
2> /dev/null) \
| sed 's/@pkgdep //1')
fi
# Handle parameters that look like package names.
else
- candidates="$(pkg_info -Ex "$port")"
+ candidates="$(pkg info -x "$port")"
# The shortest candidate ist bound to be the best match.
shortest=
for candidate in $candidates; {
@@ -184,11 +184,11 @@
shortest="$candidate"
fi
}
- shortest="$(pkg_info -qo "$shortest" 2> /dev/null)"
+ shortest="$(pkg info -qo "$shortest" 2> /dev/null)"
if [ -n "$force" ]; then
echo "$shortest"
else
- if pkg_version -IO "$shortest" \
+ if pkg version -IO "$shortest" \
grep \< > /dev/null 2>&1
then
echo "$shortest"
@@ -197,14 +197,14 @@
if [ -n "$recursive" ]; then
getPorts "$depth" $( \
- pkg_info -qR $(
- pkg_info -qO "$shortest"
+ pkg info -qr $(
+ pkg info -qO "$shortest"
))
fi
if [ -n "$upwardrecursive" ]; then
getPorts "$depth" $( \
- pkg_info -qr $(
- pkg_info -qO "$shortest"
+ pkg info -qd $(
+ pkg info -qO "$shortest"
) | sed 's/@pkgdep //1')
fi
fi
@@ -230,9 +230,9 @@
# All ports are to be processed.
if [ -n "$all" ]; then
if [ -n "$force" ]; then
- upgrade="$(pkg_info -aqo)"
+ upgrade="$(pkg info -aqo)"
else
- upgrade="$(pkg_version -Iol\< | sed -E 's/[[:space:]]*<$//1')"
+ upgrade="$(pkg version -Iol\< | sed -E 's/[[:space:]]*<$//1')"
fi
fi
# Handle explicitly requested ports.
Powyższy patch powinien zadziałać na wszystkie "hardlinks" do portconfig, ale z jakiś przyczyn na UFS tak się nie dzieje (tak, jakby patch traktował to jako oddzielne pliki). Zatem poniższy jednolinijkowiec powinien ładnie pomóc:
for f in `pkg info -l bsdadminscripts | grep 'sbin/port'`; do patch $f ~wtp/scripts/portconfig.patch ; rm $f.orig; done
# wersja dla HQ
#
for f in `pkg info -l bsdadminscripts | grep 'sbin/port'`; do patch $f ~wtp/cvs/unison/portconfig.patch ; rm $f.orig; done
subversion
W sumie to jest potrzebne na kolejną aktualizację źródeł systemu operacyjnego - w końcu dla ports można posłużyć się portsnap-em. Ale i tak może być konieczne zainstalowanie zależności:
portupgrade -N devel/subversion
UWAGA!!! Jeżeli jest to FreeBSD-9.x i skorzystaliśmy z opcji native iconv, to konieczne jest zapatchowanie Makefile'a
@@ -168,3 +168,7 @@
.if ${PORT_OPTIONS:MFREEBSD_TEMPLATE} && defined(ORGANIZATION)
@${ECHO_CMD} "#define ORGANIZATION_NAME \"${ORGANIZATION}\"" > ${WRKSRC}/subversion/freebsd-organization.h
.endif
+
+.if defined(WITH_ICONV)
+ @${REINPLACE_CMD} -e 's/UTF-8\\n/UTF-8/gI' ${WRKSRC}/subversion/po/*.po
+.endif
portdowngrade
Dopiero teraz można instalować: jest zależny od subversion:
portupgrade -N portdowngrade
rrdtool
Na potrzeby różnych monitoringów (np. collectd, czy mailgraph) potrzebna jest ta baza danych:
cd /usr/ports/databases/rrdtool
make config-recursive
make fetch-recursive
# jezeli skorzystalismy z ustawien dot. natywnego iconv, to problemem jest devel/glib20 - patrz rowniez ponizszy patch dla Makefile
cd /usr/ports/devel/glib20
make LIB_ICONV=1 all install clean
cd /usr/ports/databases/rrdtool
make all install clean
Konieczny patch dla devel/glib20
Tylko w przypadku skorzystania z native iconv:
--- Makefile 2013-09-20 19:04:43.000000000 +0200
+++ Makefile.new 2013-10-16 00:32:31.000000000 +0200
@@ -100,6 +100,10 @@
s|-Werror|| ; \
s|#define HAVE_SYS_INOTIFY_H 1||' ${WRKSRC}/configure
+.if defined(WITH_ICONV)
+ @${REINPLACE_CMD} -e 's/UTF-8\\n/UTF-8/gI' ${WRKSRC}/po/*.po
+.endif
+
post-install:
@${MKDIR} ${PREFIX}/share/GConf/gsettings
-${PREFIX}/bin/gio-querymodules ${PREFIX}/lib/gio/modules
