【悲報】CentOS,2021年に終了

CentOS8: 2021年末にサポート終了
CentOS7: 2024年までメンテナンスサポート続行

The CentOS Projectは、Red Hat Enterprise Linuxの上流/開発ブランチとしてのみCentOS Streamを展開。
既存のCentOSユーザに対し、CentOS Streamへの移行を推奨しています。

長年サーバ用ディストリとして愛用してただけに残念です(ノωT*)

CentOSで古いカーネルを一括削除する方法

CentOS(RedHat系Linuxディストリ)で古いカーネルを一括削除する方法をご紹介。

こちらは専用のパッケージが用意されているので、安全且つカンタンにカーネルの削除が出来ます。

yum install yum-utils
package-cleanup --old-kernels --count=(残すカーネルの数)

サーバをCentOS7にアップデートしたよ

CentOS6→7に無事成功。
まだ設定直さんといかんところや作業メモ書かなきゃとかあるけど、それはおいおい。
Apacheが2.2系から2.4系になったので、流用できない昔のコンフィグが多々あります、ご注意。
[amazon_link asins=’4798041866′ template=’SupportedAMP’ store=’10yendama-22′ marketplace=’JP’ link_id=’884059fe-2722-11e8-b725-9b9b9ac5b348′]

CentOS6.5で、Apache2.2.26のソースコードをrpmにリビルドしてアップデートしたときのお話

Linux

サーバエンジニアの友達「Apache2.2.15使ってんすか」

十円玉「centosplusレポジトリからね( ´-`)y-~~」

サーバエンジニアの友達(以下Pさん)「それ、穴だらけっすよ。リクエストの空受けしたりしますよ。2.2系なら2.2.25出てますけどそれもまだ・・・。」

十円玉「今2.2.26出てんのか( ´-`)y-~~」

久しくターボールをパッケージビルドしていなくて色々忘れている十円玉「aprのバージョンで弾かれた(´・ω・`)」

aprをビルドするも下手こく十円玉「・・・ッッッ(`゚д゚´)」

