브라우저에 도메인 이름을 치면,

네임서버를 거쳐 도메인 이름은 IP 주소로 변환이 됩니다.


그렇다면 브라우저에 "localhost"를 치면,

"localhost"도 네임서버를 통해 IP 주소로 변환되는 것일까요?


레드헷/우분투 계열에서는 /etc/hosts 파일을 우선적으로 참고하여,

네임서버를 아이피주소로 바꿉니다.



브라우저나 터미널에서 도메인 이름을 치면 으레 네임서버에서 아이피를 얻어오게 됩니다.

요즘 환경에서 네임서버를 사용할 수 '없는' 상황은 드물기 때문에 hosts 파일의 존재감이 미미합니다.


하지만, 인터넷 역사의 극초반부에는 네임서버 같은게 있을 리가 없었죠.

네임서버는 1984년에 처음 만들어졌으니,

그 전에는 아이피 주소로 접근하거나 각자 매핑 테이블을 관리했죠.


매핑테이블은 txt 파일 형식으로 공유를 했는데, 그 파일 이름이 hosts.txt 였습니다.

이제는 네임서버가 그 모든 걸 관장하니 hosts 파일을 유지보수 + 공유할 이유가 없어졌습니다.


하지만, 호스트 컴퓨터가 네임서버에 접근할 수 없는 상황에서,

도메인 이름(호스트 이름)으로 접근이 필요한 경우도 있겠지요?

아니면 네임서버에 등록되지 않은 도메인 네임(호스트 이름)이 있을 수도 있겠네요.


그럴 때는 /etc/hosts 파일을 사용합니다.

/etc/hosts에서 매핑된 도메인 이름과 IP 주소를 사용합니다.


$ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    storycompiler


매핑 테이블에 특별한 문법은 없고,

IP주소(빈칸)도메인이름(빈칸)alias

위처럼만 써주면 됩니다.

별칭으로 사용하는 alias는 생략해도 됩니다.


hosts 파일을 수정한 뒤에는 그 내용을 다시 메모리에 올려놓아야하는데요,

network 데몬을 재실행하면 됩니다.


$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.


이상으로 /etc/hosts에 대한 설명을 마치겠습니다.

그럼 좋은 하루 보내세요~

끝_


* References

http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap9sec95.html

https://en.wikipedia.org/wiki/Hosts_%28file%29

리눅스 환경에서 C로 코딩을 할 때, gcc는 좋은 '벗'이 되어 줍니다.

gcc 컴파일 과정을 지켜보며 error도 잡고 warning도 잡지요.


물론, 아주 드물게 '결코 잡을 수 없는' warning도 있습니다.

('결코 잡을 수 없는' warning이 무엇인지는 차후에 다시 포스팅하겠습니다)

하지만, 기본적으로는 warning은 컴파일 중에 눈을 끊임없이 현혹시키기에 제거해야 마땅합니다.



gcc는 끊임없이 버전을 업데이트해가며 새로운 기능을 탑재하고 있습니다.

새로운 기능 대부분은 기능개선이나 개발자 편의증진을 위해 추가하지만,

간헐적으로 수많은 논쟁을 불러일으키는 기능도 있기 마련이지요.


gcc 4.3에 추가된 "-Wparentheses"는,

이상없던 코드에서 warning이 검출되게 하여 격렬한 논쟁을 불러일으켰습니다.

warning: suggest parentheses around assignment used as truth value [-Wparentheses]

            if (tmp = strtok(NULL, "_"))

이 warning은 if 문 안에 '='(등식)이 있으면,

assignment인지 "=="의 오타인지 헛갈릴 수 있으니 분명히 정리하라는 경고이죠.


그 동안은 조건식에서 변수에 대입함과 동시에 괄호없이 변수의 참/거짓 값을 사용할 수 있었는데요,

이제부터는 조건식 내에 대입(=)이 이뤄지면,

괄호를 하나 더 사용하여 정말 대입(=)이 맞는지 확인해야합니다.


 if (tmp = strtok(NULL, "_")) ...

위의 경우라면, 아래처럼 변경하면 되겠지요.

 if ((tmp = strtok(NULL, "_")))

혹은

 if ((tmp = strtok(NULL, "_")) != NULL)

위처럼 사용하면 됩니다.


