GNU bash 버전 낮추는 방법이 있을까요

philnet의 이미지

원래는 CentOS를 주로 사용하고 있습니다. 최근 회사에서 업무용으로 받게 된 HP PC에 CentOS 5.3 설치하는데, SATA HDD 설치하는데 문제(SATAII 하드가 sda 가 아니라 hda로 잡히면서 HDD writing 성능이 너무 떨어짐)가 발생, Fedora의 가장 최신 버전인 Fedora 11을 설치하였습니다. CentOS 에서 문제가 된 HDD를 문제없이 잡더군요.

여기까지는 좋았습니다만, 본 업무인 embedded linux 커널을 build 하는 과정에서 이상한 에러가 발생했습니다. 원래는 make를 수행하는 과정에서 특정 shell 를 실행시켜 환경 변수를 만든 후, 이 환경 변수에 따라 후속 build가 이루어지는 데, Fedora11에서 build하니까, 환경 변수가 빈 값이 되면서 이후 build가 정상적으로 수행되지 않는 겁니다.

몇 가지를 의심하다가, 혹시나 하고 Fedora11의 GNU bash 버전을 확인했습니다. 4.0.16 이더군요. 주로 작업하던 CentOS 나 Fedora 이전 버전에는 GNU bash 버전이 3.2.x 인 것으로 보아, GNU bash 버전이 너무 높은 게 아닌가 하는 의심이 들었습니다. bash의 버전을 한번 낮춰 보고 싶은데, 어떻게 해야 할 지 몰라서 질문 드립니다.

GNU bash 버전 낮추는 방법이 있을까요? 가능은 한 일일까요?

사소한 답변이라도 주신다면 감사하겠습니다.

bushi의 이미지

정말로 bash 문제가 맞는지 다시 확인해보시고요.
커널 크로스 컴파일 때는 SUBARCH, CROSS_COMPILE 에 신경쓰면 됩니다.

fedora11이 없으니...
거꾸로 fedora10 에서 fedora11 의 bash-4 를 설치하는 방법을 설명하겠습니다.

fedora11 updates repo. 엔 bash 가 없고 release repo. 에만 있으므로 release 의 것을 가져옵니다.

wget <a href="http://mirrors.tummy.com/pub/fedora.redhat.com/fedora/linux/releases/11/Fedora/source/SRPMS/bash-4.0-6.fc11.src.rpm
--2009-06-18" rel="nofollow">http://mirrors.tummy.com/pub/fedora.redhat.com/fedora/linux/releases/11/Fedora/source/SRPMS/bash-4.0-6.fc11.src.rpm
--2009-06-18</a> 18:02:05--  <a href="http://mirrors.tummy.com/pub/fedora.redhat.com/fedora/linux/releases/11/Fedora/source/SRPMS/bash-4.0-6.fc11.src.rpm
Resolving" rel="nofollow">http://mirrors.tummy.com/pub/fedora.redhat.com/fedora/linux/releases/11/Fedora/source/SRPMS/bash-4.0-6.fc11.src.rpm
Resolving</a> mirrors.tummy.com... 66.35.36.129
Connecting to mirrors.tummy.com|66.35.36.129|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6299203 (6.0M) [application/octet-stream]
Saving to: `bash-4.0-6.fc11.src.rpm'
 
100%[======================================>] 6,299,203    796K/s   in 9.1s    
 
2009-06-18 18:02:15 (673 KB/s) - `bash-4.0-6.fc11.src.rpm' saved [6299203/6299203]
[bushi@rose ~]$

의존성을 봅니다

[bushi@rose ~]$ rpm -qRvp bash-4.0-6.fc11.src.rpm 
경고: bash-4.0-6.fc11.src.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID d22e77f2
texinfo  
bison  
ncurses-devel  
autoconf  
gettext  
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
[bushi@rose ~]$ 

빌드에 필요한 패키지들을 설치합니다. 제 경우엔 이미 다 설치가 되어 있었습니다.