Pさん「今『su -』でrootになってるんですよね?そしたらビルド環境こうしたらどうすか( ´-`)つ」

Pさん「Linuxには、変数やディレクトリの予約語があるので注意してくださいね」

[code language=”bash”]
#rpmbuildの環境ディレクトリを作成
#mkdir /root/rpmbuild/{SPECS,BUILD,BUILDROOT.SOURCES,SRPMS,RPMS}
[/code]

 

[code language=”bash”]
#vi .rpmmacros
%_topdir /root/rpmbuild
%_specdir %{_topdir}/SPECS
%_builddir %{_topdir}/BUILD
%_buildroot %[_topdor]/BUILDROOT
%_sourcedir %{_topdir}/SOURCES
%_srcrpmdir %{_topdir}/SRPMS
%_rpmdir %{_topdir}/RPMS
[/code]

Pさん「aprとapr-utilsのターボールをさっきのSOURCESディレクトリにコピーして」

Pさん「aprとapr-utilsのターボールを解凍したら、*.specファイルをさっきのSPECディレクトリにコピーするじゃないですか」

Pさん「apr.specはこうじゃないですか?」

[code language=”bash”]
#vi /root/rpmbuild/SPECS/apr.spec

#「Version」を合わせる

#「%define aprver 1」直下に、変数「prefixdir」を定義する
%define prefixdir /usr/local/apr

#「Source0」のパスの拡張子を、SOURCESディレクトリと合わせる
Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.gz

#./configureのオプションを以下に変更
./configure \
–prefix=%{prefixdir} \

#以下をコメントアウト
#make check || exit 1

#変数「%{_libdir}」を、冒頭で定義した「%{prefixdir}」に置換
#rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp

rm -f $RPM_BUILD_ROOT%{prefixdir}/lib/apr.exp

#以下をコメントアウト
#%doc CHANGES LICENSE NOTICE

#変数「%{_libdir}」を、冒頭で定義した「%{prefixdir}」に置換
#%{_libdir}/libapr-%{aprver}.so.*

%{prefixdir}/lib/libapr-%{aprver}.so.*

#「$doc」をコメントアウト
#%doc docs/APRDesign.html docs/canonical_filenames.html
#%doc docs/incomplete_types docs/non_apr_programs
#%doc –parents html

#変数「%{_bindir}」を、冒頭で定義した「%{prefixdir}」に置換
#%{_bindir}/bin/apr*config
#%{_bindir}/lib/libapr-%{aprver}.*a
#%{_bindir}/lib/libapr-%{aprver}.so
#%dir %{_libdir}/apr
#%dir %{_libdir}/apr/build-%{aprver}
#%{_libdir}/apr/build-%{aprver}/*
#%{_libdir}/pkgconfig/apr-%{aprver}.pc
#%dir %{_includedir}/apr-%{aprver}
#%{_includedir}/apr-%{aprver}/*.h

%{prefixdir}/bin/apr*config
%{prefixdir}/lib/libapr-%{aprver}.*a
%{prefixdir}/lib/libapr-%{aprver}.so
%dir %{prefixdir}/lib
%dir %{prefixdir}/build-%{aprver}
%{prefixdir}/build-%{aprver}/*
%{prefixdir}/lib/pkgconfig/apr-%{aprver}.pc
%dir %{prefixdir}/include/apr-%{aprver}
%{prefixdir}/include/apr-%{aprver}/*.h
[/code]

サーバエンジニアの友達「apr-util.specは」

[code language=”bash”]
#vi /root/rpmbuild/SPECS/apr-util.spec

#「Version」を合わせる

#「%define apuver 1」直下に、変数「prefixdir」を定義する
%define prefixdir /usr/local/apr

#「Source0」のパスの拡張子を、SOURCESディレクトリと合わせる
Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.gz

#以下をコメントアウト若しくは削除
#%package pgsql
#Group: Development/Libraries
#Summary: APR utility library PostgreSQL DBD driver
#BuildRequires: postgresql-devel
#Requires: apr-util = %{version}-%{release}

#%description pgsql
#This package provides the PostgreSQL driver for the apr-util
#DBD (database abstraction) interface.

#%package mysql
#Group: Development/Libraries
#Summary: APR utility library MySQL DBD driver
#BuildRequires: mysql-devel
#Requires: apr-util = %{version}-%{release}

#%description mysql
#This package provides the MySQL driver for the apr-util DBD
#(database abstraction) interface.

#%package sqlite
#Group: Development/Libraries
#Summary: APR utility library SQLite DBD driver
#BuildRequires: sqlite-devel >= 3.0.0
#Requires: apr-util = %{version}-%{release}

#%description sqlite
#This package provides the SQLite driver for the apr-util DBD
#(database abstraction) interface.

#%package freetds
#Group: Development/Libraries
#Summary: APR utility library FreeTDS DBD driver
#BuildRequires: freetds-devel
#Requires: apr-util = %{version}-%{release}

#%description freetds
#This package provides the FreeTDS driver for the apr-util DBD
#(database abstraction) interface.

#%package odbc
#Group: Development/Libraries
#Summary: APR utility library ODBC DBD driver
#BuildRequires: unixODBC-devel
#Requires: apr-util = %{version}-%{release}

#%description odbc
#This package provides the ODBC driver for the apr-util DBD
#(database abstraction) interface.

#「./configure」を以下のように書き換える
#※ここはあくまでもウチでの環境でのサンプル
./configure \
–with-apr=%{prefixdir} \
–with-ldap –without-gdbm \
–with-berkeley-db \
–with-crypto –with-openssl –with-nss \
–without-sqlite2 \

#以下のコメントアウトを外す
make check || exit 1

#変数「%{_libdir}」を、「%{prefixdir}」に置換する
#rm -f $RPM_BUILD_ROOT%{_libdir}/aprutil.exp

rm -f $RPM_BUILD_ROOT%{prefixdir}/lib/aprutil.exp

#変数「%{_libdir}」を、「%{prefixdir}」に置換する
#「$doc~」をコメントアウト
%doc CHANGES LICENSE NOTICE
%{_libdir}/libaprutil-%{apuver}.so.*
%dir %{_libdir}/apr-util-%{apuver}

#%doc CHANGES LICENSE NOTICE
%{prefixdir}/lib/libaprutil-%{apuver}.so.*
%dir %{prefixdir}/include/apr-%{apuver}

#変数「%{_libdir}」を、「%{prefixdir}」に置換する
#%{_libdir}/apr-util-%{apuver}/apr_dbm_db*

%{prefixdir}/lib/apr-util-%{apuver}/apr_dbm_db*

#以下をコメントアウト
#%files pgsql
#%defattr(-,root,root,-)
#%{_libdir}/apr-util-%{apuver}/apr_dbd_pgsql*

#%{prefixdir}/lib/apr-util-%{apuver}/apr_dbd_sqlite*

#%files mysql
#%defattr(-,root,root,-)
#%{_libdir}/apr-util-%{apuver}/apr_dbd_mysql*

#%files sqlite
#%defattr(-,root,root,-)
#%{_libdir}/apr-util-%{apuver}/apr_dbd_sqlite*

#%files freetds
#%defattr(-,root,root,-)
#%{_libdir}/apr-util-%{apuver}/apr_dbd_freetds*

#%files odbc
#%defattr(-,root,root,-)
#%{_libdir}/apr-util-%{apuver}/apr_dbd_odbc*

#変数「%{_libdir}」を、「%{prefixdir}」に置換する
#%{_libdir}/apr-util-%{apuver}/apr_ldap*

%{prefixdir}/lib/apr-util-%{apuver}/apr_ldap*

#%{_libdir}/apr-util-%{apuver}/apr_crypto_openssl*

%{prefixdir}/lib/apr-util-%{apuver}/apr_crypto_openssl*

#%{_libdir}/apr-util-%{apuver}/apr_crypto_nss*

%{prefixdir}/lib/apr-util-%{apuver}/apr_crypto_nss*

#変数「%{_libdir}」「%{_incluidedir}」を、「%{prefixdir}」に置換する
#%{_bindir}/apu-%{apuver}-config
#%{_libdir}/libaprutil-%{apuver}.*a
#%{_libdir}/libaprutil-%{apuver}.so
#%{_libdir}/pkgconfig/apr-util-%{apuver}.pc
#%{_includedir}/apr-%{apuver}/*.h

%{prefixdir}/bin/apu-%{apuver}-config
%{prefixdir}/lib/libaprutil-%{apuver}.*a
%{prefixdir}/lib/libaprutil-%{apuver}.so
%{prefixdir}/lib/pkgconfig/apr-util-%{apuver}.pc
%{prefixdir}/include/apr-%{apuver}/*.h

#以下をコメントアウト
#%doc –parents html
[/code]

サーバエンジニアの友達「で、aprとutilをビルドして」

[code language=”bash”]
#aprのrpmパッケージを作成
rpmbuild -bb /root/rpmbuild/SPECS/apr.spec
rpmbuild -bb /root/rpmbuild/SPECS/apr-util.spec
[/code]

サーバエンジニアの友達「出来上がったrpmを同時アップデート」

[code language=”bash”]
#aprアップデート
rpm –force –nodeps -Uvh /root/rpmbuild/RPMS/x86_64/apr-*.*.*-*.x86_64.rpm\
/root/rpmbuild/RPMS/x86_64/apr-devel-*.*.*-*.x86_64.rpm /root/rpmbuild/RPMS/x86_64/apr-debuginfo-*.*.*-*.x86_64.rpm
[/code]

Pさん「そしたら、Apacheのも同じ方法でビルド出来ますよね?」

段々思い出してきた十円玉「無事、Apache2.2が最新版になりやしたっっっっっ(`゚д゚´)」

ちなみに、Apache2.2.15以降のバージョンでは
コンフィグが少し改変されております、必ずチェックし直してね( ^ヮ^)ノ
2.4系はガラッと変わるよ( ^ヮ^)ノ

[amazon_link asins=’4774145017′ template=’SupportedAMP’ store=’10yendama-22′ marketplace=’JP’ link_id=’9fd45abb-2724-11e8-b9b6-73a6164288f7′]