-Wall 옵션이 아래 나열한 수많은 옵션을 자동으로 추가하기 때문에,

개발자가 직접 추가하지도 않은 parentheses 옵션의 경고 문구가 나타났던 겁니다.

          -Waddress  
          -Warray-bounds (only with -O2) 
          -Wc++11-compat 
          -Wchar-subscripts 
          -Wenum-compare (in C/ObjC; this is on by default in C++)
          -Wimplicit-int (C and Objective-C only)
          -Wimplicit-function-declaration (C and Objective-C only)
          -Wcomment 
          -Wformat  
          -Wmain (only for C/ObjC and unless -ffreestanding) 
          -Wmaybe-uninitialized
          -Wmissing-braces (only for C/ObjC)
          -Wnonnull 
          -Wopenmp-simd
          -Wparentheses 
          -Wpointer-sign 
          -Wreorder  
          -Wreturn-type 
          -Wsequence-point 
          -Wsign-compare (only in C++) 
          -Wstrict-aliasing 
          -Wstrict-overflow=1 
          -Wswitch 
          -Wtrigraphs 
          -Wuninitialized 
          -Wunknown-pragmas 
          -Wunused-function 
          -Wunused-label    
          -Wunused-value    
          -Wunused-variable 
          -Wvolatile-register-var

(가운데쯤에서 parentheses에 대한 항목이 보이네요.)


조건문 내의 조건식에서 뿐만 아니라 아래와 같은 중첩 조건문에서도 경고 메시지를 받을 수 있습니다.

            if (a)
              if (b)
                foo ();
            else
              bar ();

위와 같은 경우에 else는 어느 if 문인지 불확실하겠지요?

코드를 분명하게 이해하기 위해 괄호를 써서 범위를 지정해야 합니다.


오늘은 여기까지 하겠습니다.

그럼 좋은 하루 보내세요.

끝_



* References

https://issues.apache.org/jira/browse/STDCXX-791

http://stackoverflow.com/questions/5476759/compiler-warning-suggest-parentheses-around-assignment-used-as-truth-value

https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Warning-Options.html


최신 버전 Ubuntu 15.04 64비트에 Tizen 2.3 SDK를 설치해보았습니다.

올초에 나온 Tizen 2.3 SDK는 14.04까지 공식지원하고 있습니다.

다행히 15.04에서도 SDK의 기본 기능을 사용하는데 문제는 없습니다.


하지만, 드디어 에러를 만나게 됩니다.

Tizen SDK 내에 edc 파일을 편집할 때 사용하는 enventor라는 툴이 실행이 안되더군요.

이번 포스팅은 enventor를 '임시'로 사용할 수 있는 방법을 공유합니다.



안녕하세요, Tizen 개발자 윤진입니다.


이번 포스팅은 타이젠 2.3 SDK에서 공식지원하지 않는 Ubuntu 15.04 환경에서 벌어진 일을 다룹니다.

Ubuntu 14.04에서는 위와 같은 에러 없이 Eventor를 사용하실 수 있습니다.

하지만, 최신 버전의 우분투에서 타이젠 SDK를 사용하고 싶으시다면 이번 포스팅을 참고해주세요.



SDK에서 edc 파일을 편집하기 위해 파일을 더블클릭하면 위와 같은 팝업창이 뜹니다.

팝업 내용은 edc 편집툴인 enventor를 런칭하지 못한다는 내용인데요,

에러로그 뷰를 살펴보라고 하지만, 에러로그 뷰에는 별 다른 내용이 없습니다.

그래서 이를 해결하기 위해서 enventor를 커맨트창에서 직접 실행해보았습니다.


$ ~/tizen-sdk/tools/enventor/bin/enventor 
/home/storycompiler/tizen-sdk/tools/enventor/bin/enventor: error while loading shared libraries: libelementary.so.1: cannot open shared object file: No such file or directory


elementary 라이브러리가 없어서 enventor가 실행이 안되는 것이었군요.

하지만, 타이젠 SDK에는 elementary 라이브러리가 포함되어 있습니다.


$ ls ~/tizen-sdk/tools/efl-tools/lib/libelementary.so.1
/home/storycompiler/tizen-sdk/tools/efl-tools/lib/libelementary.so.1

