ಪ್ರೊಹೋಸ್ಟರ್ > Блог > ಆಡಳಿತ > ಹಾಯ್ಕು ಜೊತೆ ನನ್ನ ಐದನೇ ದಿನ: ಕೆಲವು ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡೋಣ
ಹಾಯ್ಕು ಜೊತೆ ನನ್ನ ಐದನೇ ದಿನ: ಕೆಲವು ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡೋಣ
ಟಿಎಲ್; ಡಿಆರ್: ಹೊಸಬರೊಬ್ಬರು ಹೈಕುವನ್ನು ಮೊದಲ ಬಾರಿಗೆ ನೋಡಿದರು, ಲಿನಕ್ಸ್ ಪ್ರಪಂಚದಿಂದ ಕೆಲವು ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದರು.
ನನ್ನ ಮೊದಲ ಹೈಕು ಪೋರ್ಟ್ ಪ್ರೋಗ್ರಾಂ, ಅದರ hpkg ಸ್ವರೂಪದಲ್ಲಿ ಪ್ಯಾಕ್ ಮಾಡಲಾಗಿದೆ
ಇತ್ತೀಚೆಗೆ ನಾನು ಹೈಕುವನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೇನೆ, ಇದು PC ಗಳಿಗೆ ಆಶ್ಚರ್ಯಕರವಾದ ಉತ್ತಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಆಗಿದೆ.
ಈ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗೆ ಹೊಸ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡುವುದು ಹೇಗೆ ಎಂದು ಇಂದು ನಾನು ಕಲಿಯುತ್ತೇನೆ. ಲಿನಕ್ಸ್ ಡೆವಲಪರ್ನ ದೃಷ್ಟಿಕೋನದಿಂದ ಹೈಕುಗೆ ಬದಲಾಯಿಸಿದ ಮೊದಲ ಅನುಭವದ ವಿವರಣೆಯು ಮುಖ್ಯ ಗಮನವಾಗಿದೆ. ನಾನು ಮೊದಲ ಬಾರಿಗೆ Haiku ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ ಒಂದು ವಾರವೂ ಆಗಿಲ್ಲವಾದ್ದರಿಂದ, ದಾರಿಯುದ್ದಕ್ಕೂ ನಾನು ಮಾಡಿದ ಯಾವುದೇ ಅವಿವೇಕಿ ತಪ್ಪುಗಳಿಗಾಗಿ ನಾನು ಕ್ಷಮೆಯಾಚಿಸುತ್ತೇನೆ.
ನಾನು ಮೂರು ಗುರಿಗಳನ್ನು ಸಾಧಿಸಲು ಬಯಸುತ್ತೇನೆ:
ಸರಳ CLI ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪೋರ್ಟ್ ಮಾಡಿ
GUI ನಿಂದ Qt ಗೆ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪೋರ್ಟ್ ಮಾಡಿ
ನಂತರ ಅವುಗಳನ್ನು hpkg ಸ್ವರೂಪದಲ್ಲಿ ಪ್ಯಾಕೇಜ್ ಮಾಡಿ (ನಾನು ಇನ್ನೂ AppDir ಮತ್ತು AppImage ಅನ್ನು ಹೈಕುಗಾಗಿ ಅಳವಡಿಸಿಕೊಳ್ಳುವ ಬಗ್ಗೆ ಯೋಚಿಸುತ್ತಿದ್ದೇನೆ...)
ನಾವೀಗ ಆರಂಭಿಸೋಣ. ವಿಭಾಗಗಳಲ್ಲಿ ದಸ್ತಾವೇಜನ್ನು и ಅಭಿವೃದ್ಧಿಹಾಗೆಯೇ ವಿಕಿ HaikuPorts ನಿಂದ ನಾನು ಸರಿಯಾದ ದಿಕ್ಕನ್ನು ಕಂಡುಕೊಂಡೆ. ಆನ್ಲೈನ್ ಪಿಡಿಎಫ್ ಪುಸ್ತಕವೂ ಇದೆ BeOS: ಯುನಿಕ್ಸ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪೋರ್ಟಿಂಗ್ ಮಾಡುವುದು.
467 ಪುಟಗಳು - ಮತ್ತು ಇದು 1997 ರಿಂದ! ಒಳಗೆ ನೋಡಲು ಭಯವಾಗುತ್ತದೆ, ಆದರೆ ನಾನು ಉತ್ತಮವಾದದ್ದನ್ನು ಆಶಿಸುತ್ತೇನೆ. ಡೆವಲಪರ್ನ ಮಾತುಗಳು ಉತ್ತೇಜನಕಾರಿಯಾಗಿದೆ: "BeOS POSIX- ಕಂಪ್ಲೈಂಟ್ ಆಗದ ಕಾರಣ ಇದು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಂಡಿತು," ಆದರೆ ಹೈಕು "ಬಹುತೇಕ ಭಾಗ" ಈಗಾಗಲೇ ಹಾಗೆ ಇದೆ.
ಸರಳ CLI ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪೋರ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ
ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪೋರ್ಟ್ ಮಾಡುವುದು ಮೊದಲ ಆಲೋಚನೆಯಾಗಿದೆ avrdude, ಆದರೆ, ಅದು ಬದಲಾದಂತೆ, ಇದು ಈಗಾಗಲೇ ಆಗಿದೆ ಮಾಡಲಾಗಿದೆ ಬಹು ಸಮಯದ ಹಿಂದೆ.
ಹಾಗಾಗಿ ಬಳಸುತ್ತೇನೆ ptouch-770, ಲೇಬಲ್ಗಳನ್ನು ಮುದ್ರಿಸಲು ನಾನು ಬಳಸುವ ಬ್ರದರ್ ಪಿ-ಟಚ್ 770 ಪ್ರಿಂಟರ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು CLI.
ನಾನು ಅದರ ಮೇಲೆ ವಿವಿಧ ಲೇಬಲ್ಗಳನ್ನು ಮುದ್ರಿಸುತ್ತೇನೆ ಮತ್ತು ನೀವು ಅದನ್ನು ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ ಈಗಾಗಲೇ ನೋಡಿರಬಹುದು. ಸ್ವಲ್ಪ ಮುಂಚಿತವಾಗಿ, ನಾನು ಪೈಥಾನ್ನಲ್ಲಿ ಸಣ್ಣ GUI ರ್ಯಾಪರ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬರೆದಿದ್ದೇನೆ (ಇದು Gtk + ನಲ್ಲಿರುವುದರಿಂದ, ಅದನ್ನು ಪುನಃ ಬರೆಯಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ಇದು ಕಲಿಯಲು ಉತ್ತಮ ಕಾರಣವಾಗಿದೆ).
ಸಹೋದರ P-ಟಚ್ 770 ಲೇಬಲ್ ಪ್ರಿಂಟರ್. ಇದು ಹೈಕು ಜೊತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆಯೇ?
ಹೈಕು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗೆ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಕಮಾಂಡ್ಗಳ ಬಗ್ಗೆ ತಿಳಿದಿದೆ, ಆದ್ದರಿಂದ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ನಾನು "ಲಿಬಿಂಟ್ಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ" ಸಂದೇಶವನ್ನು ಪಡೆದರೆ configure - ನಾನು ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ pkgman install devel:libintl ಮತ್ತು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್ ಕಂಡುಬರುತ್ತದೆ. ಅಂತೆಯೇ pkgman install cmd:rsync. ಸರಿ, ಇತ್ಯಾದಿ.
ಇದು ಕೆಲಸ ಮಾಡದಿದ್ದಾಗ ಹೊರತುಪಡಿಸಿ:
/Haiku/home> git clone https://github.com/probonopd/ptouch-770
Cloning into 'ptouch-770'...
remote: Enumerating objects: 134, done.
remote: Total 134 (delta 0), reused 0 (delta 0), pack-reused 134
Receiving objects: 100% (134/134), 98.91 KiB | 637.00 KiB/s, done.
Resolving deltas: 100% (71/71), done./Haiku/home> cd ptouch-770//Haiku/home/ptouch-770> make
gcc -Wall -O2 -c -o ptouch-770-write.o ptouch-770-write.c
ptouch-770-write.c:28:10: fatal error: libudev.h: No such file or directory
#include <libudev.h>
^~~~~~~~~~~
compilation terminated.
Makefile:16: recipe for target 'ptouch-770-write.o' failed
make: *** [ptouch-770-write.o] Error 1/Haiku/home/ptouch-770> pkgman install devel:libudev
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:libudev": Name not found/Haiku/home/ptouch-770> pkgman install devel:udev
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:udev": Name not found
ಬಹುಶಃ udev ತುಂಬಾ ಲಿನಕ್ಸ್ ಆಧಾರಿತವಾಗಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಹೈಕುಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. ಇದರರ್ಥ ನಾನು ಕಂಪೈಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಮೂಲ ಕೋಡ್ ಅನ್ನು ನಾನು ಸಂಪಾದಿಸಬೇಕಾಗಿದೆ.
ಓಹ್, ನೀವು ನಿಮ್ಮ ತಲೆಯ ಮೇಲೆ ಹಾರಲು ಸಾಧ್ಯವಿಲ್ಲ, ಮತ್ತು ಎಲ್ಲಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು ಎಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ.
ಮೂರನೇ ಪ್ರಯತ್ನ
ಇದ್ದರೆ ಚೆನ್ನಾಗಿರುತ್ತದೆ tmate Haiku ಗಾಗಿ, ನಾನು ಹೈಕು ಡೆವಲಪರ್ಗಳಿಗೆ ನನ್ನ ಟರ್ಮಿನಲ್ ಸೆಷನ್ಗೆ ಸಂಪರ್ಕಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತೇನೆ - ಒಂದು ವೇಳೆ ಏನಾದರೂ ತಪ್ಪಾದಲ್ಲಿ. ಸೂಚನೆಗಳು ತುಂಬಾ ಸರಳವಾಗಿದೆ:
./autogen.sh
./configure
make
make install
ಚೆನ್ನಾಗಿ ಕಾಣುತ್ತಿದೆ, ಆದ್ದರಿಂದ ಇದನ್ನು ಹೈಕುದಲ್ಲಿ ಏಕೆ ಪ್ರಯತ್ನಿಸಬಾರದು?
/Haiku/home> git clone https://github.com/tmate-io/tmate/Haiku/home> cd tmate//Haiku/home/tmate> ./autogen.sh
(...)/Haiku/home/tmate> ./configure
(...)
checking for libevent... no
checking for library containing event_init... no
configure: error: "libevent not found"/Haiku/home/tmate> pkgman install devel:libevent
(...)
The following changes will be made:
in system:
install package libevent21-2.1.8-2 from repository HaikuPorts
install package libevent21_devel-2.1.8-2 from repository HaikuPorts
Continue? [yes/no] (yes) :
100% libevent21-2.1.8-2-x86_64.hpkg [965.22 KiB]
(...)
[system] Done.checking for ncurses... no
checking for library containing setupterm... no
configure: error: "curses not found"/Haiku/home/tmate> pkgman install devel:libcurses
(...)
*** Failed to find a match for "devel:libcurses": Name not found/Haiku/home/tmate> pkgman install devel:curses
(...)
*** Failed to find a match for "devel:curses": Name not found
ಈ ಹಂತದಲ್ಲಿ ನಾನು HaikuDepot ಅನ್ನು ತೆರೆಯುತ್ತೇನೆ ಮತ್ತು ಹುಡುಕುತ್ತೇನೆ curses.
ಏನೋ ಕಂಡುಬಂದಿದೆ, ಇದು ನನಗೆ ಹೆಚ್ಚು ಸಮರ್ಥವಾದ ಪ್ರಶ್ನೆಗೆ ಸುಳಿವು ನೀಡಿತು:
/Haiku/home/tmate> pkgman install devel:libncurses
(...)
100% ncurses6_devel-6.1-1-x86_64.hpkg [835.62 KiB]
(...)./configure
(...)
checking for msgpack >= 1.1.0... no
configure: error: "msgpack >= 1.1.0 not found"/Haiku/home/tmate> pkgman install devel:msgpack
(...)
*** Failed to find a match for "devel:msgpack": Name not found/Haiku/home/tmate> pkgman install devel:libmsgpack
(...)
*** Failed to find a match for "devel:libmsgpack": Name not found
ಮತ್ತೆ ನಾನು HaikuDepot ಗೆ ಹೋದೆ, ಮತ್ತು, ಸಹಜವಾಗಿ, ಕಂಡುಬಂದಿದೆ devel:msgpack_c_cpp_devel. ಈ ವಿಚಿತ್ರ ಹೆಸರುಗಳು ಯಾವುವು?
/Haiku/home/tmate> pkgman install devel:msgpack_c_cpp_devel
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:msgpack_c_cpp_devel": Name not found# Why is it not finding it? To hell with the "devel:".../Haiku/home/tmate> pkgman install msgpack_c_cpp_devel
(...)
The following changes will be made:
in system:
install package msgpack_c_cpp-3.1.1-1 from repository HaikuPorts
install package msgpack_c_cpp_devel-3.1.1-1 from repository HaikuPorts
Continue? [yes/no] (yes) :
(...)/Haiku/home/tmate> ./configure
(...)
checking for libssh >= 0.8.4... no
configure: error: "libssh >= 0.8.4 not found"/Haiku/home/tmate> pkgman install devel:libssh/Haiku/home/tmate> make
(...)
In file included from /boot/system/develop/headers/msgpack.h:22,
from tmate.h:5,
from cfg.c:29:
/boot/system/develop/headers/msgpack/vrefbuffer.h:19:8: error: redefinition of struct iovec'
struct iovec {
^~~~~
In file included from tmux.h:27,
from cfg.c:28:
/boot/system/develop/headers/posix/sys/uio.h:12:16: note: originally defined here
typedef struct iovec {
^~~~~
Makefile:969: recipe for target 'cfg.o' failed
make: *** [cfg.o] Error 1
ಈ ಹಂತದಲ್ಲಿ, ಹೈಕುಗೆ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಪೋರ್ಟ್ ಮಾಡಲು ಸರಳವಾದ ಮರುನಿರ್ಮಾಣಕ್ಕೆ ಅಗತ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಜ್ಞಾನದ ಅಗತ್ಯವಿದೆ ಎಂದು ನಾನು ಅರಿತುಕೊಂಡೆ.
ನಾನು ಸ್ನೇಹಪರ ಹೈಕು ಡೆವಲಪರ್ಗಳೊಂದಿಗೆ ಮಾತನಾಡಿದ್ದೇನೆ, ಇದು msgpack ನಲ್ಲಿ ದೋಷವಿದೆ ಎಂದು ತಿರುಗುತ್ತದೆ ಮತ್ತು ಕೆಲವು ನಿಮಿಷಗಳ ನಂತರ ನಾನು HaikuPorts ನಲ್ಲಿ ಪ್ಯಾಚ್ ಅನ್ನು ನೋಡುತ್ತೇನೆ. ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಹೇಗೆ ಸರಿಪಡಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನಾನು ನನ್ನ ಕಣ್ಣುಗಳಿಂದ ನೋಡಬಹುದು ಇಲ್ಲಿ ಹೋಗುತ್ತಿದ್ದೇನೆ (ಬಿಲ್ಡ್ಸ್ಲೇವ್ - ವರ್ಚುವಲ್ ಯಂತ್ರಗಳು).
ಬಿಲ್ಡ್ಮಾಸ್ಟರ್ನಲ್ಲಿ ಸರಿಪಡಿಸಲಾದ msgpack ಅನ್ನು ನಿರ್ಮಿಸಲಾಗುತ್ತಿದೆ
ಐದು ನಿಮಿಷಗಳ ನಂತರ, ನವೀಕರಿಸಿದ msgpack ಹೈಕುದಲ್ಲಿ ಈಗಾಗಲೇ ಲಭ್ಯವಿದೆ:
/Haiku/home/tmate> pkgman update
(...)
The following changes will be made:
in system:
upgrade package msgpack_c_cpp-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
upgrade package msgpack_c_cpp_devel-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
Continue? [yes/no] (yes) : y
100% msgpack_c_cpp-3.2.0-2-x86_64.hpkg [13.43 KiB]
(...)
[system] Done.
ಅನಿರೀಕ್ಷಿತವಾಗಿ ಒಳ್ಳೆಯದು. ನಾನು ಹೇಳಿದ್ದು?!
ನಾನು ಮೂಲ ಸಮಸ್ಯೆಗೆ ಹಿಂತಿರುಗುತ್ತೇನೆ:
/Haiku/home/tmate> make
(...)
In file included from tmux.h:40,
from tty.c:32:
compat.h:266: warning: "AT_FDCWD" redefined
#define AT_FDCWD -100
In file included from tty.c:25:
/boot/system/develop/headers/posix/fcntl.h:62: note: this is the location of the previous definition
#define AT_FDCWD (-1) /* CWD FD for the *at() functions */
tty.c: In function 'tty_init_termios':
tty.c:278:48: error: 'IMAXBEL' undeclared (first use in this function); did you mean 'MAXLABEL'?
tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
^~~~~~~
MAXLABEL
tty.c:278:48: note: each undeclared identifier is reported only once for each function it appears in
Makefile:969: recipe for target 'tty.o' failed
make: *** [tty.o] Error 1
ಈಗ msgpack ದೋಷವಿಲ್ಲ ಎಂದು ತೋರುತ್ತಿದೆ. ನಾನು ಕಾಮೆಂಟ್ ಮಾಡುತ್ತಿದ್ದೇನೆ IMAXLABEL в tty.c ಆದ್ದರಿಂದ:
osdep-unknown.c: In function 'osdep_get_cwd':
osdep-unknown.c:32:19: warning: unused parameter 'fd' [-Wunused-parameter]
osdep_get_cwd(int fd)
~~~~^~
make: *** No rule to make target 'compat/forkpty-unknown.c', needed by 'compat/forkpty-unknown.o'. Stop.
ಸರಿ, ಇಲ್ಲಿ ನಾವು ಮತ್ತೆ ಹೋಗುತ್ತೇವೆ ... ಮೂಲಕ:
/Haiku/home/tmate> ./configure | grep -i OPENAT
checking for openat... no
/Haiku/home/tmate> ./configure LDFLAGS="-lbsd"
(...)/Haiku/home/tmate> make
(...)
In file included from tmux.h:40,
from window.c:31:
compat.h:266: warning: "AT_FDCWD" redefined
#define AT_FDCWD -100
In file included from window.c:22:
/boot/system/develop/headers/posix/fcntl.h:62: note: this is the location of the previous definition
#define AT_FDCWD (-1) /* CWD FD for the *at() functions */
make: *** No rule to make target 'compat/forkpty-unknown.c', needed by 'compat/forkpty-unknown.o'. Stop.
ಹೈಕುವಿನಲ್ಲಿ libresolv ಜೊತೆಗೆ libnetwork ನಲ್ಲಿ ಬೇರೆ ಏನಾದರೂ ಇದೆ ಎಂದು ಅವರು ನನಗೆ ವಿವರಿಸಿದರು. ಸ್ಪಷ್ಟವಾಗಿ ಕೋಡ್ ಅನ್ನು ಮತ್ತಷ್ಟು ಸಂಪಾದಿಸಬೇಕಾಗಿದೆ. ಯೋಚಿಸಬೇಕು...
find . -type f -exec sed -i -e 's|lresolv|lnetwork|g' {} ;
ಶಾಶ್ವತ ಪ್ರಶ್ನೆ: ಏನು ನಡೆಯುತ್ತಿದೆ?
/Haiku/home/tmate> ./configure LDFLAGS="-lbsd"
(...)/Haiku/home/tmate> make
(...)
# Success!# Let's run it:/Haiku/home/tmate> ./tmate
runtime_loader: /boot/system/lib/libssh.so.4.7.2: Could not resolve symbol '__stack_chk_guard'
resolve symbol "__stack_chk_guard" returned: -2147478780
runtime_loader: /boot/system/lib/libssh.so.4.7.2: Troubles relocating: Symbol not found
ಅದೇ ವಿಷಯ, ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಮಾತ್ರ. ಗೂಗಲ್ ಮತ್ತು ಇದನ್ನು ಕಂಡುಹಿಡಿದರು. ನೀವು ಸೇರಿಸಿದರೆ -lssp "ಕೆಲವೊಮ್ಮೆ" ಸಹಾಯ ಮಾಡುತ್ತದೆ, ನಾನು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ:
/Haiku/home/tmate> ./configure LDFLAGS="-lbsd -lssp"
(...)/Haiku/home/tmate> make
(...)/Haiku/home/tmate> ./tmate
ಅದ್ಭುತ! ಇದು ಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ! ಆದರೆ…
[tmate] ssh.tmate.io lookup failure. Retrying in 2 seconds (non-recoverable failure in name resolution)
"ಕೆಟ್ಟ ಪೋರ್ಟ್ ಐಡಿ" ಈಗಾಗಲೇ ವ್ಯಾಪಾರ ಕಾರ್ಡ್ನಂತಿದೆ ಹೈಕು. ಬಹುಶಃ ಯಾರಿಗಾದರೂ ಏನು ತಪ್ಪಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ಹೇಗೆ ಸರಿಪಡಿಸುವುದು ಎಂಬ ಕಲ್ಪನೆ ಇದೆಯೇ? ಹಾಗಿದ್ದಲ್ಲಿ, ನಾನು ಲೇಖನವನ್ನು ನವೀಕರಿಸುತ್ತೇನೆ. ಗೆ ಲಿಂಕ್ ಮಾಡಿ GitHub.
GUI ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು Qt ಗೆ ಪೋರ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ.
ನಾನು ಸರಳ QML ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇನೆ.
/> cd /Haiku/home//Haiku/home> git clone https://github.com/probonopd/QtQuickApp
/Haiku/home/QtQuickApp> qmake .
/Haiku/home/QtQuickApp> make
/Haiku/home/QtQuickApp> ./QtQuickApp # Works!
ನಿಜವಾಗಿಯೂ ಸರಳ. ಒಂದು ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ!
ಹೈಕುಪೋರ್ಟರ್ ಮತ್ತು ಹೈಕುಪೋರ್ಟ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು hpkg ನಲ್ಲಿ ಪ್ಯಾಕೇಜಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು.
ನಾನು ಯಾವುದರಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು? ಯಾವುದೇ ಸರಳ ದಾಖಲಾತಿಗಳಿಲ್ಲ, ನಾನು irc.freenode.net ನಲ್ಲಿ #haiku ಚಾನಲ್ಗೆ ಹೋಗಿ ಕೇಳುತ್ತೇನೆ:
ತಂಡದ package - ಪ್ಯಾಕೇಜುಗಳನ್ನು ರಚಿಸಲು ಕಡಿಮೆ ಮಟ್ಟದ ಮಾರ್ಗ. "ಅದನ್ನು ಸರಿಯಾದ .hpkg ಪ್ಯಾಕೇಜ್ ಆಗಿ ಮಾಡುವುದು" ವಿಭಾಗದಲ್ಲಿ ವಿವರಿಸಿದಂತೆ, ಬಹುಪಾಲು, PackageInfo ಅವಳಿಗೆ ಸಾಕಾಗುತ್ತದೆ.
ಏನು ಮಾಡಬೇಕೆಂದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ. ನನಗೆ ಹಲೋ ವರ್ಲ್ಡ್ ಶೈಲಿಯ ಹರಿಕಾರರ ಮಾರ್ಗದರ್ಶಿ ಅಗತ್ಯವಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ಆದರ್ಶಪ್ರಾಯವಾಗಿ ವೀಡಿಯೊ. ಗ್ನೂ ಹಲೋದಲ್ಲಿ ಮಾಡಲಾಗಿರುವಂತೆ ಹೈಕುಪೋರ್ಟರ್ಗೆ ಅನುಕೂಲಕರವಾದ ಪರಿಚಯವನ್ನು ಸಹ ಹೊಂದಿದ್ದರೆ ಒಳ್ಳೆಯದು.
ನಾನು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಓದುತ್ತಿದ್ದೇನೆ:
haikuporter ಹೈಕುಗಾಗಿ ಸಾಮಾನ್ಯ ಪ್ಯಾಕೇಜ್ ಯೋಜನೆಗಳನ್ನು ರಚಿಸಲು ಒಂದು ಸಾಧನವಾಗಿದೆ. ಇದು ಹೈಕುಪೋರ್ಟ್ಸ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಎಲ್ಲಾ ಪ್ಯಾಕೇಜುಗಳಿಗೆ ಆಧಾರವಾಗಿ ಬಳಸುತ್ತದೆ. ಪ್ಯಾಕೇಜುಗಳನ್ನು ರಚಿಸಲು ಹೈಕುಪೋರ್ಟರ್ ಪಾಕವಿಧಾನಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾನು ಅದನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ:
HaikuPorts ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಪಾಕವಿಧಾನಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ನೀವು ಇನ್ನೊಂದು ರೆಪೊಸಿಟರಿಯನ್ನು ಮಾಡಬಹುದು, ಅದರಲ್ಲಿ ಪಾಕವಿಧಾನಗಳನ್ನು ಹಾಕಬಹುದು, ತದನಂತರ ಅದಕ್ಕೆ ಹೈಕುಪೋರ್ಟರ್ ಅನ್ನು ಸೂಚಿಸಬಹುದು.
ನನಗೆ ಬೇಕಾಗಿರುವುದು - ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸಾರ್ವಜನಿಕವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡುವ ಮಾರ್ಗವನ್ನು ಹುಡುಕದಿದ್ದರೆ. ಆದರೆ ಇದು ಮತ್ತೊಂದು ಪೋಸ್ಟ್ಗೆ ವಿಷಯವಾಗಿದೆ.
ಹೈಕುಪೋರ್ಟರ್ ಮತ್ತು ಹೈಕುಪೋರ್ಟ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
cd /boot/home/
git clone https://github.com/haikuports/haikuporter --depth=50
git clone https://github.com/haikuports/haikuports --depth=50
ln -s /boot/home/haikuporter/haikuporter /boot/home/config/non-packaged/bin/ # make it runnable from anywhere
cd haikuporter
cp haikuports-sample.conf /boot/home/config/settings/haikuports.conf
sed -i -e 's|/mydisk/haikuports|/boot/home/haikuports|g' /boot/home/config/settings/haikuports.conf
ಪಾಕವಿಧಾನವನ್ನು ಬರೆಯುವುದು
SUMMARY="Demo QtQuick application"
DESCRIPTION="QtQuickApp is a demo QtQuick application for testing Haiku porting and packaging"
HOMEPAGE="https://github.com/probonopd/QtQuickApp"
COPYRIGHT="None"
LICENSE="MIT"
REVISION="1"
SOURCE_URI="https://github.com/probonopd/QtQuickApp.git"
#PATCHES=""
ARCHITECTURES="x86_64"
PROVIDES="
QtQuickApp = $portVersion
"
REQUIRES="
haiku
"
BUILD_REQUIRES="
haiku_devel
cmd:qmake
"BUILD()
{
qmake .
make $jobArgs
}INSTALL()
{
make install
}
ಪಾಕವಿಧಾನವನ್ನು ಜೋಡಿಸುವುದು
ನಾನು ಫೈಲ್ ಅನ್ನು ಹೆಸರಿನಲ್ಲಿ ಉಳಿಸುತ್ತೇನೆ QtQuickApp-1.0.recipe, ಅದರ ನಂತರ ನಾನು ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ aikuporter -S ./QuickApp-1.0.recipe. ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಎಲ್ಲಾ ಪ್ಯಾಕೇಜುಗಳಿಗಾಗಿ ಅವಲಂಬನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ ಹೈಕುಪೋರ್ಟ್ಗಳು, ಇದು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಾನು ಕಾಫಿ ತೆಗೆದುಕೊಂಡು ಹೋಗುತ್ತೇನೆ.
ಈ ಚೆಕ್ ಅನ್ನು ನನ್ನ ಸ್ಥಳೀಯ ಗಣಕದಲ್ಲಿ ಏಕೆ ಮಾಡಬೇಕು ಮತ್ತು ಎಲ್ಲರಿಗೂ ಒಮ್ಮೆ ಸರ್ವರ್ನಲ್ಲಿ ಕೇಂದ್ರೀಯವಾಗಿ ಮಾಡಬಾರದು?
ಶ್ರೀ ಪ್ರಕಾರ. ವಾಡ್ಲ್ಸ್ಪ್ಲಾಶ್:
ಇದರೊಂದಿಗೆ ನೀವು ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಯಾವುದೇ ಫೈಲ್ ಅನ್ನು ಪುನಃ ಬರೆಯಬಹುದು 😉 ನೀವು ಇದನ್ನು ಸ್ವಲ್ಪ ಆಪ್ಟಿಮೈಜ್ ಮಾಡಬಹುದು, ಅಗತ್ಯವಿದ್ದಾಗ ಅಗತ್ಯ ಮಾಹಿತಿಯನ್ನು ಲೆಕ್ಕಹಾಕಬಹುದು, ಏಕೆಂದರೆ ಮಾಡಿದ ಕೊನೆಯ ಬದಲಾವಣೆಗಳು ತುಂಬಾ ಅಪರೂಪ.
~/QtQuickApp> haikuporter QtQuickApp-1.0.recipe
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
Error: QtQuickApp not found in repository
ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಒಳಗೊಂಡಿರುವ ಸಾಮಾನ್ಯ ಪಾಕವಿಧಾನ ಫೈಲ್ನಂತಹ ಯಾವುದೇ ವಿಷಯವಿಲ್ಲ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ನೀವು ಅದನ್ನು ಹೈಕುಪೋರ್ಟ್ಸ್ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಿಸಬೇಕಾಗುತ್ತದೆ.
ಈ ಅಂಶವು ಸಭೆಯನ್ನು ಹೆಚ್ಚು ತೊಡಕಾಗಿಸುತ್ತದೆ. ನಾನು ಇದನ್ನು ವಿಶೇಷವಾಗಿ ಇಷ್ಟಪಡುವುದಿಲ್ಲ, ಆದರೆ ಅಂತಿಮವಾಗಿ ಎಲ್ಲಾ ಓಪನ್ ಸೋರ್ಸ್ ಸಾಫ್ಟ್ವೇರ್ಗಳು ಹೈಕುಪೋರ್ಟ್ಗಳಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು ಇದು ಅವಶ್ಯಕ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ನಾನು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಪಡೆಯುತ್ತೇನೆ:
~/QtQuickApp> haikuporter -S QtQuickApp-1.0.recipe
Checking if any dependency-infos need to be updated ...
updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
Error: QtQuickApp-1.0.recipe not found in tree.
ಏನು ತಪ್ಪಾಯಿತು? ಐಆರ್ಸಿ ಓದಿದ ನಂತರ ನಾನು ಮಾಡುತ್ತೇನೆ:
~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
/boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------Downloading: https://github.com/probonopd/QtQuickApp.git ...
--2019-07-14 16:12:44-- https://github.com/probonopd/QtQuickApp.git
Resolving github.com... 140.82.118.3
Connecting to github.com|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/probonopd/QtQuickApp [following]
--2019-07-14 16:12:45-- https://github.com/probonopd/QtQuickApp
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git’
0K . 1.34M=0.06s
2019-07-14 16:12:45 (1.34 MB/s) - ‘/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git’ saved [90094]
Validating checksum of QtQuickApp.git
Warning: ----- CHECKSUM TEMPLATE -----
Warning: CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"
Warning: -----------------------------
Error: No checksum found in recipe!
ಎಂಬ ಕುತೂಹಲಕಾರಿ ಪ್ರಶ್ನೆ ಹುಟ್ಟಿಕೊಂಡಿದೆ. ನಾನು ಪಾಕವಿಧಾನಕ್ಕೆ ಚೆಕ್ಸಮ್ ಅನ್ನು ಸೇರಿಸಿದರೆ - ಇದು ನಿರಂತರ ಏಕೀಕರಣಕ್ಕಾಗಿ ಇತ್ತೀಚಿನ ಗಿಟ್ ಬದ್ಧತೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ? (ಡೆವಲಪರ್ ದೃಢೀಕರಿಸುತ್ತಾರೆ: "ಇದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ಪಾಕವಿಧಾನಗಳನ್ನು ತುಲನಾತ್ಮಕವಾಗಿ ಸ್ಥಿರವಾಗಿರುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.")
~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
/boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------
Skipping download of source for QtQuickApp.git
Validating checksum of QtQuickApp.git
Unpacking source of QtQuickApp.git
Error: Unrecognized archive type in file /boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git
ಅವನು ಏನು ಮಾಡುತ್ತಿದ್ದಾನೆ? ಎಲ್ಲಾ ನಂತರ, ಇದು ಜಿಟ್ ರೆಪೊಸಿಟರಿಯಾಗಿದೆ, ಕೋಡ್ ಈಗಾಗಲೇ ನೇರವಾಗಿ ಇದೆ, ಅನ್ಪ್ಯಾಕ್ ಮಾಡಲು ಏನೂ ಇಲ್ಲ. ನನ್ನ ದೃಷ್ಟಿಕೋನದಿಂದ, ಉಪಕರಣವು GitHub url ಮೇಲಿದ್ದರೆ ಅನ್ಪ್ಯಾಕರ್ಗಾಗಿ ನೋಡದೇ ಇರುವಷ್ಟು ಸ್ಮಾರ್ಟ್ ಆಗಿರಬೇಕು.
Downloading: git://github.com/probonopd/QtQuickApp.git ...
Error: Downloading from unsafe sources is disabled in haikuports.conf!
ಹಾಂ, ಎಲ್ಲವೂ ಏಕೆ ತುಂಬಾ ಜಟಿಲವಾಗಿದೆ, ನೀವು ಏಕೆ "ಕೇವಲ ಕೆಲಸ" ಮಾಡಬಾರದು? ಎಲ್ಲಾ ನಂತರ, GitHub ನಿಂದ ಏನನ್ನಾದರೂ ನಿರ್ಮಿಸಲು ಇದು ಅಸಾಮಾನ್ಯವೇನಲ್ಲ. ಇದು ತಕ್ಷಣವೇ ಕೆಲಸ ಮಾಡುವ ಸಾಧನಗಳಾಗಲಿ, ಸೆಟಪ್ ಅಗತ್ಯವಿಲ್ಲದೇ ಅಥವಾ ನಾನು ಅದನ್ನು "ಗಲಾಟೆ" ಎಂದು ಕರೆಯುತ್ತೇನೆ.
ಸರಿ, ಹೌದು, ಕಾರಣವೆಂದರೆ ಅಸೆಂಬ್ಲಿಗಾಗಿ ಸ್ವೀಕರಿಸಿದ ಡೇಟಾದ ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಬಯಕೆ. ಆರ್ಕೈವ್ನ ಚೆಕ್ಸಮ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು ಒಂದು ಆಯ್ಕೆಯಾಗಿದೆ, ಆದರೆ ನೀವು ಸಹಜವಾಗಿ, ವೈಯಕ್ತಿಕ ಫೈಲ್ಗಳನ್ನು ಹ್ಯಾಶ್ ಮಾಡಬಹುದು, ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಇದು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಇದರ ಪರಿಣಾಮವೆಂದರೆ git ಮತ್ತು ಇತರ VCS ನ "ಅಭದ್ರತೆ". GitHub ನಲ್ಲಿ ಆರ್ಕೈವ್ ಅನ್ನು ರಚಿಸುವುದು ತುಂಬಾ ಸುಲಭ ಮತ್ತು ಆಗಾಗ್ಗೆ ವೇಗವಾಗಿರುವುದರಿಂದ ಇದು ಯಾವಾಗಲೂ ಸಂಭವಿಸುತ್ತದೆ. ಸರಿ, ಭವಿಷ್ಯದಲ್ಲಿ, ಬಹುಶಃ ದೋಷ ಸಂದೇಶವು ತುಂಬಾ ಮಿನುಗುವುದಿಲ್ಲ ... (ನಾವು ಇನ್ನು ಮುಂದೆ ಅಂತಹ ಪಾಕವಿಧಾನಗಳನ್ನು ಹೈಕುಪೋರ್ಟ್ಗಳಲ್ಲಿ ವಿಲೀನಗೊಳಿಸುವುದಿಲ್ಲ).
~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
/boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------Downloading: git+https://github.com/probonopd/QtQuickApp.git ...
Warning: UNSAFE SOURCES ARE BAD AND SHOULD NOT BE USED IN PRODUCTION
Warning: PLEASE MOVE TO A STATIC ARCHIVE DOWNLOAD WITH CHECKSUM ASAP!
Cloning into bare repository '/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git'...
Unpacking source of QtQuickApp.git
tar: /boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Command 'git archive HEAD | tar -x -C "/boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0"' returned non-zero exit status 2
ಹಳೆಯ ಅಭ್ಯಾಸದಿಂದ, ನಾನು irc.freenode.net ನೆಟ್ವರ್ಕ್ನಲ್ಲಿರುವ #haiku ಚಾನಲ್ನಲ್ಲಿ ಒಳ್ಳೆಯ ಜನರನ್ನು ಕೇಳಲು ಹೋಗುತ್ತೇನೆ. ಮತ್ತು ಅವರಿಲ್ಲದೆ ನಾನು ಎಲ್ಲಿದ್ದೇನೆ? ಸುಳಿವಿನ ನಂತರ, ನಾನು ಬಳಸಬೇಕೆಂದು ನಾನು ಅರಿತುಕೊಂಡೆ:
ಸರಿ, ಅದು ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಯಿತು - ಇದು ನಿರ್ದಿಷ್ಟ ಪರಿಷ್ಕರಣೆಯ ಮೂಲ ಕೋಡ್ನೊಂದಿಗೆ ಆರ್ಕೈವ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಇದು ಮೂರ್ಖತನವಾಗಿದೆ, ನನ್ನ ದೃಷ್ಟಿಕೋನದಿಂದ, ಮತ್ತು ನಾನು ಬಯಸಿದ್ದನ್ನು ನಿಖರವಾಗಿ ಅಲ್ಲ, ಅವುಗಳೆಂದರೆ, ಮಾಸ್ಟರ್ ಶಾಖೆಯಿಂದ ಇತ್ತೀಚಿನ ಪರಿಷ್ಕರಣೆಯನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುವುದು.
ಅಭಿವರ್ಧಕರಲ್ಲಿ ಒಬ್ಬರು ಇದನ್ನು ಈ ರೀತಿ ವಿವರಿಸಿದ್ದಾರೆ:
ನಾವು ನಮ್ಮದೇ ಆದ CI ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಆದ್ದರಿಂದ haikuports ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಿಸಲಾಗಿರುವ ಎಲ್ಲವನ್ನೂ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಪ್ಯಾಕ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು "ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯ ಅಪ್ಸ್ಟ್ರೀಮ್ನಲ್ಲಿರುವ ಎಲ್ಲವನ್ನೂ" ಸಂಗ್ರಹಿಸುವ ಮತ್ತು ತಲುಪಿಸುವ ಅಪಾಯವನ್ನು ನಾವು ಬಯಸುವುದಿಲ್ಲ.
ಅರ್ಥವಾಯಿತು! ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಸಂಭವಿಸಿದೆ:
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
(...)
ಇದು ಈ ಜಾಹೀರಾತನ್ನು ಅನಂತವಾಗಿ ಪುನರಾವರ್ತಿಸುತ್ತದೆ. ಸ್ಪಷ್ಟವಾಗಿ ಇದು ದೋಷವಾಗಿದೆ (ಅಪ್ಲಿಕೇಶನ್ ಇದೆಯೇ? ನನಗೆ ಅದನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ).
С haikuporter ಮತ್ತು ಭಂಡಾರ ಹೈಕುಪೋರ್ಟ್ಗಳು ಇದು "ಕೇವಲ ಕೆಲಸಗಳು" ಎಂಬ ಭಾವನೆಯನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೆ ಡೆವಲಪರ್ ಆಗಿ, ಹೈಕು ಜೊತೆ ಕೆಲಸ ಮಾಡಲು ನಾನು ಇಷ್ಟಪಡುವ ಕೆಲವು ವಿಷಯಗಳಿವೆ. ಬಹುಮಟ್ಟಿಗೆ, ಇದು ಓಪನ್ ಬಿಲ್ಡ್ ಸರ್ವೀಸ್ಗೆ ಹೋಲುತ್ತದೆ, ಲಿನಕ್ಸ್ ಬಿಲ್ಡ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಸಾಧನಗಳ ಒಂದು ಸೆಟ್: ಅತ್ಯಂತ ಶಕ್ತಿಯುತ, ವ್ಯವಸ್ಥಿತ ವಿಧಾನದೊಂದಿಗೆ, ಆದರೆ ನನ್ನ ಸಣ್ಣ "ಹಲೋ ವರ್ಲ್ಡ್" ಅಪ್ಲಿಕೇಶನ್ಗಾಗಿ ಓವರ್ಕಿಲ್.
ಮತ್ತೊಮ್ಮೆ, ಶ್ರೀ ಪ್ರಕಾರ. ವಾಡ್ಲ್ಸ್ಪ್ಲಾಶ್:
ವಾಸ್ತವವಾಗಿ, HaikuPorter ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಾಕಷ್ಟು ಕಟ್ಟುನಿಟ್ಟಾಗಿದೆ (ಜೊತೆಗೆ ಲಿಂಟ್ ಮೋಡ್ ಮತ್ತು ಅದನ್ನು ಇನ್ನಷ್ಟು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಮಾಡಲು ಕಟ್ಟುನಿಟ್ಟಾದ ಮೋಡ್ ಇದೆ!), ಆದರೆ ಇದು ಕೇವಲ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ರಚಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ರಚಿಸುತ್ತದೆ. ಅದಕ್ಕಾಗಿಯೇ ಅವರು ಅಘೋಷಿತ ಅವಲಂಬನೆಗಳು, ಸರಿಯಾಗಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳದ ಗ್ರಂಥಾಲಯಗಳು, ತಪ್ಪಾದ ಆವೃತ್ತಿಗಳು ಇತ್ಯಾದಿಗಳ ಬಗ್ಗೆ ದೂರುತ್ತಾರೆ. ಬಳಕೆದಾರರಿಗೆ ಅದರ ಬಗ್ಗೆ ತಿಳಿದಿರುವ ಮೊದಲು ಭವಿಷ್ಯದ ಸಮಸ್ಯೆಗಳು ಸೇರಿದಂತೆ ಯಾವುದೇ ಮತ್ತು ಎಲ್ಲಾ ಸಮಸ್ಯೆಗಳನ್ನು ಹಿಡಿಯುವುದು ಗುರಿಯಾಗಿದೆ (ಇದಕ್ಕಾಗಿಯೇ ಅವ್ರ್ಡ್ಯೂಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, ಏಕೆಂದರೆ ಅವಲಂಬನೆಯನ್ನು ಪಾಕವಿಧಾನದಲ್ಲಿ ವಾಸ್ತವವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ). ಗ್ರಂಥಾಲಯಗಳು ಕೇವಲ ವೈಯಕ್ತಿಕ ಪ್ಯಾಕೇಜುಗಳು ಅಥವಾ ನಿರ್ದಿಷ್ಟ SO ಆವೃತ್ತಿಗಳಲ್ಲ. ಮರಣದಂಡನೆಯ ಸಮಯದಲ್ಲಿ ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಲು ಪಾಕವಿಧಾನಗಳಲ್ಲಿಯೇ ಇದೆಲ್ಲವನ್ನೂ ಗಮನಿಸಲಾಗಿದೆ ಎಂದು ಹೈಕುಪೋರ್ಟರ್ ಖಚಿತಪಡಿಸುತ್ತದೆ.
ತಾತ್ವಿಕವಾಗಿ, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ರಚಿಸುವಾಗ ಈ ಮಟ್ಟದ ಕಠಿಣತೆಯನ್ನು ಸಮರ್ಥಿಸಲಾಗುತ್ತದೆ, ಆದರೆ "ಹಲೋ ವರ್ಲ್ಡ್" ಅಪ್ಲಿಕೇಶನ್ಗೆ ಇದು ನನಗೆ ಅನಗತ್ಯವೆಂದು ತೋರುತ್ತದೆ. ನಾನು ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ಪ್ರಯತ್ನಿಸಲು ನಿರ್ಧರಿಸಿದೆ.
"ಪ್ಯಾಕೇಜ್ ಕ್ರಿಯೇಟ್" ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು hpkg ಸ್ವರೂಪದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವುದು
ಇರಬಹುದು ಹೌದು ಸರಳ ಸೂಚನೆಗಳು ನನಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆಯೇ?
mkdir -p apps/
cp QtQuickApp apps/cat > .PackageInfo <<EOF
name QtQuickApp
version 1.0-1
architecture x86_64
summary "Demo QtQuick application"
description "QtQuickApp is a demo QtQuick application for testing Haiku porting and packaging"
packager "probono"
vendor "probono"
copyrights "probono"
licenses "MIT"
provides {
QtQuickApp = 1.0-1
}requires {
qt5
}
EOFpackage create -b QtQuickApp.hpkg
package add QtQuickApp.hpkg apps# See below if you also want the application
# to appear in the menu
ಅನಿರೀಕ್ಷಿತವಾಗಿ ವೇಗವಾಗಿ, ಅನಿರೀಕ್ಷಿತವಾಗಿ ಸರಳ, ಅನಿರೀಕ್ಷಿತವಾಗಿ ಪರಿಣಾಮಕಾರಿ. ನಾನು ಅದನ್ನು ಹೇಗೆ ಇಷ್ಟಪಡುತ್ತೇನೆ, ಅದ್ಭುತ!
ಅನುಸ್ಥಾಪನೆ - ಏನು ಮತ್ತು ಎಲ್ಲಿ?
QtQuickApp.hpkg ಫೈಲ್ ಅನ್ನು ಇದಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ ~/config/packagesಫೈಲ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಬಳಸಿ, ಅದರ ನಂತರ QtQuickApp ಮಾಂತ್ರಿಕವಾಗಿ ಕಾಣಿಸಿಕೊಂಡಿತು ~/config/apps.
ಮತ್ತೊಮ್ಮೆ, ಅನಿರೀಕ್ಷಿತವಾಗಿ ವೇಗವಾಗಿ, ಸರಳ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ. ಅದ್ಭುತ, ನಂಬಲಾಗದ!
ಆದರೆ ... (ಅವರಿಲ್ಲದೆ ನಾವು ಎಲ್ಲಿದ್ದೇವೆ!)
ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೆನು ಪಟ್ಟಿ ಮತ್ತು ಕ್ವಿಕ್ಲಾಂಚ್ನಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಇನ್ನೂ ಕಾಣೆಯಾಗಿದೆ. ಅದನ್ನು ಹೇಗೆ ಸರಿಪಡಿಸುವುದು ಎಂದು ನನಗೆ ಈಗಾಗಲೇ ತಿಳಿದಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಫೈಲ್ ಮ್ಯಾನೇಜರ್ನಲ್ಲಿ ನಾನು QtQuickApp.hpkg ಅನ್ನು ~/config/packages ನಿಂದ /system/packages ಗೆ ಸರಿಸುತ್ತೇನೆ.
ಇಲ್ಲ, ಇನ್ನೂ ಕಾಣೆಯಾಗಿದೆ. ಸ್ಪಷ್ಟವಾಗಿ, ನಾನು (ಚೆನ್ನಾಗಿ, ಮತ್ತು ಸೂಚನೆಗಳನ್ನು) ಏನೋ ತಪ್ಪಿಸಿಕೊಂಡ.
ಇತರ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಹೈಕು ಡಿಪೋಟ್ನಲ್ಲಿರುವ "ವಿಷಯ" ಟ್ಯಾಬ್ ಅನ್ನು ನೋಡಿದ ನಂತರ, ಅಂತಹ ಫೈಲ್ಗಳಿವೆ ಎಂದು ನಾನು ನೋಡಿದೆ /data/mimedb/application/x-vnd... ಇನ್ನೂ ಗಮನಾರ್ಹವಾದುದೆಂದರೆ /data/deskbar/menu/Applications/….
ಸರಿ, ನಾನು ಅಲ್ಲಿ ಏನು ಹಾಕಬೇಕು? ಬನ್ನಿ...
mkdir -p data/deskbar/menu/Applications/
( cd data/deskbar/menu/Applications ; ln -s ../../../../apps/QtQuickApp . )
package add QtQuickApp.hpkg apps data
ಈ ಟ್ರಿಕ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನನಗೆ ಖಚಿತವಾಗಿದೆ, ಆದರೆ ಪ್ರಶ್ನೆಗಳು ಉಳಿದಿವೆ: ಇದು ಏಕೆ ಅಗತ್ಯ, ಅದು ಏನು? ಇದು ವ್ಯವಸ್ಥೆಯು ತುಂಬಾ ಅತ್ಯಾಧುನಿಕವಾಗಿದೆ ಎಂಬ ಒಟ್ಟಾರೆ ಅನಿಸಿಕೆಗಳನ್ನು ಹಾಳುಮಾಡುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಶ್ರೀ ವಿವರಿಸಿದಂತೆ. ವಾಡ್ಲ್ಸ್ಪ್ಲಾಶ್:
ಕೆಲವೊಮ್ಮೆ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಿವೆ ಆದರೆ ಮೆನುವಿನಲ್ಲಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ಶಾಟ್ನಲ್ಲಿ LegacyPackageInstaller, BeOS ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ .pkg ಆರ್ಕೈವ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ. ಬಳಕೆದಾರರು ಅವುಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ, ಆದರೆ ಮೆನುವಿನಲ್ಲಿ ಅವರ ಉಪಸ್ಥಿತಿಯು ಗೊಂದಲಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಕೆಲವು ಕಾರಣಗಳಿಂದಾಗಿ ಸರಳವಾದ ಪರಿಹಾರವಿದೆ ಎಂದು ನನಗೆ ತೋರುತ್ತದೆ, ಉದಾಹರಣೆಗೆ Hidden=true ಕಡತಗಳಲ್ಲಿ .desktop Linux ನಲ್ಲಿ. "ಗುಪ್ತ" ಮಾಹಿತಿಯನ್ನು ಫೈಲ್ ಸಿಸ್ಟಮ್ನ ಸಂಪನ್ಮೂಲ ಮತ್ತು ಗುಣಲಕ್ಷಣವಾಗಿ ಏಕೆ ಮಾಡಬಾರದು?
ವಿಶೇಷವಾಗಿ ಸೂಕ್ಷ್ಮವಲ್ಲದ ಮೆನುವನ್ನು ತೋರಿಸುವ (ಕೆಲವು) ಅಪ್ಲಿಕೇಶನ್ನ ಹೆಸರು, deskbar, ದಾರಿಯುದ್ದಕ್ಕೂ ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಕಟ್ಟಲಾಗಿದೆ.
ಶ್ರೀ waddlesplash ಇದನ್ನು ವಿವರಿಸುತ್ತದೆ:
ಈ ಸಂದರ್ಭದಲ್ಲಿ "ಡೆಸ್ಕ್ ಬಾರ್" ಅನ್ನು ಒಂದು ರೀತಿಯ ಸಾಮಾನ್ಯ ಪದವೆಂದು ಅರ್ಥೈಸಿಕೊಳ್ಳಬೇಕು ("ಟಾಸ್ಕ್ ಬಾರ್" ನಂತೆಯೇ, ಇದು ವಿಂಡೋಸ್ ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಸಾಮಾನ್ಯ ಪರಿಕಲ್ಪನೆ ಎರಡನ್ನೂ ಉಲ್ಲೇಖಿಸುತ್ತದೆ). ಸರಿ, ಇದರಿಂದ deskbar, "ಡೆಸ್ಕ್ ಬಾರ್" ಅಲ್ಲ, ಇದನ್ನು ಸಹ ಇದೇ ರೀತಿಯಲ್ಲಿ ಅರ್ಥೈಸಿಕೊಳ್ಳಬಹುದು.
2 "ಬಹುತೇಕ ಒಂದೇ ರೀತಿಯ" ಡೈರೆಕ್ಟರಿಗಳು ಅವುಗಳಲ್ಲಿ ಅನ್ವಯಗಳೊಂದಿಗೆ
ಅಪ್ಲಿಕೇಶನ್ಗಳೊಂದಿಗೆ 2 ಡೈರೆಕ್ಟರಿಗಳು ಏಕೆ ಇವೆ, ಮತ್ತು ನನ್ನ QtQuickApplication ಒಂದರಲ್ಲಿ ಏಕೆ ಇದೆ, ಆದರೆ ಇನ್ನೊಂದರಲ್ಲಿಲ್ಲ? (ಎಲ್ಲಾ ನಂತರ, ಇದು ಒಂದು ಸಿಸ್ಟಮ್ ಅಲ್ಲ, ಆದರೆ ಎರಡನೇ ಬಳಕೆದಾರ, ಇದು ನನಗೆ ವೈಯಕ್ತಿಕವಾಗಿ ಅರ್ಥವಾಗುವಂತಹದ್ದಾಗಿದೆ).
ನಾನು ನಿಜವಾಗಿಯೂ ಗೊಂದಲಕ್ಕೊಳಗಾಗಿದ್ದೇನೆ ಮತ್ತು ಇದನ್ನು ಏಕೀಕರಿಸಬೇಕು ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಶ್ರೀ ಅವರಿಂದ ಕಾಮೆಂಟ್ waddlesplash
ಅಪ್ಲಿಕೇಶನ್ಗಳ ಕ್ಯಾಟಲಾಗ್ ಮೆನುವಿನಲ್ಲಿ ಅಗತ್ಯವಿಲ್ಲದ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಆದರೆ ಮೆನುವಿನೊಂದಿಗೆ ಪರಿಸ್ಥಿತಿಯನ್ನು ನಿಜವಾಗಿಯೂ ಸುಧಾರಿಸಬೇಕಾಗಿದೆ, ಅದನ್ನು ಹೆಚ್ಚು ಗ್ರಾಹಕೀಯಗೊಳಿಸಬಹುದು.
ಅಪ್ಲಿಕೇಶನ್, ಅಥವಾ ಅದು ಆಗುವುದಿಲ್ಲ 😉
ನಾನು ಆಶ್ಚರ್ಯ ಪಡುತ್ತೇನೆ: ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡುವುದು ನಿಜವಾಗಿಯೂ ಅಗತ್ಯವಿದೆಯೇ /system/apps, ಬಳಕೆದಾರರು ಅವರನ್ನು ಅಲ್ಲಿ ನೋಡಿದರೆ, ಅದು ಅನಪೇಕ್ಷಿತವಾಗಿದೆ. ಬಹುಶಃ ಅವುಗಳನ್ನು ಬಳಕೆದಾರರು ಎದುರಿಸದ ಇನ್ನೊಂದು ಸ್ಥಳದಲ್ಲಿ ಇರಿಸುವುದು ಉತ್ತಮವೇ? ಇದು Mac OS X ನಲ್ಲಿ ಮಾಡಿದಂತೆಯೇ, ಅಲ್ಲಿ ಪ್ಯಾಕೇಜುಗಳ ವಿಷಯಗಳು .app, ಇದು ಬಳಕೆದಾರರಿಗೆ ಗೋಚರಿಸಬಾರದು /Applications, /ಸಿಸ್ಟಮ್/ಲೈಬ್ರರಿ/...“` ನ ಆಳದಲ್ಲಿ ಅಡಗಿಕೊಳ್ಳುತ್ತಿದೆ.
ಅವಲಂಬನೆಗಳ ಬಗ್ಗೆ ಏನು?
ಹೇಗಾದರೂ ಅವಲಂಬನೆಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು ಯೋಗ್ಯವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ಸರಿ? ಕ್ಯೂಟಿಯನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಹೈಕು ಸ್ಥಾಪನೆಯ ಕಡ್ಡಾಯ ಭಾಗವೆಂದು ಪರಿಗಣಿಸಬಹುದೇ? ಇಲ್ಲ! Qt ಅನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ. ELF ಫೈಲ್ಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಪ್ಯಾಕೇಜ್ ಬಿಲ್ಡರ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅವಲಂಬನೆಗಳನ್ನು ಪತ್ತೆ ಮಾಡಬಹುದೇ? ಹೈಕುಪೋರ್ಟರ್ ನಿಜವಾಗಿ ಇದನ್ನು ಮಾಡುತ್ತದೆ ಎಂದು ನನಗೆ ಹೇಳಲಾಯಿತು, ಆದರೆ package ಸಂ. ಏಕೆಂದರೆ ಇದು ಕೇವಲ "ಪ್ಯಾಕೇಜ್ ಬಿಲ್ಡರ್" ಆಗಿದ್ದು ಅದು ತನ್ನದೇ ಆದ ಫೈಲ್ಗಳನ್ನು ರಚಿಸುತ್ತದೆ hpkg.
ಹೈಕುವಿನಿಂದ ಹೊರಗಿರುವ ಪ್ಯಾಕೇಜ್ಗಳ ಮೇಲೆ ಪ್ಯಾಕೇಜ್ ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿರಬಾರದು ಎಂಬ ನೀತಿಯನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಹೈಕುವನ್ನು ಹೆಚ್ಚು ಅತ್ಯಾಧುನಿಕಗೊಳಿಸಬೇಕೇ? haikuports? (ನಾನು ಬಯಸುತ್ತೇನೆ, ಏಕೆಂದರೆ ಅಂತಹ ನೀತಿಯು ವಿಷಯಗಳನ್ನು ಹೆಚ್ಚು ಸುಲಭಗೊಳಿಸುತ್ತದೆ - ಹೆಚ್ಚುವರಿ ಪ್ಯಾಕೇಜ್ ಮೂಲಗಳೊಂದಿಗೆ ಗೊಂದಲಗೊಳ್ಳದೆ, ಎಲ್ಲಿಂದಲಾದರೂ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಪ್ರತಿಯೊಂದು ಪ್ಯಾಕೇಜ್ನ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರಿಹರಿಸಲು ಸಿಸ್ಟಮ್ ಸಾಧ್ಯವಾಗುತ್ತದೆ.)
ಶ್ರೀ waddlesplash ವಿವರಿಸುತ್ತದೆ:
ಡೆವಲಪರ್ಗಳ ಸ್ವಾತಂತ್ರ್ಯವನ್ನು ತುಂಬಾ ಮಿತಿಗೊಳಿಸಲು ನಾವು ಬಯಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಕಂಪನಿಎಕ್ಸ್ ತನ್ನದೇ ಆದ ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಅವಲಂಬನೆಗಳೊಂದಿಗೆ (ಮತ್ತು ಆದ್ದರಿಂದ ರೆಪೊಸಿಟರಿ) ಬೆಂಬಲಿಸಲು ಬಯಸಿದರೆ, ಅದು ಸಂಪೂರ್ಣವಾಗಿ ಮುಕ್ತವಾಗಿ ಮಾಡುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿದೆ.
ಆ ಸಂದರ್ಭದಲ್ಲಿ, ಅಪ್ಲಿಕೇಶನ್ನೊಂದಿಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲವನ್ನೂ ಸಂಪೂರ್ಣವಾಗಿ ಪ್ಯಾಕೇಜಿಂಗ್ ಮಾಡುವ ಮೂಲಕ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಪ್ಯಾಕೇಜ್ಗಳು ಹೈಕುಪೋರ್ಟ್ಗಳಲ್ಲಿ ಸೇರಿಸದ ಯಾವುದರ ಮೇಲೆ ಅವಲಂಬನೆಯನ್ನು ತಪ್ಪಿಸುವುದನ್ನು ಶಿಫಾರಸು ಮಾಡುವುದು ಯೋಗ್ಯವಾಗಿದೆ. ಆದರೆ ಈ ಸರಣಿಯಲ್ಲಿ ಭವಿಷ್ಯದ ಲೇಖನಕ್ಕೆ ಇದು ಒಂದು ವಿಷಯ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. [ಲೇಖಕರು AppImage ಕಡೆಗೆ ಹೋಗುತ್ತಿದ್ದಾರೆಯೇ? - ಅಂದಾಜು ಅನುವಾದಕ]
ಅಪ್ಲಿಕೇಶನ್ ಐಕಾನ್ ಸೇರಿಸಲಾಗುತ್ತಿದೆ
ನನ್ನ ಹೊಸದಾಗಿ ರಚಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್ನ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಅಚ್ಚುಕಟ್ಟಾಗಿ ಅಂತರ್ನಿರ್ಮಿತ ಐಕಾನ್ಗಳಲ್ಲಿ ಒಂದನ್ನು ಸೇರಿಸಲು ನಾನು ಬಯಸಿದರೆ ಏನು ಮಾಡಬೇಕು? ಇದು ಅದ್ಭುತ ವಿಷಯವಾಗಿದೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಇದು ಮುಂದಿನ ಲೇಖನಕ್ಕೆ ಆಧಾರವಾಗಿರುತ್ತದೆ.
ನಿರಂತರ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಾಣಗಳನ್ನು ಸಂಘಟಿಸುವುದು ಹೇಗೆ?
Inkscape ನಂತಹ ಯೋಜನೆಯನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ (ಹೌದು, ಇದು ಇನ್ನೂ ಹೈಕುವಿನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ ಎಂದು ನನಗೆ ತಿಳಿದಿದೆ, ಆದರೆ ಅದರ ಮೇಲೆ ಪ್ರದರ್ಶಿಸಲು ಅನುಕೂಲಕರವಾಗಿದೆ). ಅವರು ಮೂಲ ಕೋಡ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಹೊಂದಿದ್ದಾರೆ https://gitlab.com/inkscape/inkscape.
ಪ್ರತಿ ಬಾರಿ ಯಾರಾದರೂ ತಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ರೆಪೊಸಿಟರಿಗೆ ಒಪ್ಪಿಸಿದಾಗ, ಬಿಲ್ಡ್ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ, ಅದರ ನಂತರ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರೀಕ್ಷಿಸಲಾಗುತ್ತದೆ, ನಿರ್ಮಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಲಿನಕ್ಸ್ಗಾಗಿ AppImage ಸೇರಿದಂತೆ ವಿವಿಧ ಪ್ಯಾಕೇಜ್ಗಳಲ್ಲಿ ಪ್ಯಾಕ್ ಮಾಡಲಾಗುತ್ತದೆ (ಸ್ಥಳೀಯ ಪರೀಕ್ಷೆಯನ್ನು ಲೆಕ್ಕಿಸದೆಯೇ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದಾದ ಸ್ವತಂತ್ರ ಅಪ್ಲಿಕೇಶನ್ ಪ್ಯಾಕೇಜ್. ಸಿಸ್ಟಮ್ನಲ್ಲಿ ಏನನ್ನು ಸ್ಥಾಪಿಸಬಹುದು ಅಥವಾ ಸ್ಥಾಪಿಸದೇ ಇರಬಹುದು [ನನಗೆ ಗೊತ್ತಿತ್ತು! - ಅಂದಾಜು ಅನುವಾದಕ]) ಪ್ರತಿ ಶಾಖೆಯ ವಿಲೀನ ವಿನಂತಿಯೊಂದಿಗೆ ಅದೇ ವಿಷಯ ಸಂಭವಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನೀವು ವಿಲೀನಗೊಳಿಸುವ ಮೊದಲು ವಿಲೀನ ವಿನಂತಿಯಲ್ಲಿ ಪ್ರಸ್ತಾಪಿಸಲಾದ ಕೋಡ್ನಿಂದ ನಿರ್ಮಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು.
ಬಿಲ್ಡ್ ಸ್ಥಿತಿಗಳೊಂದಿಗೆ ವಿನಂತಿಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಿ ಮತ್ತು ಬಿಲ್ಡ್ ಯಶಸ್ವಿಯಾದರೆ ಕಂಪೈಲ್ ಮಾಡಿದ ಬೈನರಿಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯ (ಹಸಿರು ಬಣ್ಣದಲ್ಲಿ ಗುರುತಿಸಲಾಗಿದೆ)
ನಿರ್ಮಾಣವು ಡಾಕರ್ ಕಂಟೈನರ್ಗಳಲ್ಲಿ ಸಾಗುತ್ತದೆ. GitLab Linux ನಲ್ಲಿ ಉಚಿತ ಓಟಗಾರರನ್ನು ನೀಡುತ್ತದೆ, ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಓಟಗಾರರನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ (ಹಾಗೆ, ಡಾಕರ್ ಅಥವಾ ತತ್ಸಮಾನವನ್ನು ಹೊಂದಿಲ್ಲ ಎಂದು ನನಗೆ ತಿಳಿದಿರುವ ಹೈಕುದಂತಹ ಸಿಸ್ಟಮ್ಗಳಿಗೆ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನಾನು ನೋಡುತ್ತಿಲ್ಲ, ಆದರೆ FreeBSD ಗಾಗಿ ಯಾವುದೇ ಡಾಕರ್ ಇಲ್ಲ, ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆ ಹೈಕುಗೆ ವಿಶಿಷ್ಟವಲ್ಲ).
ತಾತ್ತ್ವಿಕವಾಗಿ, ಹೈಕು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಲಿನಕ್ಸ್ಗಾಗಿ ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದು. ಈ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಹೈಕುಗಾಗಿ ಜೋಡಣೆಯನ್ನು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪೈಪ್ಲೈನ್ಗಳಲ್ಲಿ ಪರಿಚಯಿಸಬಹುದು. ಅಡ್ಡ ಕಂಪೈಲರ್ಗಳಿವೆಯೇ? ಅಥವಾ ನಾನು QEMU/KVM (ಡಾಕರ್ನಲ್ಲಿ ಆ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಊಹಿಸಿ) ಬಳಸಿಕೊಂಡು ಡಾಕರ್ ಕಂಟೈನರ್ನೊಳಗೆ ಎಲ್ಲಾ ಹೈಕುವನ್ನು ಅನುಕರಿಸಬೇಕೆ? ಮೂಲಕ, ಅನೇಕ ಯೋಜನೆಗಳು ಇದೇ ತತ್ವಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಸ್ಕ್ರಿಬಸ್ ಇದನ್ನು ಮಾಡುತ್ತದೆ - ಇದು ಹೈಕುಗೆ ಈಗಾಗಲೇ ಲಭ್ಯವಿದೆ. ಒಂದು ದಿನ ನಾನು ಕಳುಹಿಸುವ ದಿನ ಬರುತ್ತದೆ ಅಂತಹ ಹೈಕು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲು ಇತರ ಯೋಜನೆಗಳಿಗೆ ವಿನಂತಿಗಳನ್ನು ಎಳೆಯಿರಿ.
ಅಭಿವರ್ಧಕರಲ್ಲಿ ಒಬ್ಬರು ವಿವರಿಸುತ್ತಾರೆ:
ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ವತಃ ರಚಿಸಲು ಬಯಸುವ ಇತರ ಯೋಜನೆಗಳಿಗೆ, ಸಾಮಾನ್ಯ CMake/CPack ವಿಧಾನವನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಪ್ಯಾಕೇಜಿನ ಬಿಲ್ಡ್ ಪ್ರೋಗ್ರಾಂಗೆ ನೇರವಾಗಿ ಕರೆ ಮಾಡುವ ಮೂಲಕ ಇತರ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಬೆಂಬಲಿಸಬಹುದು, ಜನರು ಅದರಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ ಅದು ಉತ್ತಮವಾಗಿರುತ್ತದೆ. ಅನುಭವವು ತೋರಿಸುತ್ತದೆ: ಇಲ್ಲಿಯವರೆಗೆ ಹೆಚ್ಚಿನ ಆಸಕ್ತಿ ಇರಲಿಲ್ಲ, ಆದ್ದರಿಂದ ಹೈಕುಪೋರ್ಟರ್ ನಮಗೆ ಅನುಕೂಲಕರವಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ, ಆದರೆ, ಅಂತಿಮವಾಗಿ, ಎರಡೂ ವಿಧಾನಗಳು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕು. ನಾವು Linux ಅಥವಾ ಯಾವುದೇ ಇತರ ಸರ್ವರ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ನಿಂದ ಕ್ರಾಸ್-ಬಿಲ್ಡಿಂಗ್ ಸಾಫ್ಟ್ವೇರ್ಗಾಗಿ ಪರಿಕರಗಳ ಗುಂಪನ್ನು ಪರಿಚಯಿಸಬೇಕು (ಹೈಕುವನ್ನು ಸರ್ವರ್ಗಳಲ್ಲಿ ರನ್ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ).
ನಾನು ನಿಂತಿರುವ ಗೌರವವನ್ನು ನೀಡುತ್ತೇನೆ. ನಿಯಮಿತ ಲಿನಕ್ಸ್ ಬಳಕೆದಾರರು ಸರ್ವರ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗೆ ಅಗತ್ಯವಿರುವ ಈ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಲೋಡ್ ಮತ್ತು ಹೆಚ್ಚುವರಿ ಸಾಮಾನುಗಳನ್ನು (ಭದ್ರತೆ, ಕಟ್ಟುನಿಟ್ಟಾದ ನಿಯಂತ್ರಣ, ಇತ್ಯಾದಿ) ಒಯ್ಯುತ್ತಾರೆ, ಆದರೆ ವೈಯಕ್ತಿಕ ಒಂದಕ್ಕೆ ಅಲ್ಲ. ಹಾಗಾಗಿ ಲಿನಕ್ಸ್ನಲ್ಲಿ ಹೈಕು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ ಎಂದು ನಾನು ಸಂಪೂರ್ಣವಾಗಿ ಒಪ್ಪುತ್ತೇನೆ.
ತೀರ್ಮಾನಕ್ಕೆ
POSIX ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಹೈಕುಗೆ ಪೋರ್ಟ್ ಮಾಡುವುದು ಸಾಧ್ಯ, ಆದರೆ ಸಾಮಾನ್ಯ ಮರುನಿರ್ಮಾಣಕ್ಕಿಂತ ಹೆಚ್ಚು ದುಬಾರಿಯಾಗಬಹುದು. irc.freenode.net ನೆಟ್ವರ್ಕ್ನಲ್ಲಿರುವ #haiku ಚಾನಲ್ನ ಜನರ ಸಹಾಯವಿಲ್ಲದಿದ್ದರೆ ನಾನು ಖಂಡಿತವಾಗಿಯೂ ದೀರ್ಘಕಾಲ ಇದರೊಂದಿಗೆ ಸಿಲುಕಿಕೊಳ್ಳುತ್ತೇನೆ. ಆದರೆ ಅವರು ಯಾವಾಗಲೂ ತಪ್ಪು ಏನು ಎಂದು ತಕ್ಷಣ ನೋಡಲಿಲ್ಲ.
Qt ನಲ್ಲಿ ಬರೆಯಲಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸುಲಭವಾದ ವಿನಾಯಿತಿಯಾಗಿದೆ. ನಾನು ಯಾವುದೇ ಸಮಸ್ಯೆಗಳಿಲ್ಲದೆ ಸರಳವಾದ ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಒಟ್ಟಿಗೆ ಸೇರಿಸಿದೆ.
ಸರಳವಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು ತುಂಬಾ ಸುಲಭ, ಆದರೆ "ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ ಬಿಡುಗಡೆಯಾದ" ಪದಗಳಿಗಿಂತ ಮಾತ್ರ, ಅಂದರೆ. ಹೈಕುಪೋರ್ಟ್ಗಳಲ್ಲಿ ಬೆಂಬಲಕ್ಕಾಗಿ ಉದ್ದೇಶಿಸಲಾದ ಆವೃತ್ತಿಯ ಮೂಲ ಕೋಡ್ ಆರ್ಕೈವ್ಗಳನ್ನು ಹೊಂದಿದೆ. GitHub ನೊಂದಿಗೆ ನಿರಂತರ ನಿರ್ಮಾಣಕ್ಕಾಗಿ (ಬದಲಾವಣೆಗಳ ಪ್ರತಿ ಬದ್ಧತೆಗಾಗಿ ನಿರ್ಮಿಸಲು), ಎಲ್ಲವೂ ಅಷ್ಟು ಸರಳವಾಗಿಲ್ಲ ಎಂದು ತೋರುತ್ತದೆ. ಇಲ್ಲಿ Haiku Mac ನಲ್ಲಿನ ಫಲಿತಾಂಶಕ್ಕಿಂತ Linux ವಿತರಣೆಯಂತೆ ಭಾಸವಾಗುತ್ತದೆ, ಅಲ್ಲಿ ನೀವು XCode ನಲ್ಲಿ "ಬಿಲ್ಡ್" ಬಟನ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ನೀವು ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಪಡೆಯುತ್ತೀರಿ .app, ಡಿಸ್ಕ್ ಇಮೇಜ್ಗೆ ಸೇರಿಸಲು ಸಿದ್ಧವಾಗಿದೆ .dmg, ನನ್ನ ವೆಬ್ಸೈಟ್ನಲ್ಲಿ ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ.
"ಸರ್ವರ್" ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಆಧರಿಸಿ ಅಪ್ಲಿಕೇಶನ್ಗಳ ನಿರಂತರ ನಿರ್ಮಾಣ, ಉದಾಹರಣೆಗೆ, ಡೆವಲಪರ್ಗಳಿಂದ ಬೇಡಿಕೆಯಿದ್ದರೆ ಲಿನಕ್ಸ್ ಹೆಚ್ಚಾಗಿ ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಆದರೆ ಈ ಸಮಯದಲ್ಲಿ ಹೈಕು ಯೋಜನೆಯು ಇತರ, ಹೆಚ್ಚು ಒತ್ತುವ ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿದೆ.
ನೀವೇ ಪ್ರಯತ್ನಿಸಿ! ಎಲ್ಲಾ ನಂತರ, ಹೈಕು ಯೋಜನೆಯು ಡಿವಿಡಿ ಅಥವಾ ಯುಎಸ್ಬಿಯಿಂದ ಬೂಟ್ ಮಾಡಲು ಚಿತ್ರಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ежедневно. ಸ್ಥಾಪಿಸಲು, ಚಿತ್ರವನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಬಳಸಿಕೊಂಡು USB ಫ್ಲಾಶ್ ಡ್ರೈವ್ಗೆ ಬರ್ನ್ ಮಾಡಿ ಎಚರ್
ಪ್ರಶ್ನೆಗಳಿವೆಯೇ? ನಾವು ನಿಮ್ಮನ್ನು ರಷ್ಯನ್ ಭಾಷೆಗೆ ಆಹ್ವಾನಿಸುತ್ತೇವೆ ಟೆಲಿಗ್ರಾಮ್ ಚಾನಲ್.