Windows 10에 WSL2를 설치하고 난 후, 리브레오피스의 소프트웨어 번역을 어떻게 설명을 할까 난관에 빠지게 됩니다.

그냥, "CAT(Computer Aided Translation)도구인 weblate에 번역하세요 하면 성의가 없어 보일것 같이 보여서, 원리에 대하여는 GNU Hello 프로젝트의 예를 들어서 이야기할 예정입니다.

GNU Hello는 hello라고 터미널에서 입력하면 문자열로 영어 설정으로는 Hello, World!, 한국어 설정으로는 안녕하세요, 여러분!을 출력해주는 프로그램입니다.

아래는 GNU Hello 홈페이지 링크입니다.

GNU Hello Project - https://www.gnu.org/software/hello/

여기서 WSL2으로 우분투Ubuntu를 사용해보겠습니다 (저는 개인적으로 오픈수세openSUSE를 사용하지만, 많은 한국의 리눅스 사용자들은 우분투Ubuntu를 사용하니, 많은 이들이 리눅스에서 테스트할 수 있게 우분투 기준으로 설명합니다.)

일단, Ubuntu에서 GNU Hello를 설치해봅니다

$ sudo apt -y install hello

설치가 완료되면, GNU Hello를 실행해봅시다.

$ hello
Hello, world!

여기서, WSL2를 최초로 설치하면 기본이 영어로 되어 있습니다.
동아시아(CJK) 문자가 출력된 번역된 문장을 보려면, 언어팩을 설치해야합니다.

참고, 우분투(Ubuntu) 언어 팩 목록

  • 한국어 언어 팩 language-pack-ko
  • 일본어 언어 팩 language-pack-ja
  • 중국어(간체) 언어팩 language-pack-zh-hans
  • 중국어(번체) 언어팩 language-pack-zh-hant
$ sudo apt -y install language-pack-ko language-pack-ja language-pack-zh-hans language-pack-zh-hant

우분투 및 오픈수세 등 리눅스 배포판에서 언어 설정 패키지를 설치후, 터미널에서 언어 별 환경설정을 하고 실행하면 다음과 같이 나옵니다.

$ LANG=en_US.UTF-8 hello
Hello, world!
$ LANG=ko_KR.UTF-8 hello
안녕하세요, 여러분!
$ LANG=ja_JP.UTF-8 hello
こんにちは、世界!
$ LANG=zh_CN.UTF-8 hello
世界你好!
$ LANG=zh_TW.UTF-8 hello
哈囉,大家好!

자유오픈소스 소프트웨어(FLOSS)의 번역은 po파일의 번역(飜譯, Translation)입니다.

GNU의 gettext 라이브러리를 이용하여 po파일에 들어간 번역문을 출력하는 것입니다.

GNU프로젝트의 하나인 hello는 로케일(Locale)설정에 따라서 로케일에 맞는 po파일 내용을 출력하는 것입니다.

그래서, KDE, GNOME, 리브레오피스등 소프트웨어의 번역은 po파일 내용을 번역하여 보여주는 것이라고 보면 됩니다.

상세한 내용은 아래의 슬라이드쉐어 링크 참조하면 됩니다.

오픈소스 번역 기여하기 v3

https://www.slideshare.net/changwoo/v3-114830838

 

오픈소스 번역 기여하기 v3

오픈소스 번역 기여하기 그놈 3.30 번역 모임 류창우 <cwryu@debian.org></cwryu@debian.org>

www.slideshare.net

 

Buy me a coffeeBuy me a coffee

윈도우10(Windows 10)에서 WSL2설정 후 우분투(Ubuntu) 20.04를 설치하였습니다. 윈도우10에서 우분투를 설치했으니 어디에 활용을 해볼까 고민하던 찰나, 아래의 2개의 글을 보게 됩니다.

이 글을 보고, WSL2에서 GPU도 지원되는데, 설마 리브레오피스(LibreOffice) 실행도 당연히 지원 하겠지? 란 생각으로
WSL2환경에 설치한 우분투(Ubuntu) 20.04에 리브레오피스 빌드 및 실행을 해보았습니다. (결국 실행은 되더군요)

WSL2의 우분투(Ubuntu) 20.04에 리브레오피스(LibreOffice)를 빌드 하는 내용은 아래의 내용을 참조하였습니다.
Building LibreOffice on Linux and *BSD systems: Tips and Tricks

일단 리브레오피스(libreoffice)에 의존성을 가진 패키지 모두 설치를 아래의 명령어로 해보았습니다.

$ sudo apt build-dep libreoffice

의존성 있는 패키지 모두 설치후, 리브레오피스(LibreOffice)저장소를 복제합니다.

$ git clone https://gerrit.libreoffice.org/core libreoffice