위의 위치를 보시면 EFL에서 제공하는 다수의 라이브러리를 확인하실 수 있습니다.

물론 elementary도 찾을 수 있지요.

라이브러리가 있는데 찾지 못하는 것은 라이브러리 위치가 등록되어있지 않기 때문입니다.

타이젠 라이브러리 디렉토리를 등록하기 위해 /etc/ld.so.conf.d 디렉토리에 tizen.conf 파일을 새로 만듭니다.

그 안에 위의 라이브러리 디렉토리를 추가해둡니다.


$ cat /etc/ld.so.conf.d/tizen.conf
/home/storycompiler/tizen-sdk/tools/efl-tools/lib


그리고 다시 enventor를 실행해봅니다.

이번에는 아래처럼 libgnutls 라이브러리가 없다고 나옵니다.


$ ~/tizen-sdk/tools/enventor/bin/enventor 
/home/storycompiler/tizen-sdk/tools/enventor/bin/enventor: error while loading shared libraries: libgnutls.so.26: cannot open shared object file: No such file or directory


libgnutls.so.26 버전은 여기에서 다운로드 받을 수 있습니다.

위의 사이트가 열리지 않을 경우에 대비하여 64비트 우분투 15.04용 rpm을 첨부합니다.

lib64gnutls26-2.12.14-2-mdv2012.0.x86_64.rpm

아래와 같이 libgnutls.so.26 버전을 설치합니다.

여기에서는 64비트 환경에 맞춰서 64비트용의 라이브러리를 설치하였습니다.


$ sudo rpm -Uvh --force --nodeps lib64gnutls26-2.12.14-2-mdv2012.0.x86_64.rpm
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
경고: lib64gnutls26-2.12.14-2-mdv2012.0.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 26752624: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:lib64gnutls26-2.12.14-2          ################################# [100%]

그리고 다시 enventor를 실행해봅니다.

이번에는 libgcrypt.so.11 파일이 없다고 나오네요.

$ ~/tizen-sdk/tools/enventor/bin/enventor
/home/storycompiler/tizen-sdk/tools/enventor/bin/enventor: error while loading shared libraries: libgcrypt.so.11: cannot open shared object file: No such file or directory


따라서 이번에도 libgcrypt.so.11 버전을 찾아서 받습니다.

위의 버전은 여기에서 다운로드 받으실 수 있습니다.

위의 사이트가 열리지 않을 경우에 대비하여 64비트 우분투 15.04용 rpm을 첨부합니다.

lib64gcrypt11-1.5.4-5.mga5.x86_64.rpm

$ sudo rpm -Uvh --force --nodeps lib64gcrypt11-1.5.4-5.mga5.x86_64.rpm
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
경고: lib64gcrypt11-1.5.4-5.mga5.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 80420f66: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:lib64gcrypt11-1.5.4-5.mga5       ################################# [100%]


libgcrypt는 /usr/lib64에 설치가 됩니다.

하지만, 위의 위치는 ld.conf에 등록된 위치가 아닐 수 있습니다.

$ ls /usr/lib64/libgcrypt.so.11
/usr/lib64/libgcrypt.so.11


따라서 좀 전에 elementary를 등록하기 위해 만든 tizen.conf에 lib64도 등록해둡니다.

$ cat /etc/ld.so.conf.d/tizen.conf 
/home/storycompiler/tizen-sdk/tools/efl-tools/lib
/usr/lib64
$ sudo ldconfig


그리고 다시 enventor를 실행하면 이번엔 libtasn1.so.3이 없다는 에러가 나옵니다.

$ ~/tizen-sdk/tools/enventor/bin/enventor 
/home/storycompiler/tizen-sdk/tools/enventor/bin/enventor: error while loading shared libraries: libtasn1.so.3: cannot open shared object file: No such file or directory


이번에도 libtasn1.so.3을 여기에서 다운로드 받습니다.

위의 사이트가 열리지 않을 경우에 대비하여 64비트 우분투 15.04용 rpm을 첨부합니다.

libtasn1-3-1.2-31.2.x86_64.rpm

$ sudo rpm -Uvh --force --nodeps libtasn1-3-1.2-31.2.x86_64.rpm 
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
경고: libtasn1-3-1.2-31.2.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 92fbd4a7: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:libtasn1-3-1.2-31.2              ################################# [100%]


