Major League Baseball, known as MLB, is a cornerstone of the American sporting landscape, ingrained in the culture and heart of sports aficionados. As the world becomes increasingly connected, the joys of baseball have transcended borders, reaching passionate fans far and wide. For enthusiasts in South Korea, following the latest in baseball action is as easy and accessible as ever, thanks to cutting-edge MLB중계 (MLB broadcasts).

The thrill of baseball lies in its suspense and unpredictability. Every game is a new chapter in an ongoing saga filled with potential. From the crack of the bat to the rush of stealing a base, the essences of this sport are living poetry in motion. Imagine capturing the intensity of a bottom-of-the-ninth scenario, mirroring the iconic moments that have punctuated baseball history. Fans are not just passive viewers; they ride the highs and lows with their favorite teams and players.

Understanding the complexities of the game further enriches the spectator experience. Strategies and statistics that dictate the trajectory of the sport are scattered like puzzle pieces throughout each season. The stats—ERA, RBI, batting averages—construct a narrative that only the true devotee can decode. And as the season progresses, these numbers tell the tale of victory and defeat, of underdogs and champions.

Access to live games and recaps through offers fans an immersive experience. It’s not just about watching the games; it’s about feeling a sense of belonging to a global community of baseball lovers. Korean fans, despite the time difference, can cheer on their compatriots who have become stars in the MLB, shrinking the globe with every home run hit or base stolen by their national heroes.

The crescendo of each MLB season, the World Series, is a focal point for any fan. Here, legacies are created, and history is made. The anticipation of each pitch, the strategy behind every managerial decision, and the execution of every play culminates in a sporting event that captivates millions.

While the sensory experience of baseball is unmatched, the technological advancements in MLB중계 means fans no longer have to imagine. Every slide into base, every outfield dive, and every umpire call can be experienced in crisp, real-time clarity, accompanied by expert commentary that brings added depth to each game.

When the final out is called, and the cheers either erupt or fall silent, the conversation continues. Fans dissect plays, question decisions, and speculate on future matchups. The sense of community found in shared enthusiasm for MLB nurtures a solidarity that transcends language and geography.

As the excitement for MLB in South Korea grows, accessing live broadcasts and staying updated with the games is vital for the dedicated fan. MLB중계 ensures that Korean viewers are always in the loop, connected with the latest developments, and ready for the swings of the next encounter. The sport of baseball knows no bounds, and thankfully, neither does the passion of its followers.


Q1. How can Korean fans watch MLB games live?
A1. Korean fans can watch MLB games live through various online streaming services and TV channels that offer MLB중계.

Q2. Are there Korean players in the MLB?
A2. Yes, there have been and currently are several Korean players in the MLB, making significant contributions to the league.

Q3. Why is baseball popular in South Korea?
A3. Baseball gained popularity in South Korea due to historical influences, the success of Korean MLB players, and the country’s own professional baseball league, the KBO.

Q4. Can fans in Korea watch MLB games in real-time despite the time difference?
A4. Yes, with MLB중계, fans can watch games in real-time, although they might occur at unconventional hours due to the time difference.

Q5. What makes watching MLB중계 special for Korean fans?
A5. Watching MLB중계 is special for Korean fans because it allows them to follow the sport in-depth, keep track of Korean players in the league, and partake in the global excitement of MLB.…

Read More

How to Use the FreeBSD Port Patch System

The FreeBSD ports collection provides software that can be downloaded, configured, compiled, and installed. Each piece of software has a port description file called pkg-descr.

This file should contain a brief description of the port, preferably in an easily readable format such as a man page or README. It is also used as a basis for displaying information to users via make -v options and to automated systems like poudriere and FreshPorts.

1. Update the INDEX

In order to use the port management system, one needs to have an up to date INDEX. This is used by tools like portupgrade and the pkg-info command.

The INDEX is a database of rows, one for each port in the FreeBSD ports system, and lives directly under the portsdir /usr/ports. The INDEX records dependencies between the ports and the pkg-info data which describes packages (or pkgs).

