docs(fhs): document CentOS 7 and Rocky Linux builds
This commit is contained in:
@@ -0,0 +1,76 @@
|
|||||||
|
# FHS Rocky Linux 10 빌드
|
||||||
|
|
||||||
|
Rocky Linux 10 컨테이너에서 저장소를 직접 마운트하고 FHS를 빌드한다.
|
||||||
|
|
||||||
|
## 실행 준비와 컨테이너
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
RUN_ID="$(date +%Y%m%d%H%M%S)-$$"
|
||||||
|
FHS_CONTAINER="fhs-rocky10-${RUN_ID}"
|
||||||
|
|
||||||
|
podman pull docker.io/rockylinux/rockylinux:10
|
||||||
|
podman run -d \
|
||||||
|
--name "$FHS_CONTAINER" \
|
||||||
|
--volume "$PWD:/workspace:Z" \
|
||||||
|
--workdir /workspace/fhs \
|
||||||
|
docker.io/rockylinux/rockylinux:10 sleep infinity
|
||||||
|
```
|
||||||
|
|
||||||
|
소스는 복사하지 않고 `-v`로 현재 저장소를 `/workspace`에 마운트한다.
|
||||||
|
|
||||||
|
## 의존성과 고정 경로 준비
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
dnf install -y \
|
||||||
|
findutils gcc gcc-c++ make pkgconf-pkg-config bc \
|
||||||
|
boost-devel openssl-devel sqlite-devel openldap-devel \
|
||||||
|
libpq-devel apr-devel apr-util-devel
|
||||||
|
'
|
||||||
|
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
set -e
|
||||||
|
mkdir -p /user/db/pgsql/lib /user/service/httpd/lib
|
||||||
|
ln -sfn /usr/include /user/db/pgsql/include
|
||||||
|
ln -sfn /usr/lib64/libpq.so /user/db/pgsql/lib/libpq.a
|
||||||
|
ln -sfn /usr/include/apr-1 /user/service/httpd/include
|
||||||
|
ln -sfn /usr/lib64/libapr-1.so /user/service/httpd/lib/libapr-1.a
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## FHS 빌드
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec -w /workspace/fhs "$FHS_CONTAINER" bash -lc '
|
||||||
|
set +e
|
||||||
|
for component in arcmond2 cls csagentd fimngd ftsd sh-opendav; do
|
||||||
|
make clean -C "$component" >/dev/null 2>&1
|
||||||
|
echo "===== BUILD ${component} ====="
|
||||||
|
make all -C "$component"
|
||||||
|
echo "===== STATUS ${component} $? ====="
|
||||||
|
done
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실제 결과
|
||||||
|
|
||||||
|
실행 당시 Rocky Linux 10.2, GCC 14.3.1 환경에서 확인했다.
|
||||||
|
|
||||||
|
| 구성요소 | 결과 |
|
||||||
|
| --- | ---: |
|
||||||
|
| `arcmond2` | 2 |
|
||||||
|
| `cls` | 2 |
|
||||||
|
| `csagentd` | 2 |
|
||||||
|
| `fimngd` | 2 |
|
||||||
|
| `ftsd` | 0 |
|
||||||
|
| `sh-opendav` | 2 |
|
||||||
|
|
||||||
|
`arcmond2`는 `makedev`, `cls`는 `setproctitle`, `csagentd`와
|
||||||
|
`fimngd`는 타입 미정의로 실패했다.
|
||||||
|
`sh-opendav`는 `all` target이 없다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
file fhs/ftsd/src/ftsd
|
||||||
|
file fhs/ftsd/interface/sample/ftsd_test
|
||||||
|
```
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
# FHS CentOS 7 빌드
|
||||||
|
|
||||||
|
CentOS 7 컨테이너에서 저장소를 직접 마운트하고 FHS를 빌드한다.
|
||||||
|
|
||||||
|
## 실행 준비
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
|
||||||
|
RUN_ID="$(date +%Y%m%d%H%M%S)-$$"
|
||||||
|
FHS_CONTAINER="fhs-centos7-${RUN_ID}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 컨테이너 실행
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman pull docker.io/library/centos:7
|
||||||
|
podman run -d \
|
||||||
|
--name "$FHS_CONTAINER" \
|
||||||
|
--volume "$PWD:/workspace:Z" \
|
||||||
|
--workdir /workspace/fhs \
|
||||||
|
docker.io/library/centos:7 sleep infinity
|
||||||
|
```
|
||||||
|
|
||||||
|
소스를 컨테이너로 복사하지 않고 `-v`로 현재 저장소를 마운트한다.
|
||||||
|
|
||||||
|
## 저장소와 의존성 준비
|
||||||
|
|
||||||
|
CentOS 7은 vault 저장소를 사용한다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
centos_base='^#baseurl=http://mirror.centos.org/centos/$releasever'
|
||||||
|
centos_vault='baseurl=http://vault.centos.org/7.9.2009'
|
||||||
|
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc "
|
||||||
|
sed -i \
|
||||||
|
-e 's|^mirrorlist=|#mirrorlist=|' \
|
||||||
|
-e 's|${centos_base}|${centos_vault}|' \
|
||||||
|
/etc/yum.repos.d/CentOS-Base.repo
|
||||||
|
yum clean all
|
||||||
|
yum install -y \
|
||||||
|
findutils gcc gcc-c++ make pkgconfig bc \
|
||||||
|
boost-devel openssl-devel sqlite-devel openldap-devel \
|
||||||
|
postgresql-devel apr-devel apr-util-devel
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
소스 Makefile의 고정 경로를 컨테이너 패키지 경로에 연결한다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
set -e
|
||||||
|
mkdir -p /user/db/pgsql/lib /user/service/httpd/lib
|
||||||
|
ln -sfn /usr/include /user/db/pgsql/include
|
||||||
|
ln -sfn /usr/lib64/libpq.so /user/db/pgsql/lib/libpq.a
|
||||||
|
ln -sfn /usr/include/apr-1 /user/service/httpd/include
|
||||||
|
ln -sfn /usr/lib64/libapr-1.so /user/service/httpd/lib/libapr-1.a
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## FHS 빌드
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec -w /workspace/fhs "$FHS_CONTAINER" bash -lc '
|
||||||
|
set +e
|
||||||
|
for component in arcmond2 cls csagentd fimngd ftsd sh-opendav; do
|
||||||
|
make clean -C "$component" >/dev/null 2>&1
|
||||||
|
echo "===== BUILD ${component} ====="
|
||||||
|
make all -C "$component"
|
||||||
|
echo "===== STATUS ${component} $? ====="
|
||||||
|
done
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실제 결과
|
||||||
|
|
||||||
|
실행 이미지의 GCC는 4.8.5다.
|
||||||
|
|
||||||
|
| 구성요소 | 결과 |
|
||||||
|
| --- | ---: |
|
||||||
|
| `arcmond2` | 2 |
|
||||||
|
| `cls` | 2 |
|
||||||
|
| `csagentd` | 2 |
|
||||||
|
| `fimngd` | 2 |
|
||||||
|
| `ftsd` | 0 |
|
||||||
|
| `sh-opendav` | 2 |
|
||||||
|
|
||||||
|
주요 실패 원인은 `arcmond2`의 `__inet_addr`/`__error` 링크 심볼,
|
||||||
|
`cls`의 `setproctitle`, `csagentd`/`fimngd`의 타입 미정의다.
|
||||||
|
`sh-opendav`는 `all` target이 없다.
|
||||||
|
|
||||||
|
`ftsd` 산출물 확인:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
file fhs/ftsd/src/ftsd
|
||||||
|
file fhs/ftsd/interface/sample/ftsd_test
|
||||||
|
```
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# FHS Rocky Linux 8 빌드
|
||||||
|
|
||||||
|
Rocky Linux 8 컨테이너에서 저장소를 직접 마운트하고 FHS를 빌드한다.
|
||||||
|
|
||||||
|
## 실행 준비와 컨테이너
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
RUN_ID="$(date +%Y%m%d%H%M%S)-$$"
|
||||||
|
FHS_CONTAINER="fhs-rocky8-${RUN_ID}"
|
||||||
|
|
||||||
|
podman pull docker.io/rockylinux/rockylinux:8
|
||||||
|
podman run -d \
|
||||||
|
--name "$FHS_CONTAINER" \
|
||||||
|
--volume "$PWD:/workspace:Z" \
|
||||||
|
--workdir /workspace/fhs \
|
||||||
|
docker.io/rockylinux/rockylinux:8 sleep infinity
|
||||||
|
```
|
||||||
|
|
||||||
|
소스는 복사하지 않고 `-v`로 현재 저장소를 `/workspace`에 마운트한다.
|
||||||
|
|
||||||
|
## 의존성과 고정 경로 준비
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
dnf install -y \
|
||||||
|
findutils gcc gcc-c++ make pkgconf-pkg-config bc \
|
||||||
|
boost-devel openssl-devel sqlite-devel openldap-devel \
|
||||||
|
libpq-devel apr-devel apr-util-devel
|
||||||
|
'
|
||||||
|
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
set -e
|
||||||
|
mkdir -p /user/db/pgsql/lib /user/service/httpd/lib
|
||||||
|
ln -sfn /usr/include /user/db/pgsql/include
|
||||||
|
ln -sfn /usr/lib64/libpq.so /user/db/pgsql/lib/libpq.a
|
||||||
|
ln -sfn /usr/include/apr-1 /user/service/httpd/include
|
||||||
|
ln -sfn /usr/lib64/libapr-1.so /user/service/httpd/lib/libapr-1.a
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## FHS 빌드
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec -w /workspace/fhs "$FHS_CONTAINER" bash -lc '
|
||||||
|
set +e
|
||||||
|
for component in arcmond2 cls csagentd fimngd ftsd sh-opendav; do
|
||||||
|
make clean -C "$component" >/dev/null 2>&1
|
||||||
|
echo "===== BUILD ${component} ====="
|
||||||
|
make all -C "$component"
|
||||||
|
echo "===== STATUS ${component} $? ====="
|
||||||
|
done
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실제 결과
|
||||||
|
|
||||||
|
실행 당시 Rocky Linux 8.10, GCC 8.5.0 환경에서 확인했다.
|
||||||
|
|
||||||
|
| 구성요소 | 결과 |
|
||||||
|
| --- | ---: |
|
||||||
|
| `arcmond2` | 2 |
|
||||||
|
| `cls` | 2 |
|
||||||
|
| `csagentd` | 2 |
|
||||||
|
| `fimngd` | 0 |
|
||||||
|
| `ftsd` | 0 |
|
||||||
|
| `sh-opendav` | 2 |
|
||||||
|
|
||||||
|
`arcmond2`는 `makedev`, `cls`는 `setproctitle`, `csagentd`는
|
||||||
|
`uint64_t` 및 시스템 정보 필드에서 실패했다.
|
||||||
|
`sh-opendav`는 `all` target이 없다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
file fhs/ftsd/src/ftsd
|
||||||
|
file fhs/ftsd/interface/sample/ftsd_test
|
||||||
|
```
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# FHS Rocky Linux 9 빌드
|
||||||
|
|
||||||
|
Rocky Linux 9 컨테이너에서 저장소를 직접 마운트하고 FHS를 빌드한다.
|
||||||
|
|
||||||
|
## 실행 준비와 컨테이너
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
RUN_ID="$(date +%Y%m%d%H%M%S)-$$"
|
||||||
|
FHS_CONTAINER="fhs-rocky9-${RUN_ID}"
|
||||||
|
|
||||||
|
podman pull docker.io/rockylinux/rockylinux:9
|
||||||
|
podman run -d \
|
||||||
|
--name "$FHS_CONTAINER" \
|
||||||
|
--volume "$PWD:/workspace:Z" \
|
||||||
|
--workdir /workspace/fhs \
|
||||||
|
docker.io/rockylinux/rockylinux:9 sleep infinity
|
||||||
|
```
|
||||||
|
|
||||||
|
소스는 복사하지 않고 `-v`로 현재 저장소를 `/workspace`에 마운트한다.
|
||||||
|
|
||||||
|
## 의존성과 고정 경로 준비
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
dnf install -y \
|
||||||
|
findutils gcc gcc-c++ make pkgconf-pkg-config bc \
|
||||||
|
boost-devel openssl-devel sqlite-devel openldap-devel \
|
||||||
|
libpq-devel apr-devel apr-util-devel
|
||||||
|
'
|
||||||
|
|
||||||
|
podman exec "$FHS_CONTAINER" bash -lc '
|
||||||
|
set -e
|
||||||
|
mkdir -p /user/db/pgsql/lib /user/service/httpd/lib
|
||||||
|
ln -sfn /usr/include /user/db/pgsql/include
|
||||||
|
ln -sfn /usr/lib64/libpq.so /user/db/pgsql/lib/libpq.a
|
||||||
|
ln -sfn /usr/include/apr-1 /user/service/httpd/include
|
||||||
|
ln -sfn /usr/lib64/libapr-1.so /user/service/httpd/lib/libapr-1.a
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## FHS 빌드
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman exec -w /workspace/fhs "$FHS_CONTAINER" bash -lc '
|
||||||
|
set +e
|
||||||
|
for component in arcmond2 cls csagentd fimngd ftsd sh-opendav; do
|
||||||
|
make clean -C "$component" >/dev/null 2>&1
|
||||||
|
echo "===== BUILD ${component} ====="
|
||||||
|
make all -C "$component"
|
||||||
|
echo "===== STATUS ${component} $? ====="
|
||||||
|
done
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실제 결과
|
||||||
|
|
||||||
|
실행 당시 Rocky Linux 9.8, GCC 11.5.0 환경에서 확인했다.
|
||||||
|
|
||||||
|
| 구성요소 | 결과 |
|
||||||
|
| --- | ---: |
|
||||||
|
| `arcmond2` | 2 |
|
||||||
|
| `cls` | 2 |
|
||||||
|
| `csagentd` | 2 |
|
||||||
|
| `fimngd` | 0 |
|
||||||
|
| `ftsd` | 0 |
|
||||||
|
| `sh-opendav` | 2 |
|
||||||
|
|
||||||
|
`arcmond2`는 `makedev`, `cls`는 `setproctitle`, `csagentd`는
|
||||||
|
`uint64_t` 및 시스템 정보 필드에서 실패했다.
|
||||||
|
`sh-opendav`는 `all` target이 없다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
file fhs/ftsd/src/ftsd
|
||||||
|
file fhs/ftsd/interface/sample/ftsd_test
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user