위의 파일마저 제대로 설치하였다면, 이제는 enventor를 실행할 수 있습니다.


자, 이제 다시 개발의 재미에 빠져보시죠.

그럼 좋은 하루 보내세요~

끝_


* References

http://rpmfind.net/linux/rpm2html/search.php?query=libgnutls.so.26%28%29%2864bit%29

http://rpmfind.net/linux/rpm2html/search.php?query=libgcrypt.so.11%28%29%2864bit%29

http://rpm.pbone.net/index.php3/stat/4/idpl/23618373/dir/redhat_el_5/com/libtasn1-3-1.2-31.2.x86_64.rpm.html

유닉스 역사로 따지자면, 쉘은 태고적부터 존재하였습니다.

그 이후 쉘은 필요에 따라- 쓰임에 따라- 다양한 모습으로 진화하였습니다.

bash, ash, csh, ksh, tcsh, zsh, ...

적자생존에서 살아남은 쉘도 있고 이제는 기억에서만 희미하게 남은 쉘도 있습니다.


그 중에서 태초부터 존재하였던 Bourne shell에 대해 몇 가지 이야기를 해보려고 합니다.

1969년 탄생한 유닉스 보다 한 발 늦은 1974년에 나왔지만,

이제는 검은 터미널에 흰 글씨 자체가 유닉스 계열의 얼굴이 되었지요.

 

 

shell을 먼저 영어사전에서 찾아보겠습니다.

 

'껍데기'

알맹이인 운영체제와 사용자가 만나는 곳이 껍데기, 곧 쉘입니다.

어려운 신조어를 사용하지 않고 핵심개념으로 쉘을 작명한 센스가 엿보입니다.

 

쉘은 전통적으로 Unix 계열의 운영체제에서 운영체제와 사용자가 소통하는 공간이었습니다.

1974년에 Stephen Bourne이 만든 이래에 2015년 현재까지 사용되고 있습니다.

40년이 넘도록 사랑받고 있는 몇 안되는 프로그램이지요.

이후 다양한 쉘이 나오면서 처음 나온 쉘은 자연스럽게 개발자 이름을 따서 본쉘이라고 부르게 되었습니다.

(Bourne쉘 보다는 '本'쉘(근본이 되는 쉘)로 이름을 잊지 않으려고 했던 기억이 나네요.)


고령인 본쉘은 이후 시대에 나온 쉘과는 몇가지 차이가 있습니다.

이후 시대에 나온 쉘이 본쉘에서 제공하지 않는 기능을 추가한 셈이지요.

본쉘에 없는 기능을 하나씩 되짚어 보겠습니다.


- 자동완성기능 : 터미널에서 '탭'으로 디렉토리/파일명을 완성하는 기능

   터미널을 사용하며 자동완성기능을 수없이 사용하고 있습니다.

   디렉토리 경로나 파일명을 외울 필요 없이 두어글자만 치고 탭을 누르면 자동으로 완성되지요.

   하지만, 이렇게 편리한 기능이 애초에 있었던 것은 아닙니다.

   본쉘에서는 정확한 경로명과 파일명을 직접 입력해야 명령을 수행할 수 있었습니다.

   기다란 경로와 파일명을 타이핑했는데 오타가 있어서 실행이 안되는 경우가 빈번하였겠죠.

   이런 짜증나는 무수한 상황들이 '자동완성기능'을 낳았습니다.


- 명령라인 수정기능 : 방향키를 이용하여 좌우로 이동&수정하는 기능

   'Hell world' 문장을 적다가 'o'를 빼먹었다면 좌우 커서로 'o'가 있는 자리로 돌아가서 수정할 수 있습니다.

   하지만, 본쉘에서는 문장 중간으로 돌아가 알파벳을 더하거나 뺄 수 없었죠.

   애당초 그 시대에는 방향키조차 없었어요.

   그래서 이후에 나온 쉘들은 키조합으로 명령라인 수정기능을 제공하였습니다.

   Ctrl - B는 이전으로 커서이동, Ctrl - F는 다음으로 커서이동하도록 기능이 추가되었죠.

   상대적으로 최근에 나온 쉘들은 방향키로 이동이 가능하지요.