To update the INDEX, the program first determines all installed ports. Then it follows the MOVED file to discover if any of them have taken a new origin. It then recomputes the dependency information using “make build-depend-list” and similar tools for the ports requiring attention. It also updates VALID_CATEGORIES if the port has been moved to a new category.


Keeping ports updated with security patches in a timely fashion and upgrading to a newer release of FreeBSD are important tasks for system administrators. These can be done with a utility called freebsd-update.

The pkg-descr provides a more detailed description of the program, and a more accurate picture of how it should work on your site (for example, whether it should have a hard-coded /usr/local path or not). The pkg-plist is used to list the files installed by the port, and tells the ports system which files to remove upon deinstallation.

The EXTRA_PATCHES section can contain conditional patches, which specify which shell to use for line-ending conversion and other processing. The pkg-config section defines which options are available for the port, including security options.

3. Update the PACKAGE

For some ports there may be patches that need to be applied when a specific FreeBSD version is used or when the pkg_config option is enabled. These conditional patches should be placed in the EXTRA_PATCHES directory, if not already present. The patch program accepts the difference listing produced by diff and applies it to one or more original files, producing patched versions of those files.

This process can be automated by using poudriere, part of the ports-mgmt/poudriere package. It maintains jails where these steps can be tested and run without affecting the host system. For more information see the poudriere manual page. This method also supports upgrading to new minor and major releases. It can be used to update the core operating system and to upgrade ports tree installed software packages with a single command.

4. Update the PATCHFILES

The first part of a ports Makefile sets its PORTNAME. This is a unique name that distinguishes the software from all other FreeBSD packages. It is used in a variety of ways, such as for PKGBASE and DISTDIR.

The second part of a ports Makefile sets its MASTER_SITES and PATCH_SITES variables. These are used when a new port is created to specify where the tarball will be downloaded and how it will be placed on the local system.

Some ports require specific architectures, such as x86 or amd64. The read-only makevar TARGET_ARCH sets these constraints, and ports that do not have them set are marked with the value NO_ARCH. The port patch program uses a special diff utility to record the differences between original files and their modified versions.

5. Update the PORT

Some ports require patch files that are not applied automatically by the framework. This can be done by placing them in EXTRA_PATCHES. This variable can also be used to set the base directory for the line-ending conversion, which is useful if the distfiles include many tarballs.

The PORTS_UPDATING file in /usr/ports provides instructions for upgrading the ports on your system. It can be a good idea to read this before upgrading, as it often indicates any extra steps that need to be taken to upgrade the software.

There are several utilities in the Ports Collection that perform the actual upgrade process, such as portmaster, poudriere and Synth. It is recommended to use poudriere, which maintains jails where each of the above steps can be tested without affecting the host system.

Go Home

Read More

Engaging with the pulse of live action, the thrill of witnessing each play as it unfolds, and the unfiltered excitement that comes with real-time reactions, sports broadcasting has evolved into a cornerstone of modern entertainment. In Korea, 스포츠중계 or sports broadcasting, captures this electrifying experience, bringing games and matches right into the homes and devices of eager fans. From the gentle arc of a baseball to the dynamic sprints in athletics, Korean viewers are treated to an array of sports through sophisticated broadcast technologies that dissolve distance and time zones.

Imagine yourself perched at the edge of your seat, your gaze affixed to the screen as you follow every movement of the athletes, each one a master of their craft. It’s more than just a game; it’s a narrative unfolding in real time, a saga of triumph, despair, resilience, and celebration. The charisma of 스포츠중계 lies in its capacity to build bridges between you and the pulsating heart of the sports arena, regardless of where you are. The real essence of sports is not only in the victory but in the stories that ripple through the performances, the strategies plotted, and the unforeseen turns that leave viewers in awe.

Thanks to advancements in streaming technology, you can now carry the thrills of the sporting world in your pocket. Just a few taps on a device connect you to real-time broadcasts. The accessibility has transcended traditional barriers, allowing fans to immerse in their favorite sports without geographical restrictions. Such is the power of 스포츠중계; it unites fans in a shared experience that transcends language, culture, and boundaries.