libreoffice 디렉토리에 복제를 하였으면. libreoffice디렉토리로 이동합니다.

$ cd libreoffice

libreoffice디렉토리로 이동하였으면 아래와 같이 빌드환경 설정을 해주는 스크립트를 아래와 같은 명령어로 실행하였습니다.

./autogen.sh --with-locales="ko" --with-vendor="me" --disable-werror --with-build-version="Built by me" --with-lang="ko" --enable-dbgutil

빌드 실행시 아래와 같이 오류가 나오면 libkrb5-dev 패키지를 설치햅니다

checking for library containing krb5_sendauth... no
configure: error: could not find function 'krb5_sendauth' required for Kerberos 5
Error running configure at ./autogen.sh line 299.

libkrb5-dev 패키지는 아래와 같은 명령어로 설치합니다.

$ sudo apt install libkrb5-dev

설치후, 다시 빌드 환경 스크립트 autogen.sh를 실행해줍니다.

****************************************************************************

To build, run:
/usr/bin/make

To view some help, run:
/usr/bin/make help

After the build has finished successfully, you can immediately run what you built using the command:
instdir/program/soffice

If you want to run the smoketest, run:
/usr/bin/make check

*************************************
* WARNING : no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo

빌드 환경이 구성되었으면 make로 빌드를 해줍니다.

빌드는 2013년도에 생산된 i5 듀얼코어 4세대 하스웰+램16GB이면 아마 반나절 정도 오랫동안 걸릴겁니다. 자기전에 빌드하고 컴퓨터를 켜보면 빌드가 되었을겁니다.

빌드가 완료되면 아래와 같은 화면이 뜹니다.