- 명령 히스토리 : 쉘에서 사용한 명령어 관리

   커맨드 라인에서 history를 치면 그 동안 사용한 명령어가 나옵니다.

   상당히 유용한 기능입니다.

   history를 보고 이전에 사용한 명령어를 바로 실행할 수도 있습니다.


- 잡 컨트롤 : 백그라운드 프로세스를 관리하는 기능

   ps / kill / jobs / bg / fg와 같은 백그라운드 프로세스를 관리하는 툴이 미비하였습니다.

   현재에 이르러서 이러한 기능들은 너무나 유용하기 때문에,

   태초의 본쉘을 제외하고 대부분의 다른 쉘들은 대부분 탑재하고 있습니다.


위에 적혀있는 기능들은 본쉘에 '탑재되지 않은' 기능 중에 대표적인 미탑재 기능입니다.

현대에 사용하는 쉘에서는 어느 하나 놓치기 어려운 기능입니다.


                      Bourne  C    TC   Korn   BASH                         sh   csh  tcsh   ksh   bash ______________________________________________________ Programming language   Yes  Yes   Yes   Yes   Yes Shell variables        Yes  Yes   Yes   Yes   Yes Command alias          No   Yes   Yes   Yes   Yes Command history        No   Yes   Yes   Yes   Yes Filename completion    No   Yes*  Yes   Yes*  Yes Command line editing   No   No    Yes   Yes*  Yes Job control            No   Yes   Yes   Yes   Yes ______________________________________________________

* Reference : http://www.cis.rit.edu/class/simg211/unixintro/Shell.html


그렇다면 본쉘이 한 것은 무엇일까요?

하지 않은 것 외에는 전부 다 해놓았습니다.

본쉘은 모든 쉘의 토대가 되는 기본 원칙을 '아주' 견고하게 다져 놓았습니다.

'단순하지만, 강력하게' 동작하도록.


- 프롬프트

   프롬프트는 쉘이 보여주는 시작이자 끝입니다.

   본쉘에서 이 시작과 끝을 다 만들어놓았습니다. :)

   Current working directory를 알 수 있고, 프롬프트 모양으로 root와 일반 사용자 구분할 수도 있습니다.

   본쉘에서부터 프롬프트의 모양으로 root와 일반 사용자를 구분지었습니다.

   '#'는 루트권한을 가진 사용자에게만 적용하고,

   '$'는 일반 사용자에게 노출하였습니다(csh과 tcsh은 '%').

   이 부분은 그 때나 지금이나 동일합니다.

   이는 사소한 예일지는 모르겠으나 수많은 유닉스 계열 사용자를 '길들였습니다'.


- 스크립트

   쉘 스크립트에 대해서는 차차 포스팅하겠습니다.

   본쉘에서 이룩한 토대를 보면, 여지껏 본쉘이 살아남은 이유를 실감할 수 있을 겁니다.

   본쉘 이후 등장한 쉘들은 저마다 새로운 syntax가 추가하여 본쉘과 호환되지 않는 문법도 생겼습니다만,

   본쉘에서 제공하는 스크립트만으로도 충분히 강력한 기능을 수행할 수 있습니다.


- 수행기본단위

   쉘은 '줄'단위로 해석하여 명령을 수행합니다.

   프롬프트에서 명령을 읽을 때도,

   스크립트파일을 열어 읽을 때도 한 줄씩 받아 읽습니다.

   한 줄이 하나의 완결된 동작이지요.

   지금에서야 아주 당연한 모습일 수도 있지만,

   이러한 '제한'이 '규약' 혹은 '원칙'이 되어 광범위하게 쓰이게 되었습니다.


스크립트 문법은 차차 살펴보도록 하겠습니다.

웹에 좋은 자료들이 많기 때문에 기존과 똑같은 방법으로 지식을 나열하는 것은 의미가 없어보이네요.

나름의 방법을 찾아봐야겠습니다.


그럼 좋은 하루 보내세요~

끝_


* References

https://en.wikipedia.org/wiki/Bourne_shell

http://www.linfo.org/shell.html

http://www.grymoire.com/Unix/Sh.html#uh-3

http://www.cis.rit.edu/class/simg211/unixintro/Shell.html