With the final whistle, buzzer, or checkered flag, each event wraps up, not just with a score, but with tales of individual prowess and collective effort. And as the screen fades to black, and the fervor dies down, fans are left with the echo of what was a shared roller coaster of emotions.

Sports broadcasting, particularly 스포츠중계, has indeed become more than a visual feast; it’s a communal ritual that celebrates human potential and sporting excellence.


**What is 스포츠중계?**
스포츠중계 refers to sports broadcasting in Korea, providing real-time coverage of sports events to viewers through various broadcast means.

**How has streaming technology impacted sports broadcasting?**
Streaming technology has revolutionized sports broadcasting by increasing accessibility, allowing fans to watch live events from anywhere at any time on their devices.

**Why is sports broadcasting important to fans?**
It connects fans with the action and excitement of live sports events, creating a sense of community and shared experience among viewers worldwide.

**Can international viewers access 스포츠중계?**
Yes, with the expansion of streaming services and global broadcast agreements, many sports broadcasts are now available internationally, including Korean 스포츠중계.

**What makes sports broadcasting engaging to viewers?**
The combination of real-time action, the skill of the athletes, the drama of competition, and the shared emotions of fans all contribute to a captivating viewing experience.…

Read More

In the dynamic world of sports betting, the term 토토총판, or ‘Toto distributor’ in English, stands out as a pivotal role within the industry. This concept refers to individuals or entities that operate as middlemen, connecting bettors with online sports betting platforms. Their responsibilities are diverse, including marketing the platform, managing client relationships, and ensuring the smooth operation of betting activities.

At its core, a 토토총판 works in a networked environment, leveraging their expertise to facilitate a seamless betting experience for avid sports enthusiasts. They are instrumental in driving user engagement, often utilizing various promotional tactics to attract and retain bettors. This could involve special bonus offers, loyalty programs, or providing expert insights on sporting events, all designed to enhance the betting experience and improve the chances of winning.

The significance of a 토토총판 cannot be overstated, as they are often the face of the betting platform itself, representing the brand and its values. Transparency and trust are key components of their role, as they navigate the complexities of online betting legislation and ethical practices. This ensures that all activities remain within the legal framework, thereby protecting the interests of both the platform and its users.

A successful 토토총판 must have an innate understanding of the sports betting market, keeping up with the latest trends and shifts in the industry. They must be adept at reading the market, predicting potential outcomes, and providing bettors with the information they require to make informed decisions. This strategic acumen is combined with an unparalleled commitment to customer service, making them a vital conduit between betting platforms and the betting community.

The emergence of online betting has revolutionized the role of 토토총판, expanding their reach and allowing them to cater to a global audience. With the digital world removing geographical limitations, these distributors can now operate across various markets, adapting to different languages and cultural nuances to ensure their offerings are relevant and accessible.

A day in the life of a 토토총판 is filled with activity, from analyzing sports data to communicating with clients and troubleshooting any issues that may arise. The goal is to foster a betting environment that is both enjoyable and profitable, providing guidance and support every step of the way.

In conclusion, a 토토총판 is more than just a distributor; they are the linchpin of the betting ecosystem, driving growth and ensuring the industry remains vibrant and competitive. Their role is multifaceted and critically important to the sports betting community.


1. What services does a 토토총판 provide?
A 토토총판 provides services such as marketing online betting platforms, managing customer relations, and offering expert advice on sports events to enhance the betting experience.

2. Why is trust important for a Toto distributor?
Trust is essential because a Toto distributor deals with financial transactions and sensitive customer information, and must operate within legal and ethical boundaries.

3. How has the role of a 토토총판 changed with online betting?
The switch to online betting has allowed 토토총판 to reach a global audience and offer services across different regions, overcoming geographical constraints.

4. Can 토토총판 operate in different languages and cultures?
Yes, successful 토토총판 can adapt to various languages and cultural contexts to cater to a diverse customer base.

5. What qualities make a successful 토토총판?
A successful 토토총판 is knowledgeable about the betting industry, skilled in market analysis, committed to customer service, and operates with a high degree of integrity and transparency.…