[bushi@rose ~]$ sudo yum install texinfo bison ncurses-devel autoconf gettextLoaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
Excluding mirror: <a href="http://ftp.cs.pu.edu.tw" rel="nofollow">ftp.cs.pu.edu.tw</a>
Excluding mirror: <a href="http://ftp.nchu.edu.tw" rel="nofollow">ftp.nchu.edu.tw</a>
Excluding mirror: <a href="http://ftp.isu.edu.tw" rel="nofollow">ftp.isu.edu.tw</a>
Excluding mirror: free.nchc.org.tw
Excluding mirror: <a href="http://ftp.mirror.tw" rel="nofollow">ftp.mirror.tw</a>
Excluding mirror: opensource.nchc.org.tw
Excluding mirror: <a href="http://ftp.twaren.net" rel="nofollow">ftp.twaren.net</a>
 * fedora: <a href="http://ftp.jaist.ac.jp" rel="nofollow">ftp.jaist.ac.jp</a>
 * non-free: mirror.yandex.ru
 * rpmfusion-free: mirror.yandex.ru
 * rpmfusion-free-updates: mirror.yandex.ru
 * rpmfusion-nonfree: mirror.yandex.ru
 * rpmfusion-nonfree-updates: mirror.yandex.ru
Excluding Packages in global exclude list
Finished
Setting up Install Process
Package texinfo-4.12-4.fc10.i386 already installed and latest version
Package bison-2.3-5.fc9.i386 already installed and latest version
Package ncurses-devel-5.6-20.20080927.fc10.i386 already installed and latest version
Package autoconf-2.63-1.fc10.noarch already installed and latest version
Package gettext-0.17-10.fc10.i386 already installed and latest version
Nothing to do
[bushi@rose ~]$ 

빌드합니다.

[bushi@rose ~]$ rpmbuild --rebuild --target=i686 bash-4.0-6.fc11.src.rpm 
...
...
작성: /home/bushi/PKGS/RPMS/i686/bash-4.0-6.fc10.i686.rpm
작성: /home/bushi/PKGS/RPMS/i686/bash-doc-4.0-6.fc10.i686.rpm
작성: /home/bushi/PKGS/RPMS/i686/bash-debuginfo-4.0-6.fc10.i686.rpm
실행 중(%clean): /bin/sh -e /var/tmp/rpm-tmp.bJWBOO
+ umask 022
+ cd /home/bushi/PKGS/BUILD
+ cd bash-4.0
+ rm -rf /home/bushi/PKGS/BUILDROOT/bash-4.0-6.fc10.i386
+ exit 0
실행 중(--clean): /bin/sh -e /var/tmp/rpm-tmp.0CSeI8
+ umask 022
+ cd /home/bushi/PKGS/BUILD
+ rm -rf bash-4.0
+ exit 0
[bushi@rose ~]$

fedora11 에서 fedora10 의 bash-3 를 가져다하려면 release repo. 가 아니라 updates repo. 부터 찾아보시는 게 좋구요.
혹시 fedora11 의 다른 패키지가 bash>=4.0 에 의존성이 걸려있다면 설치하는 것이 위험합니다.

어쨌든 전 부담없이 설치해봤습니다. 뭐, 업데이트가 귀찮으면 다시 다운그레이드하면 되니.

[bushi@rose ~]$ cd /home/bushi/PKGS/RPMS/i686/
[bushi@rose i686]$ sudo rpm -Uvh bash-4.0*
...
[bushi@rose i686]$ bash --version
GNU bash, version 4.0.16(1)-release (i686-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[bushi@rose i686]$ 

아무튼 설치 후에 커널 크로스컴파일 해봤는데, make 에 -j 옵션을 사용하기가 무척 꺼려지는군요.
bash-3 로 다시 내려가야 할 듯.

OTL

philnet의 이미지

SUBARCH, CROSS_COMPILE 쪽은 (chipset 업체에서 제공해 준 tool만 사용하던 관계로) 솔직히 잘 모르고 있었는데, 해당 키워드로 검색을 좀 해보고 나니까, 이쪽 관련된 부분을 한번 찾아 보는 게 좋겠다는 생각이 듭니다.

그리고 yum 이나 rpm 에 대해 조금 더 알게 되었고, bash 버전 바꾸는 것에 대해 대략적이나마, 어떻게 시도해 봐야 할 지 감이 잡히게 된 것 같습니다. 감사드립니다.

bahs 다운 그레이드는 시간이 좀 걸리더라도, virtualbox에서 먼저 테스트를 해 봐야 할 것 같습니다.

다시 한 번 감사 드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.