[CMP] sw/util/sw
[DEP] LNK:Library/libswuilo.so
[LNK] Library/libswuilo.so
[DEP] LNK:Library/libvbaswobjlo.so
[LNK] Library/libvbaswobjlo.so
[CMP] sw/util/vbaswobj
[DEP] LNK:Library/libmswordlo.so
[LNK] Library/libmswordlo.so
[DEP] LNK:Library/libsclo.so
[LNK] Library/libsclo.so
[CMP] sw/util/msword
[BIN] sw
[MOD] sw
[CMP] sc/util/sc
[DEP] LNK:Library/libvbaobjlo.so
[LNK] Library/libvbaobjlo.so
[DEP] LNK:Library/libscuilo.so
[LNK] Library/libscuilo.so
[DEP] LNK:Library/libscfiltlo.so
[LNK] Library/libscfiltlo.so
[CMP] sc/util/vbaobj
[CMP] sc/util/scfilt
[RDB] services
[BIN] sc
[MOD] sc
[BIN] postprocess
[GAL] backgrounds
[GAL] sounds
[MOD] postprocess
[ULF] /home/dhsung/libreoffice/workdir/Gallery/sounds/sounds.ulf
[STR] sounds/sounds
[PKG] Gallery/sounds
[ULF] /home/dhsung/libreoffice/workdir/Gallery/backgrounds/backgrounds.ulf
[STR] backgrounds/backgrounds
[PKG] Gallery/backgrounds
[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

진짜 빌드가 끝났습니다. 그럼 실행을 해볼까요?

빌드한 리브레오피스(LibreOffice(를 실행하려면 아래와 같이 실행해줍니다.

$ ./instdir/program/soffice

WSL2의 Ubuntu+Xming으로 리브레오피스 화면을 띄어보니 진짜 리브레오피스가 빌드 및 실행됨을 확인하였습니다!!!

그러나, 옵션에서 한국어 설정한 후 다시 실행해보니 아직 한글이 뜨지 않고 깨져나옵니다. 그건 한글 글꼴이 나오도록 설정을 하지 않았기 때문이죠. (확인해보니 WSL2에 Ubuntu 20.04설치하면 기본 로케일 설정이 'C.UTF-8'입니다.)

아래는 WSL2에 설치한 Ubuntu 20.04 배포판의 기본 로케일 설정확인 명령입니다.

$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

(음.. C.UTF-8이라니... @.@)

윈도우의 WSL2에 설치한 리눅스 배포판에서 리브레오피스(Linux)를 실행하여 한글 정상적으로 나오게 하는 부분은 추후에 추가하여 공유를 하겠습니다.

실행 후, 빌드에 대한 옵션이 제대로 들어갔는지 확인해봅니다.

역시, 위에 벤더이름(me)가 잘 들어갔습니다.

상세하게 Build version 설정을 확인해보니 "Built by me"옵션도 제대로 들어갔구요. 그러나 로케일은 우분투(Ubuntu)기본 설치할때 들어가는 C.UTF-8이 들어가는 것이 아쉽더군요.

간단하게 실 사용을 해보겠습니다.

MS사의 워드격인 리브레오피스 라이터(Writer)에서 영어낱말은 잘 작성되는데, WSL2의 내부 Xwindow글꼴 설정에 한국어 설정한 것이 없으니 한글이 깨져나옵니다. WSL2의 기능에서 배포판에서 사용자 언어에 맞게 설정이 안되고, Xwindow설정에서도 당연히 사용자 언어에 맞게 설정되지 않은 문제라보니 이건 아쉽군요.

WSL2의 우분투(Ubuntu)에서 실제로 리브레오피스(LibreOffice)를 빌드 및 실행을 해보았습니다. 실행후 가볍게 사용해보니 불안정한 문제는 없고 리눅스위에 실행한 것과 동일한 경험을 제공하였습니다. 다만 "한글"이 나오지 않은건 "한국어" 글꼴 렌더링 설정이 안되어서 입니다. 뭐 기본 로케일이 C.UTF-8이니 Xwindow설정에 한글 글꼴 관련 렌더링이 없어 한글 당연히 깨집니다.

MS사의 리눅스(Linux)지원 행보를 보면, 예전과 다르게 오픈소스 친화적으로 변하면서 여러 리눅스에서 돌아가는 응용프로그램을 윈도우에서 실 사용할수 있게 지원함을 알수 있습니다.

여기서 좀 더 확장해가면 MS사가 윈도우 자체 기술은 가지되, 실제 커널 부분을 리눅스(Linux)로 옮겨서 리눅스용 응용프로그램을 품지 않을까란 생각이 들긴 하더군요. (이건 저의 뇌내 망상이라 흘려 들으시기 바랍니다)

앞으로 WSL2가 발전되어 윈도우 언어에 맞게 리눅스 설정이 자동으로 되면 리눅스 개발도 윈도우에서 하는 재미있는 상황이 생기지 않을까란 생각을 해봅니다.

WSL2에 GPU지원한다길래, WSL2에서 리브레오피스(LibreOffice)를 실행할수 있을까에 대한 궁금증으로 시작한 주말의 삽질기는 여기까지입니다.

실제 사용이 가능한지는, 제가 직장인이라 윈도우를 집에서 항상 쓸일이 없어서, 다음 주말에 실행해봐야겠군요. (당연 Xwindow에 한글 글꼴 설정 및 입력 관련으로 삽질을 해봐야 할것 같구요.) ㅎㅎ

제가 2011년 이후부터 주로 Mac OSX와 openSUSE 랩탑 2개로 집에서 작업하다보니, 집에서 윈도우를 네이티브(Native)로 실사용을 거의 오랜만(9~10년)에 해보았습니다. :)

button.like.co/studioego

 

Like DaeHyun Sung's work

Reward Creativity, powered by LikeCoin

button.like.co

www.buymeacoffee.com/dhsung

 

DaeHyun Sung is Free/Libre Open source contributor such as LibreOffice, KDE, GNOME,etc

Hey 👋 I just created a page here. You can now buy me a coffee!I’m Korean Open Source Contributor & Developer, such as LibreOffice, KDE, GNOME, etc.My hobby is Learning...

www.buymeacoffee.com

 

Buy me a coffeeBuy me a coffee

우분투(Ubuntu)에서 리브레오피스(LibreOffice)의 소스코드를 빌드할 수 있게 의존성 있는 패키지를 가져오도록 하는 선택하는 옵션으로 의존성있는 패키지 설치를 진행해보았습니다.

$ sudo apt build-dep libreoffice
[sudo] password for ***:
Reading package lists... Done
E: You must put some 'deb-src' URIs in your sources.list

아... deb-src URI가 sources.list에 없다고 sources.listdeb-src를 채워놓으라고 하군요.

그럼, sources.listdeb-src URI를 채워넣어야죠.

sources.list 파일을 수정해봅니다.

$ sudo vi /etc/apt/sources.list

이미 deb-src는 있으나 #으로 주석처리되어 있습니다. 그럼, 저장소 목록에 있는 deb-src 앞의 # 주석을 해제합니다.

그리고, 저장소 목록을 다시 업데이트 합니다.

$ sudo apt update

그리고 다시 아래의 명령어로 libreoffice에 대해 빌드할수 있게 의존성있는 패키지를 설치해봅니다.

$ sudo apt-get build-dep libreoffice
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  acl ant ant-optional autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu
  bison build-essential ca-certificates-java comerr-dev cpp cpp-9 dctrl-tools debhelper default-jdk
  default-jdk-headless default-jre default-jre-headless default-libmysqlclient-dev devscripts dh-apparmor
  dh-autoreconf dh-python dh-strip-nondeterminism doxygen dpkg-dev dwz evolution-data-server-common fakeroot
  firebird-dev firebird3.0-common firebird3.0-common-doc firebird3.0-server-core flex fontforge-common fontforge-nox
  fonts-crosextra-carlito fonts-dejavu fonts-dejavu-extra fonts-liberation2 fonts-urw-base35 g++ g++-9 gcc gcc-9
  gcc-9-base gdb gettext ghostscript gir1.2-atk-1.0 gir1.2-atspi-2.0 gir1.2-camel-1.2 gir1.2-ebackend-1.2
  gir1.2-ebook-1.2 gir1.2-ebookcontacts-1.2 gir1.2-edatabook-1.2 gir1.2-edataserver-1.2 gir1.2-freedesktop
  gir1.2-gdkpixbuf-2.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0
  gir1.2-langtag-0.6 gir1.2-pango-1.0 gir1.2-secret-1 gir1.2-soup-2.4 gobject-introspection gperf graphviz
  hyphen-en-us icu-devtools imagemagick imagemagick-6-common imagemagick-6.q16 intltool-debian java-common javahelper
  junit4 krb5-multidev libabw-0.1-1 libabw-dev libamd2 libann0 libapache-pom-java libarchive-zip-perl libasan5
  libassuan-dev libatk-bridge2.0-dev libatk1.0-dev libatomic1 libatspi2.0-dev libavahi-client-dev libavahi-common-dev
  libb-hooks-op-check-perl libbabeltrace1 libbinutils libblas-dev libblas3 libblkid-dev libbluetooth-dev libbluetooth3
  libboost-atomic1.71-dev libboost-atomic1.71.0 libboost-chrono1.71-dev libboost-chrono1.71.0 libboost-date-time-dev
  libboost-date-time1.71-dev libboost-date-time1.71.0 libboost-dev libboost-filesystem-dev libboost-filesystem1.71-dev
  libboost-filesystem1.71.0 libboost-iostreams-dev libboost-iostreams1.71-dev libboost-iostreams1.71.0
  libboost-locale-dev libboost-locale1.71-dev libboost-locale1.71.0 libboost-regex1.71-dev libboost-regex1.71.0
  libboost-serialization1.71-dev libboost-serialization1.71.0 libboost-system1.71-dev libboost-system1.71.0
  libboost-thread1.71-dev libboost-thread1.71.0 libboost1.71-dev libbrotli-dev libbsh-java libbtf1 libc-dev-bin
  libc6-dev libcairo-script-interpreter2 libcairo2-dev libcamd2 libcamel-1.2-62 libcamel1.2-dev libcc1-0 libccolamd2
  libcdr-0.1-1 libcdr-dev libcdt5 libcgraph6 libcholmod3 libclang1-10 libclass-method-modifiers-perl
  libclucene-contribs1v5 libclucene-core1v5 libclucene-dev libcmis-0.5-5v5 libcmis-dev libcolamd2
  libcommons-logging-java libcommons-parent-java libcppunit-1.15-0 libcppunit-dev libcroco3 libcrypt-dev libctf-nobfd0
  libctf0 libcups2-dev libcupsimage2 libcupsimage2-dev libcurl4-gnutls-dev libcxsparse3 libdatrie-dev libdbus-1-dev
  libdconf-dev libdebhelper-perl libdevel-callchecker-perl libdpkg-perl libdw1 libdynaloader-functions-perl
  libe-book-0.1-1 libe-book-dev libebackend-1.2-10 libebackend1.2-dev libebook-1.2-20 libebook-contacts-1.2-3
  libebook-contacts1.2-dev libebook1.2-dev libedata-book-1.2-26 libedata-book1.2-dev libedataserver-1.2-24
  libedataserver1.2-dev libegl-dev libegl1-mesa-dev libel-api-java libemf1 libencode-locale-perl libeot-dev libeot0
  libepoxy-dev libepubgen-0.1-1 libepubgen-dev libetonyek-0.1-1 libetonyek-dev libexif12 libexpat1-dev
  libexttextcat-2.0-0 libexttextcat-data libexttextcat-dev libfakeroot libfbclient2 libffi-dev libfftw3-double3
  libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfontconfig1-dev
  libfontforge3 libfreehand-0.1-1 libfreehand-dev libfreetype-dev libfreetype6-dev libfribidi-dev libgcc-9-dev
  libgck-1-0 libgcr-base-3-1 libgcrypt20-dev libgd3 libgdata-common libgdata22 libgdk-pixbuf2.0-dev libgdraw6
  libgfortran5 libgif7 libgirepository1.0-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libgles2
  libgles2-mesa-dev libglib2.0-dev libglib2.0-dev-bin libglm-dev libglu1-mesa libglu1-mesa-dev libglvnd-dev libglx-dev
  libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgoa-1.0-0b
  libgoa-1.0-common libgomp1 libgpg-error-dev libgpgme-dev libgpgmepp-dev libgphoto2-6 libgphoto2-port12 libgraphblas3
  libgraphite2-dev libgs9 libgs9-common libgssrpc4 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0
  libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgtk-3-dev libgts-0.7-5 libgvc6 libgvpr2 libhamcrest-java
  libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libhsqldb1.8.0-java libhtml-parser-perl libhtml-tagset-perl
  libhtml-tree-perl libhttp-cookies-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libhunspell-dev
  libhyphen-dev libhyphen0 libib-util libice-dev libicu-dev libidn11 libidn2-dev libieee1284-3 libijs-0.35
  libimport-into-perl libio-html-perl libio-pty-perl libio-socket-ssl-perl libipc-run-perl libisl22 libitm1
  libixion-0.15-0 libjbig-dev libjbig2dec0 libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjsp-api-java
  libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkf5attica-dev libkf5auth-dev libkf5auth-dev-bin libkf5auth5
  libkf5bookmarks-dev libkf5codecs-dev libkf5completion-dev libkf5config-dev libkf5config-dev-bin
  libkf5configwidgets-dev libkf5coreaddons-dev libkf5coreaddons-dev-bin libkf5dbusaddons-dev libkf5globalaccel-dev
  libkf5guiaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5itemviews-dev libkf5jobwidgets-dev libkf5kio-dev
  libkf5kiofilewidgets5 libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5sonnet-dev-bin libkf5textwidgets-dev
  libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libklu1 liblab-gamut1 liblangtag-common
  liblangtag-dev liblangtag-gobject0 liblangtag1 liblapack-dev liblapack3 liblcms2-dev libldap2-dev libldl2 libllvm10
  liblpsolve55-dev liblqr-1-0 liblsan0 libltdl-dev liblwp-mediatypes-perl liblwp-protocol-https-perl liblzma-dev
  libmagick++-6.q16-8 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmdds-dev libmetis5 libmhash2
  libmodule-runtime-perl libmongoose2 libmoo-perl libmount-dev libmpc3 libmspub-0.1-1 libmspub-dev libmwaw-0.3-3
  libmwaw-dev libmysqlclient-dev libmysqlclient21 libmythes-1.2-0 libmythes-dev libneon27-gnutls libneon27-gnutls-dev
  libnet-http-perl libnet-ssleay-perl libnspr4 libnspr4-dev libnss3 libnss3-dev libodbc1 libodfgen-0.1-1 libodfgen-dev
  libopengl-dev libopengl0 libopenjp2-7 liborc-0.4-0 liborc-0.4-dev liborc-0.4-dev-bin liborcus-0.15-0 liborcus-dev
  liborcus-spreadsheet-model-0.15-0 libp11-kit-dev libpagemaker-0.0-0 libpagemaker-dev libpango1.0-dev
  libpangoxft-1.0-0 libpaper1 libparams-classify-perl libpathplan4 libpcre16-3 libpcre2-32-0 libpcre2-dev
  libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpcsclite1 libphonenumber7 libpixman-1-dev libplot2c2
  libpng-dev libpoppler-cpp-dev libpoppler-cpp0v5 libpoppler-dev libpoppler-private-dev libpoppler97 libpq-dev libpq5
  libprotobuf17 libpsl-dev libpstoedit0c2a libpthread-stubs0-dev libpython3-dev libpython3.8-dev libqgpgme7
  libqt5concurrent5 libqt5script5 libqt5scripttools5 libqt5sql5 libqt5x11extras5-dev libquadmath0 libraptor2-0
  libraptor2-dev librasqal3 librasqal3-dev librbio2 librdf0 librdf0-dev librevenge-0.0-0 librevenge-dev
  librole-tiny-perl libsane libsane-common libsane-dev libsecret-1-0 libsecret-1-dev libsecret-common libselinux1-dev
  libsepol1-dev libservlet-api-java libservlet3.1-java libsm-dev libsnmp-base libsnmp35 libsoup2.4-dev libspiro1
  libspqr2 libsqlite3-dev libssl-dev libstdc++-9-dev libstrictures-perl libsub-override-perl libsub-quote-perl
  libsuitesparse-dev libsuitesparseconfig5 libtasn1-6-dev libthai-dev libtiff-dev libtiffxx5 libtimedate-perl
  libtommath1 libtool libtry-tiny-perl libtsan0 libubsan1 libumfpack5 libunbound8 libuninameslist1 liburi-perl
  libvisio-0.1-1 libvisio-dev libvulkan-dev libwayland-bin libwayland-dev libwebpmux3 libwebsocket-api-java
  libwpd-0.10-10 libwpd-dev libwpg-0.3-3 libwpg-dev libwps-0.4-4 libwps-dev libwww-perl libwww-robotrules-perl
  libx11-dev libx11-xcb-dev libxapian30 libxau-dev libxaw7-dev libxcb-icccm4-dev libxcb-render0-dev libxcb-shm0-dev
  libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev
  libxi-dev libxinerama-dev libxkbcommon-dev libxkbfile-dev libxml2-dev libxml2-utils libxmlsec1-dev libxmlsec1-gcrypt
  libxmlsec1-gnutls libxmlsec1-nss libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxslt1-dev
  libxt-dev libxtst-dev libyajl-dev libyajl2 libzip5 linux-libc-dev lp-solve m4 make maven-repo-helper mysql-common
  nettle-dev odbcinst odbcinst1debian2 openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless
  pango1.0-tools patchutils perl-openssl-defaults pkg-config po-debconf poppler-data pstoedit python3-dev python3-lxml
  python3-mako python3-markdown python3-packaging python3-pyparsing python3.8-dev qt5-qmake qt5-qmake-bin qtbase5-dev
  qtbase5-dev-tools qtchooser qtscript5-dev rdfind symlinks ucpp unixodbc-dev unzip uuid-dev wayland-protocols wdiff
  x11proto-core-dev x11proto-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-xext-dev
  x11proto-xinerama-dev xorg-sgml-doctools xsltproc xtrans-dev zip zlib1g-dev
0 upgraded, 593 newly installed, 0 to remove and 0 not upgraded.
Need to get 499 MB of archives.
After this operation, 1707 MB of additional disk space will be used.
Do you want to continue? [Y/n]

이제, 리브레오피스(LibreOffice)를 빌드(Build)할 준비가 되었습니다.

Buy me a coffeeBuy me a coffee

이번에 Windows 10에서 공식적으로 WSL2 공개 및 Xwindow를 쉽게 사용할 수 있는 WSL2가 공개되었습니다.

이번 WSL2지원 버전은 Windows 10 Home까지 지원하기때문에 Windows 10 최신 업데이트를 진행하였습니다.

 

만약에, Windows 10 빌드버전이 2004가 나오지 않으면 아래의 링크로 강제 업데이트를 하면 됩니다.

https://www.microsoft.com/ko-kr/software-download/windows10

 

Windows 10 다운로드

Windows 10용 ISO 파일을 다운로드한 경우, 해당 파일은 선택한 위치에 로컬로 저장됩니다.컴퓨터에 타사 DVD 굽기 프로그램이 설치되어 있으며 해당 프로그램을 사용하여 설치 DVD를 만들려는 경우,

www.microsoft.com

 

자, Windows 10 빌드버전 2004로 직접 업데이트 해보았습니다. 

 

다행히, 다른 사람에게 물려받은 2013년도산 HP랩탑은 Windows 10 최신버전 업데이트가 적용가능함을 확인하였습니다.

이제 Windows 10 빌드버전 2004가 적용되었습니다!

설치 완료!

이후, BIOS설정으로 가상화 설정을 하였고, WSL2설치 및 Ubuntu 20.04 LTS를 설치하였습니다

설치는 아래와 같이 진행하였습니다.

docs.microsoft.com/ko-kr/windows/wsl/install-win10

 

Windows 10에 WSL(Linux용 Windows 하위 시스템) 설치

Linux용 Windows 하위 시스템을 Windows 10에 설치하는 방법에 대한 지침입니다.

docs.microsoft.com

설치 후, xming 설치를 하였고, Xwindow 패키지를 설치하여 xeye를 띄워보았습니다.

이제, Windows에서 간단한 Linux개발 및 docker, container, kubernetes 환경설정등 여러가지 작업을 할수 있을 것 같더군요 

참고1. WSL2 소개 영상

WSL2: Code faster on the Windows Subsystem for Linux! | Tabs vs Spaces

www.youtube.com/watch?v=MrZolfGm8Zk

참고2. WSL2 will be generally available in Windows 10, version 2004

devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/

 

WSL2 will be generally available in Windows 10, version 2004 | Windows Command Line

WSL2 will soon be officially available as part of Windows 10, version 2004! As we get ready for general availability, we want to share one additional change: updating how the Linux kernel inside of WSL2 is installed and serviced on your machine.

devblogs.microsoft.com

참고3. What’s new for IT pros in Windows 10, version 2004 

techcommunity.microsoft.com/t5/windows-it-pro-blog/what-s-new-for-it-pros-in-windows-10-version-2004/ba-p/1419764#wsl

 

What’s new for IT pros in Windows 10, version 2004

Windows 10, version 2004, officially known as the Windows 10 May 2020 Update, is now available through Windows Server Update Services (WSUS) and Windows Update for Business, and can be downloaded from Visual Studio Subscriptions, the Software Download Cent

techcommunity.microsoft.com

 

Buy me a coffeeBuy me a coffee

Ubuntu 14.04에서 Oracle Java JDK 설치 

Ubuntu에서 Java를 설치하려면 Open JDK가 기본 선택을 설치됨. 그러나 Oracle JDK를 설치하려면 아래의 명령어(command)를 입력하여 설치해야함.

sudo apt-get update
sudo apt-get -y install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java8-installer
sudo update-java-alternatives -s java-8-oracle
sudo apt-get install oracle-java8-set-default


Buy me a coffeeBuy me a coffee

2014년 10월 23일 

Ubuntu 14.10 Utopic Unicorn이 출시 되었습니다


Ubuntu Linux가 04.10부터 나왔고, 이제 14.10까지 나왔으니 Ubuntu Linux가 나온지 10년이 되는군요.

저는 Ubuntu Linux 05.04부터 사용하였고, 10년동안 UI(User Interface), UX(User eXperience)가 엄청나게 변하였다는 것을 체감합니다.

그리고 종류가 많이 늘어났구요

  • Ubuntu Desktop and Server
  • Ubuntu Cloud Server
  • Ubuntu Netboot
  • Ubuntu Core
  • Kubuntu
  • Lubuntu
  • Ubuntu Studio
  • Ubuntu GNOME
  • UbuntuKylin
  • Xubuntu
  • Mythbuntu


Ubuntu 14.10의 Review 

Review Ubuntu 14.10






아래는 다운로드 링크


Buy me a coffeeBuy me a coffee

2014년 1월 5일 일요일 새벽.

오래간만에 집에 있는 노트북에 우분투 리눅스를 켜고, 작동을 해보았습니다.

거진 몇개월만에 우분투 리눅스 부팅을 하니깐 패키지들이 너무 오래되었고, Ubuntu 13.10이 나온 판에 업그레이드 하고 잠에 들자란 생각을 하게 되었습니다.

그리고는 잠자리에 들기전에 Ubuntu 13.10으로 업그레이드를 하게 되었습니다.



ps. 이 글을 쓰는 내내 노트북은 'Ubuntu 13.10'으로 업그레이드한다고 혹사중.

Buy me a coffeeBuy me a coffee

유명한 개발자인 허준회님의 블로그에서


오픈소스 개발 참여, 저 만화에 나온것처럼 어렵지 않아요.

저 만화를 보다보면 "GStreamer에 10여개 패치를 제출한 한국인 개발자"가 나오는데, 이 분은 제 지인이신 가나초코렛(@ganadist)님입니다. 

그리고 허준회님과 같이 그놈 한국에 소속되어 있지요.

"역시나 천재개발자는 오픈소스에 열심히 참여하더라는 말이 사실이였군요"란 생각을 함.


오픈소스 개발에 참여하는 방법에 대한 만화를 보다보니, 제가 오픈소스 개발에 참여한 후기를 적어볼까 합니다


우연히도 파이썬이라는 것을 배워볼까해서 스터디 그룹에 참여해본적이 있었습니다.

여기서 가나초코렛님을 만나게 되었고, 가나초코렛님은 저에게 파이썬을 알려주신 분으로써, 오픈소스 프로젝트에 참여하는 방법을 알려주신 고마운 분입니다.

스터디하던 그룹에서 오픈소스 개발자로 이름을 날리던 가나초코렛님께서 파이썬을 가지고 우분투(Ubuntu) 리눅스의 기본 SNS프로그램인 Gwibber에서, Gwibber-me2day플러그인을 만들어보자라는 프로젝트를 제안하고, 그룹원들이 서로 같이 개발을 해본적이 있었지요.

파이썬(Python)을 모르던 저가 오픈API와 연결하여 데이터 받기를 해보다, 파이썬(Python)이라는 언어가 정말 재미있는 언어구나를 그당시에 느끼게 되었죠.

그룹원들과 파이썬으로 Gwibber-Me2day플러그인을 만들다보니,  저는 다음에서 제공하는 URL축약 서비스인 durl.me 서비스에 대해서 플러그인 만들어볼까란 생각을 갑자기 하게 되더군요.

이분덕택에 저도 Gwibber에서 durl.me URL축약서비스를 제공하는 플러그인에 대한 파이썬 코드를 작성을 한 후에, 멋도 모르고 형상관리 툴인 bzr라는 툴로 파이썬 코드를 커밋하였습니다. (일 제대로 저질렸음)

2011년 2월 16일에 커밋하고, 약 2년 후에 내가 만든 파이썬 코드가 리뷰후에 승인되었을때의 희열감은 정말 어찌말로 표현할수가 없어요. 전세계 사람들이 드디어 제가 만든 파이썬 코드(Python Source code)를 쓴다는 그 생각을 하면 너무 기뻐서요 >.< 

(커밋을 한 이후, 쭉 바쁘게 지내다보니, 승인 메일 받기 전까지 파이썬 소스코드를 제출했었는지 기억도 없었음)



위의 화면갈무리는 제가 커밋한 파이썬 소스코드가 승인되어 전세계 사람들이 제가 만든 파이썬 코드를 사용할수 있게되었다는 결과 이메일입니다.


위의 이메일 내용을 보고, 저는 드디어 전세계 사람들에게 인정받는 오픈소스 개발자가 되었어요!


오픈소스 개발에 참여하는 방법은 오픈소스 소프트웨어가 어떤 내용일지를 뜯어보는 호기심과 개선해보겠다는 열정이 있으면 참여할수 있습니다.

처음에는 오픈소스 개발하는게 거창하고, 진입장벽이 높다라는 것을 느끼게 되지만, 점점 열심히 파보다보면 진입장벽을 뛰어넘어, 어느새 오픈소스 개발자라는 타이틀을 얻게 되는 자신을 느끼게 될것입니다.

오픈소스 개발은 자기 재능을 향상시키기에 딱 좋습니다. 시간 투자하여 오픈소스 개발해보시겠습니까? 


ps. 가나초코렛님과 같이 만들었던 Gwibber-Me2day플러그인은 커미터에게 반려되어서 소스코드에 적용이 되지 않았습니다. ㅠㅠ 

ps2. 이제 올해 6월달에 미투데이 종료되기때문에, 반려된걸 오히려 다행으로 여겨야 할지도?

ps3. 오랜만에 작성한 개발 글입니다. 그런데 개발 글인데 자기 자랑만 -_-;;

ps4. Python개발 해보고 싶은데, Java보다는 Python개발을 하고 싶은 1인. 근데 Python개발을 하고 싶으면 이직해야하나...

Buy me a coffeeBuy me a coffee


'우분투(Ubuntu)'란 남아프리카 반투어로 '네가 있으니 내가 있다'라는 윤리 사상을 일컫는 말로 공동체 정신, 인류애(Humanity)를 뜻하는 단어입니다.

Ubuntu told by Nelson Mandela

스크립트

Interviewer:

Many people regard you as a personification of Ubuntu. What do you describe Ubuntu to be?

Nelson Mandela: 

In the old days when we were young, a traveller through acountry would stop at a village, and he didn't have to askfor food or for water. Once he stops the people give himfood; entertain him. That is one aspect of Ubuntu ... butit has various aspects.

Respect

Helpfulness

Sharing

Community

Caring

Trust 

Unselfishness 

One word can mean so much.

This is the spirit of Ubuntu.

Nelson Mandela:

Ubuntu does not mean that people should not address themselves. The question therefore is, are you going to do so in order to enable the community around you, and enable it to improve? These are the important things in life. And if one can do that, you have done something very important which will be appreciated. 


번역 (출처: 넬슨만델라가 사랑한 운영체제 우분투 - Nelson Mandela über Ubuntu - http://poeta.tistory.com/30 )

인터뷰어: 많은 사람들이 우분투의 화신이라고 존경합니다. 우분투를 무엇인지를 설명할수 있습니까?

넬슨 만델라:

옛날, 우리가 어렸을 적에는 여행자가 마을에 들를 경우 음식이나 물을 달라고 부탁할 필요가 없었습니다. 머무르기만 하면 마을 사람들이 스스로 음식을 주고 환대해 주었지요. 이런것이 우분투 사상의 일부입니다. 이것 외에도 여러 가지가 있지만요.

넬슨 만델라:

우분투(Ubuntu)는 사람들이 자기 자신을 위한 일을 하면 안된다는 의미는 아닙니다. 고로, 중요한 점은 그 일을 함이 개인 주변의 공동체를 활성화시키며 나아가 더 발전시키기 위한 것이냐는 거지요. 삶을 살면서 바로 이런 것이 중요한 것이며, 만약 그런 일을 한다면 그는 아주 중요하고 사람들이 감사할 만한 일을 한 것입니다.


Buy me a coffeeBuy me a coffee


Ubuntu에서 300여개이상의 배경화면(월페이퍼)중 13개를 추려 13.04에서 아래 13개의 기본 배경화면(월페이퍼)를 사용할수 있게 공개를 하였습니다.

아래는 Ubuntu 13.04 기본 배경화면(월페이퍼) 다운로드 링크입니다.


Buy me a coffeeBuy me a coffee

+ Recent posts