Read More

FreeBSD – How to Install Third-Party Software Using the Ports Collection

FreeBSD users are able to download and install third-party applications, known as ports, on their systems. The Ports Collection is constantly being updated with new software. Before upgrading a port read /usr/ports/UPDATING from the top to the date closest to the last time ports were upgraded or installed.

The /usr/ports/distfiles directory is automatically populated with the downloaded source code during the “extract” portion of building a port. Some ports include pkg-message files and other files to handle special situations.


Unlike packages, which install binary software, ports install the source code of a program into the /usr/local hierarchy. This allows the user to customize their software by modifying compiler flags or passing custom compile options. This can be a slow process, but it allows the user to gain a greater understanding of how an application is built and configured.

The first step of the installation process is to fetch the source archive. This can be done using portsnap or if the system is behind a firewall or a proxy server, with fetch(1).

Once the archive has been downloaded, the port must be configured and compiled before it can be installed. This configuration step can be a bit intimidating for users unfamiliar with ports, but it is very important for getting the most out of this package management system. During this stage, ports will verify the integrity of the source, change contexts as necessary and compile the software into binary files.


There are several tools available for upgrading the ports collection to newer versions of software. The most popular is portupgrade which performs the upgrade automatically by fetching and comparing a ports tree index (usually called an INDEX) from the FreeBSD web site with an existing install. This tool can be used with the -a option to update all installed ports at once and with the -F option to just fetch distfiles (or packages, with -P) without building or installing anything.

Another tool is portmaster, which provides a way to control ports upgrades manually. It has a lot of options that can help you avoid the pitfalls of upgrading a system with a ports tree (including preventing updates from installing two versions of the same software). It is recommended to read /usr/ports/UPDATING in order to understand the risks of using ports and the additional steps that might be necessary. There are times when critical pieces of software do not have packaged versions and thus must use ports.


Once the partition layout is complete bsdinstall will ask whether any additional configuration should be performed before rebooting into the new FreeBSD system. This menu provides a chance to make changes to the default partition layout or to select from available options for installing the GENERIC kernel.

The next step will download the ports tree hierarchy to the /usr/ports directory. This can take a significant amount of time and should only be done once.

Ports are a file-system hierarchy that categorize each piece of software the FreeBSD system knows how to build and install. The system also knows how to automatically download, extract, patch, compile and install the software.

Packages are pre-compiled versions of applications and system tools. They are generally smaller in size than ports and do not require compilation time. Using packages is recommended for sites that prefer to avoid the extra work involved in using ports and can benefit from the shorter compilation time.


The ports collection provides an efficient method to prepackage software applications for FreeBSD. Its directory tree under /usr/ports organizes software primarily by function or language with some categories devoted to specific programming languages such as Tcl/Tk or Perl. The ports system is also used by NetBSD as the basis for its pkgsrc package management tool.

Many ports have dependencies, which need to be understood when using the port management tools. For example, a port may depend on a set of tools that are required to build it. These are called run dependencies and need to be recursively expanded (that is, if portA depends on gmake then all gmake dependencies must be expanded).

Some ports have configurable options that require interaction with the user. These are called configure options and include things such as processor flags and compiler arguments. The config-recursive target of make tries to determine all ports options that must be configured and pauses for user interaction until all the ports are configured.

Fly back to the home screen

Read More

FreeBSD Ports Quarterly Report

The number of open and unassigned PRs has increased slightly from last quarter. In addition, the ports tree gained several new committers, including adamw and feld.

Core also requested the removal of the misc/jive port, which turns text into offensively racist parody. This was done in order to make the project more welcoming to people of all backgrounds.

Packages are pre-compiled binary packages

Packages are a collection of makefiles arranged in a directory hierarchy that provide a way to build and install add-on software on FreeBSD. They start from the software vendor’s raw source code and construct it for FreeBSD. The resulting binary package is installed and updated with little or no user intervention. Ports allow the system to support a wider range of software and applications, and they provide a more flexible alternative to Linux’s apt-get system.