우분투 15.04가 세상에 태어난지 한 분기가 지나고 있습니다.

집에 설치한 지는 이틀이 지났군요.

이틀 동안 우분투 15.04에서만 볼 수 있는 다양한 문제 상황을 접할 수 있었습니다.


삼바설정툴도 문제를 일으키네요.

우분투를 처음 사용할 때부터 함께 해온 system-config-samba도 실행이 안됩니다.

GUI로 실행하면 그냥 먹통이 되네요.

GUI 툴이 크래쉬가 난다고 하여, 특별한 노티가 발생하진 않습니다.

그래서 한참을 기다렸습니다만 크래쉬가 나는 상황이었습니다.

터미널에서 실행하면 바로 죽는 것을 확인할 수 있네요.



우선, 삼바설정과 관련된 내용은 아래 포스팅을 참고하세요.

[Ubuntu/Linux] 삼바서버, 이렇게 설정하면 된다


우분투 15.04가 아닌 분들은 걱정하실 필요가 없습니다.

오직 15.04에서 삼바설정툴을 실행할 때만 발생합니다.


삼바서버설정툴을 아래와 같이 다운로드 받아야겠지요?

$ sudo apt-get install system-config-samba
패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libatk-wrapper-java libatk-wrapper-java-jni libgconf2-4 libgif4 libice-dev
  libpthread-stubs0-dev libsm-dev libx11-dev libx11-doc libxau-dev libxcb1-dev
  libxdmcp-dev libxt-dev python-dateutil python-deltarpm python-keyring
  python-secretstorage x11proto-core-dev x11proto-input-dev x11proto-kb-dev
  xorg-sgml-doctools xtrans-dev
Use 'apt-get autoremove' to remove them.
다음 패키지를 더 설치할 것입니다:
  libglade2-0 libuser1 python-glade2 python-gtk2 python-libuser
제안하는 패키지:
  python-gtk2-doc
다음 새 패키지를 설치할 것입니다:
  libglade2-0 libuser1 python-glade2 python-gtk2 python-libuser
  system-config-samba
0개 업그레이드, 6개 새로 설치, 0개 제거 및 2개 업그레이드 안 함.
1,011 k바이트 아카이브를 받아야 합니다.
이 작업 후 8,799 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y


그리고 바로 실행을 시켜보면 에러메시지를 확인하실 수 있습니다.

$ sudo system-config-samba 

(system-config-samba:4881): IBUS-WARNING **: The owner of /home/storycompiler/.config/ibus/bus is not root!
Traceback (most recent call last):
  File "/usr/sbin/system-config-samba", line 45, in <module>
    mainWindow.MainWindow(debug_flag)
  File "/usr/share/system-config-samba/mainWindow.py", line 121, in __init__
    self.basic_preferences_win = basicPreferencesWin.BasicPreferencesWin(self, self.xml, self.samba_data, self.samba_backend, self.main_window)
  File "/usr/share/system-config-samba/basicPreferencesWin.py", line 97, in __init__
    self.admin = libuser.admin()
SystemError: could not open configuration file `/etc/libuser.conf': 그런 파일이나 디렉터리가 없습니다


중요한 에러는 제일 마지막 줄에 표시가 되었네요.

/etc/libuser.conf 설정파일이 없기 때문에 에러로 죽고 있습니다.

파일 이름만 봐서는 유저설정파일로 보이는데,

삼바설정툴에서 설정 파일의 존재를 따져보아 없으면 추가하는 루틴을 넣었으면 더 좋지 않았을까 싶네요.


간단하게 없는 파일을 생성해봅니다.

$ sudo touch /etc/libuser.conf


libuser.conf 파일이 생성되면 이제 삼버설정툴을 실행할 수 있습니다.

$ sudo system-config-samba


너무... 쉬워서 허무하셨을지도 모르겠네요.

그럼 좋은 하루 보내세요~

끝_


  1. 누더기 2016.12.24 16:28 신고

    간만에 삼바 설치하다가 식겁했는데 덕분에 금방 해결했네요. 감사합니다~

  2. 도움이 되셨다니 다행입니다 :)

  3. 쌈바의 여인 2019.11.04 15:50

    감사합니다. 덕분에 해결했습니다. ㅎㅎ

+ Recent posts