Unlike many Linux distributions, FreeBSD’s ports system avoids mixing quarterly and latest packages. This reduces the number of debugging problems that can arise when incompatible software versions are mixed together, and it improves stability for the entire system.

A pkg package contains the binary version of an application, plus configuration, patches, and other data. The filename of a pkg is formed by adding a prefix and suffix to the original application name, e.g. vorbis-tools. A pkg also contains a PORTVERSION and PORTREVISION, which are updated periodically and can be used to track changes in the application’s development.

They are a more flexible alternative

Unlike packages, which contain pre-compiled binary software, ports are collections of Makefiles that organize the build process and provide a framework for constructing and installing applications. Ports are also more flexible, allowing users to modify the build options and provide additional customization.

When a new port is built, it may require many dependencies that must be configured. This can pause the system several times for user interaction as the build options screen is displayed. To avoid this, run make config-recursive within the port skeleton.

To get an up-to-date ports tree, use pkg to install the latest git version of your local ports repository. You can also use fetch(1) to update the ports tree with a shallow clone that retains none or a limited amount of history. This can be useful if you want to limit the revisions that are downloaded from your system repository. This can also be used to prevent conflicts between the quarterly and latest branches of a pkg repository.

They are easier to install

A port is a set of makefiles, patches, and description files that allows an application to be built and installed on FreeBSD. These are stored in /usr/ports and are usually used to install software. The FreeBSD ports collection and the pkg package manager use these ports to install applications.

The current ports system has many problems, including a lack of crucial information and a tendency to break installations. It is also incompatible with external repositories. Baptiste Daroussin addressed these issues in his 2012 BSDCan talk, Modernizing FreeBSD’s Package Management.

To fix these problems, a new version of pkg, portsfetch, has been introduced. The command updates the local ports tree from Git instead of SVN. If the portsfetch command finds that the local ports tree has not been emptied, it will offer to do so. Otherwise, it will switch to the quarterly Git branch. This offers a more reliable experience for installing and upgrading ports. It also improves security by limiting the number of security patches that can be applied to packages in the quarterly branch.

They are more stable

The Linux emulation stack in the Ports Collection was updated to CentOS 6.6, allowing a wider range of Linux software to run on FreeBSD. This also helps to improve the stability of the system, which may be a concern for users that want to avoid bleeding-edge versions of software. Other Linux distributions split packages into different categories, such as stable and unstable. While this offers more flexibility, it can be difficult to manage and can be confusing for newcomers to the operating system.

The Ports Collection now includes a version of Crystal that supports mips and aarch64. This makes it easier to use Crystal in ports projects and to maintain a binary package that will work on both platforms. This quarter, the project also added patches to GCC 4.9 that enable FreeBSD on Google Cloud, and adapted and upstreamed aarch64 patches for binutils 2.25. In addition, a new policy was voted on to allow more people to vote on doceng and core votes.

Redirect to the main interface

Read More

FreeBSD in VirtualBox

Virtualization offers a great opportunity to run different operating systems on your computer. You don’t need incredible hardware to make it work – any recent AMD or Intel CPU with VT-x or AMD-V support will do.

Sun (now Oracle) VirtualBox is one of the most popular commercial and open source VMMs. It offers both a dual-licensed commercial version and an OSE edition that’s natively ported to FreeBSD.

Hardware Requirements

There are a number of requirements that must be met to run FreeBSD in VirtualBox. Most notably, the computer must have a supported processor. You can find the current list of supported processors for each version of FreeBSD on the hardware compatibility page.

The FreeBSD host system should have enough memory and hard disk space to host one or more virtual machines. Depending on the size of the VM and the complexity of the operating system, this may require 256-384MB of RAM and 6+GB of hard disk space.

The FreeBSD VirtualBox port includes the Guest Additions suite of programs which enable a variety of features in a guest operating system. These include mouse pointer integration (making it easy to switch between the host and a guest) and faster video rendering. These require a recent version of the VirtualBox software and have not yet been fully tested on FreeBSD. If you encounter problems with these programs, refer to the Known Issues section below for further troubleshooting steps.


The FreeBSD bhyve port is a free virtualisation solution that can run desktop-style operating systems such as BSD, Haiku, Linux, OS/2, Solaris and Windows. A decent experience requires a modern processor (with SSE3 or better) with adequate RAM and hard disk space – for example, running a single desktop-style guest OS may require 256-384MB of RAM and 6+GB of space.

When installing the VM, make sure to choose “Bridged Networking”. This allows the VM to take a packet off the real NIC, read it and put its own reply back on the Ethernet network at the same layer as it was received from the Host.

The VM will ask for a virtual optical disc file – navigate to the file and click “Start”. After the installation is complete, the system will automatically reboot. When the reboot is finished, a window will appear with options to set up keyboard mapping. Choose standard mapping or your own to proceed.


During the installation process you will be asked to create an administrator user. Do so. You will also get lots of popups with important tips – read them.

Once this is done, you can start the VM and install your chosen OS. When you are finished you should be able to boot up the VM from the VMM GUI and run it just as you would any other OS.

One thing to note is that bhyve on FreeBSD doesn’t have VRDE support (on the virtualbox-ose side) so you can’t access the console unless you use a vnc client on a defined port. This is a little annoying and will probably be fixed in the future.

Another thing to note is that bhyve doesn’t allow for bridge mode over the em0 interface like it does with Xen or KVM. This will likely change in the future, but for now you’ll need to manually alias the VM’s nic to an IP on the Host server.


If you run a VMware virtual machine, the Guest Additions suite can provide useful features such as mouse pointer integration (allowing you to move the mouse between host and guest without using a special key combination) and faster video rendering in Windows guests. To install the Guest Additions, go to the Oracle VM VirtualBox download page and click the download link for your operating system.

In the VirtualBox application, click the Storage section in the lower right corner of the window. In the IDE Secondary Device 0 line, you should see two options: one is a new hard disk that VirtualBox created for the system and has a square blue hard drive icon, and the other is your FreeBSD download that has a light blue disk icon.

To resolve this problem, you must remove the old hard disk from your virtual machine by clicking the IDE Secondary Device 0 menu in the VirtualBox application and selecting “Remove Disc”. Then you can create a new hard disk for your VM and use the new disk.

Return to the home screen

Read More

How to Find Process Listening on Port in FreeBSD

There are several ways to find out which process is listening on a port in FreeBSD. One way is to use the netstat command. This utility displays network connections, routing tables, interface statistics, masquerade connections and multicast memberships.

Another tool is sockstat. This tool is useful because it lists open sockets based on the protocol version, state, and the command that opens the socket. It also shows the PID and file descriptor of the program that holds the socket.


The ps command displays information about the processes running on your system. It provides a variety of information, including the process PID, the user name, the command line, and the memory and swap usage. It also shows the ‘wired count’, which shows how many bytes are wired down and cannot be swapped out. It also shows the ‘waitchan’, which explains what the process is waiting for.

ps can also be used to find open ports on your system. This can help you identify services that are not being properly closed and may be vulnerable to attack. The first line of ps output lists basic system information, such as the number of currently active processes and their total load averages. It also lists the memory and swap size in kilobytes. It can also show if the system is rebooting and how long it will take to finish. In addition, it can display the kern.reboot_wait_time sysctl setting, which specifies the amount of time that the kernel will wait before rebooting.


grep is a command-line utility that searches plain-text data sets for lines matching a regular expression. It was originally developed for the Unix operating system, but is now available on all Unix-like systems and OS-9. grep has a large set of options that affect how it works, including some that are specific to the UNIX operating system and others that are GNU extensions.

Several environment variables influence grep’s behavior, such as the LC_CTYPE category, which determines what characters are considered whitespace and what character encoding to use. These variables can also control whether grep uses line buffering or not.

grep can also stop after outputting a specified number of non-matching lines. The -c option specifies how many non-matching lines to output, and the -v option specifies which fields to print on each outputting line (file name, line number and byte offset). If a context line is matched, grep only prints the empty part of the line.


The tcpdump program is one of the most useful tools in the security industry, as it can capture traffic from network interfaces and display it in an easy-to-read format. This can be used to detect insecure protocols and identify leaked credentials, such as passwords or usernames. The tcpdump program has many options, or flags, that can be used to alter the behavior of the program.

Some tcpdump flags let you select packets by filter expressions, which are useful in examining specific types of traffic. You can also configure the snaplength and rotate intervals, and control the output format. For example, you can specify -w if you want tcpdump to write the captured packets in a file instead of printing them on the screen.

tcpdump can create an overwhelming amount of data, and it may take some time to learn how to interpret its results. This is why it’s important to limit the number of packets you capture, if possible.


The lsof command lists information about open files on the system. An open file can be a regular file, directory, Unix socket, network file or device. It can also be a character special file, an executing text reference or a kernel shared library.

The command works by listing the information of all processes with a specific file open. You can see the process ID, name and other information of the process by using -p and -name options. The command is extremely powerful and you can find many other useful options by looking at the man page of the command.

The -r option puts the command in repeat mode, re-running it every few seconds (a loop). It can be used to monitor an activity that will only last for a short time. The +r option will automatically terminate the command when it runs out of new output to print. This option avoids kernel functions that might block – see the BLOCKS AND TIMEOUTS and AVOIDING KERNEL BLOCKS sections of the man page for details.

Dive in to know more

Read More

The Ports System on FreeBSD

The ports system is a large collection of cooperating processes. It is quite impressive that it manages to produce up to date packages on hardware with limited resources.

Often it is not easy to grasp the complexity of the ports system. This article will try to simplify this complexity for the reader.


Makefiles contain a set of rules that, when run, perform all the steps required to build or modify a port. They are the basis for incremental INDEX builds and many other features of porting.

Each line of a makefile begins with a rule for the target file named in the first column, then lists the prerequisites for that target. If a prerequisite has been modified, make must recompile the corresponding source file.

A makefile may also declare CONFLICTS between ports. When conflicts are encountered, make will not execute the recipes in any target. This can simplify the maintenance of a system, although it introduces complexity into parsing names (e.g. gimp becomes emacs-nox or py24-tkinter). It also requires careful consideration of dependencies and architectures.


Options can be set for individual ports, and for ports in a jail and/or ports tree. These affect how a port is built. For example, setting WITHOUT_GNOME in a port’s Makefile will cause it to exclude Gnome support from the final package, even if gnome is present as a precompiled package or as a dependency.

This is a very valuable feature that can be used to minimize the distance between the state of ports in the ports system and the binary packages released as part of the freebsd distribution. Such a setup will not be as stable as relying on the INDEX for packages, but it will be much less fragile than a ports system that depends on recursive subshells to follow MOVED files and recompute dependencies.


A port’s config file contains its packing list, a list of the files that will be installed when the package is created. These files are sorted alphabetically for convenience and to make it easy for make to determine which version of each file to install.

The system will recursively walk its dependency tree and fetch, extract and patch the source code, configure it and build (compile) it. It will then create a fake directory to install the files into, and finally, it will call pkg_add(1) to actually make the package.

The whole process takes 0.1 to 1s, depending on the complexity of the port and your computer. All the while, you can check progress in a nice curses-based text UI provided by Synth. You can also see which ports have failed to build, and the reason why.


One problem in a ports system which is constantly evolving is that a port may acquire wildly different dependencies from time to time depending on the way it was built. For example a port may have been built with autodetection features which add support for features if they are present on the machine. Thus gimp may become gimp-gnome without user intervention.

Luckily there are tools which can help in this situation. The most well known is probably Portmaster, introduced recently by Doug Barton. Another is Synth, a nice curses based program. Synth can be used to manage ports, checking whether or not a given package needs upgrading. It can also be used to install packages and even back them up. It does all this while watching over the build process. If it looks like the build is going nowhere a watchdog feature will kill it and restart it from scratch.


The collection of makefiles, patches, and distinfo files needed to build and install a unique application under FreeBSD is known as a port. Ports are kept under /usr/ports by default.

A port is numbered according to its FreeBSD version, e.g. editors/joe editors/emacs, or more tersely, its pkg_version number (determined by uname -r). The FreeBSD ports system has utilities which manage objects and data under /usr/db/pkg that are not in the base system, such as pkg_add, pkg_create, pkg_delete, pkg_version, etc.

These tools interact with pkg and pkg_repo in a fairly complex manner, making use of conditionals and string substitution operators to varying degrees. The result is a system which is very powerful and intricate, but not without its pitfalls and complexities. A quick glance at a make man page illustrates this complexity.

Circle back to the home page

Read More

The FreeBSD Ports Collection

The freebsd ports collection uses a set of makefiles that automate the download, extraction, patching, compilation and installation of software applications. This is how the system provides binary backward compatibility between major releases.

The pkg package management tool tracks quarterly branch-releases of the ports tree but not HEAD. This can cause dependencies between the port tree and pkg to be inconsistent.

How to install

Generally speaking, a port is a set of Makefiles, patches, and description files used to compile software applications for the FreeBSD operating system. The actual application being compiled is called the target. The ports system allows users to install a large number of third party applications.

Ports are maintained in a hierarchy under the /usr/ports/ tree. There are several ways to obtain the ports collection if it was not installed during the initial setup of FreeBSD. The recommended method is to use Portsnap, which connects to a secure FreeBSD site and retrieves a copy of the ports collection.

Once the ports have been installed, the ports system can be used to install and update them. Before doing this, it is a good idea to read /usr/ports/UPDATING. This file describes various issues and additional steps users may encounter when upgrading ports, such as possible changes to file formats or the location of configuration files. In addition, it discusses how the ports system updates dependencies.

How to update

The Ports Collection is a collection of Makefiles, patches and description files needed to build and install a unique piece of software on FreeBSD. These are kept under a subdirectory of /usr/ports by default.

The resulting binary programs (and libraries) are usually installed by the pkg utility. Using the Ports Collection in combination with pkg may lead to conflicts between dependencies installed by pkg and those downloaded from the ports tree. Therefore it is typically not recommended to use the Ports Collection and pkg together.

Keeping up to date with the Ports Collection is done with the freebsd-update command. A basic setup of the update tool will download a compressed snapshot of the ports tree from a remote location and extract it into /usr/ports.

A configuration option can be set to leave specified directories, such as /usr/bin or /sbin, untouched during the updating process. This is useful for preventing freebsd-update from overwriting local changes with those from the snapshot.

How to remove

A port’s source code does not include the actual software program (otherwise known as a distfile) itself. Instead it contains instructions on how to build the program, along with other information about the port like build options, configure flags etc. The distfile can be a tarred or gzipped file or a directory. The ports system manages this information in a few different ways and is described in detail in the FreeBSD Porter’s Handbook.

The command pkg_delete(8) removes installed ports that are no longer needed. It is interactive by default and asks the user to confirm before deleting any distfile. There is also a more automated tool called ports-mgmt/pkg_cutleaves.

Portupgrade discovers stale dependencies, that is a dependency cycle that has broken because the original port has disappeared (like portindex) or changed its origin in the ports tree. It then reassociates the dependencies to the correct new location by checking a MOVED file. This can be a very time consuming operation.

How to configure

The FreeBSD ports system offers two complementary technologies for installing third party software: the Ports Collection, for installing applications from source code, and packages, which provide pre-compiled binaries. Each has advantages and disadvantages depending on the software installation requirements of a given system.

The Ports Collection consists of Makefiles, patches and description files that automate the process of downloading, extracting, patching, building, and installing an application/software program on FreeBSD. The collection is kept under a subdirectory of the /usr/ports directory and is referred to as a port.

The ports system provides a way to quickly search for a specific application and to keep track of changes made to a particular port. In addition to a centralized search tool available through the ports web site Dan Langille maintains FreshPorts, a free and open source utility that tracks the latest ports changes. In order to use this tool you need to have a copy of the ports CVSup file, which is located in /usr/share/examples/cvsup/ports-supfile.

Head back to the root page

Read More